diff --git a/.gitignore b/.gitignore deleted file mode 100644 index fd4933e..0000000 --- a/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -*.py[cod] -*~ -# C extensions -*.so - -# Packages -*.egg -*.egg-info - -__pycache__ diff --git a/COPYING b/COPYING deleted file mode 100644 index ef6c109..0000000 --- a/COPYING +++ /dev/null @@ -1,14 +0,0 @@ -"The New BSD License" - -Copyright (c) 2013, Amirouche Boubekki and Brett Hartshorn -All rights reserved. - -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. - -Neither the name of the Amirouche Boubekki or Brett Hartshorn nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -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 THE COPYRIGHT HOLDER OR CONTRIBUTORS 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. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index db3e43f..0000000 --- a/README.md +++ /dev/null @@ -1,408 +0,0 @@ -Introduction ------------- -PythonJS is a transpiler written in Python that converts a python like language into fast -JavaScript. It also includes experimental backends that translate to: Dart, Lua, CoffeeScript, and Go. - -[Syntax Documentation](https://github.com/PythonJS/PythonJS/blob/master/doc/syntax.md) - - -Go backend ----------- -The Go backend uses a fully typed subset of Python, mixed with extra syntax inspired by Golang to output Go programs that can be compiled to native executeables, or translated to JavaScript using GopherJS. - -[Syntax Documentation](https://github.com/PythonJS/PythonJS/blob/master/doc/go_syntax.md) - - -Getting Started -=============== -PythonJS can be run with regular Python, or fully self-hosted within -NodeJS using Empythoned. - -To get started, you have two options: -1. install NodeJS, python-js package, and write a build script. -2. or install Python2 and use translator.py from this repo directly. - - -1. Installing NodeJS Package -------------- -You can quickly get started with the stable version of PythonJS by installing the NodeJS package, -and writing a build script in javascript to compile your python scripts to javascript. -(Python2.7 is not required) - -``` -npm install python-js -``` - -NodeJS Quick Example --------------- - -``` -var pythonjs = require('python-js'); -var pycode = "a = []; a.append('hello'); a.append('world'); print(a)"; -var jscode = pythonjs.translator.to_javascript( pycode ); -eval( pythonjs.runtime.javascript + jscode ); - -``` - - -Example Projects ----------------- -The example projects below, require the NodeJS python-js package. - -[https://github.com/PythonJS/pythonjs-demo-server-nodejs](https://github.com/PythonJS/pythonjs-demo-server-nodejs) - -[https://github.com/PythonJS/pypubjs](https://github.com/PythonJS/pypubjs) - - - -2. translator.py --------------------------------------- -If you want to run the latest version of the translator, you will need to install -Python2.7 and git clone this repo. (the NodeJS package above is not required) -Then, to translate your python script, directly run the `translator.py` script in the "pythonjs" directory. You can give it a list of python files to translate at once. -It will output the translation to stdout. The default output type is JavaScript. -An html file can also be used as input, python code inside a script tag: ` + + + + + + + + + +
+ +
+
+

PythonJS

+

Python to JavaScript Translator

+
+ Project maintained by PythonJS + Hosted on GitHub Pages — Theme by mattgraham +
+ +

PythonJS

+ +

alt text

+ +

+Introduction

+ +

PythonJS is a Python to Javascript translator written in Python, created by Amirouche Boubekki and Brett Hartshorn. It converts a subset of Python into a subset of Javascript. It features: list comprehensions, classes, multiple inheritance, first-class functions, operator overloading, function and class decorators, HTML DOM, and easily integrates with JavaScript and external JavaScript libraries. The generated code works in the Browser and in NodeJS.

+ +

+Getting Started

+ +

Get Source Code::

+ +
git clone https://github.com/PythonJS/PythonJS.git
+
+ +

Translate Your Script::

+ +
cd PythonJS/pythonjs
+./translator.py myscript1.py myscript2.py > ~/myapp.js
+
+ +

The translator.py script can take in multiple Python scripts, these are appended together, and translated into a single JavaScript. The output is printed to stdout. If no command line arguments is given, then translator.py takes input from stdin.

+ +

+Test Server (server.py)

+ +

Install Tornado for Python3::

+ +
wget https://pypi.python.org/packages/source/t/tornado/tornado-3.1.1.tar.gz
+tar xvf tornado-3.1.1.tar.gz
+cd tornado-3.1.1
+python3 setup.py build
+sudo python3 setup.py install
+
+ +

Run Test Server::

+ +
cd PythonJS/tests
+./server.py
+
+ +

Then open a web browser and go to: http://localhost:8080

+ +

The test server dynamically compiles Python into JavaScript, this greatly speeds up the testing and development process. Any html file you place in the PythonJS/tests directory will become available as a new web-page. When this web-page is requested the server will parse the html and check all the

+
+ +
+ + + + \ No newline at end of file diff --git a/javascripts/respond.js b/javascripts/respond.js new file mode 100644 index 0000000..76bc260 --- /dev/null +++ b/javascripts/respond.js @@ -0,0 +1,779 @@ +if(typeof Object.create!=="function"){ +Object.create=function(o){ +function F(){ +}; +F.prototype=o; +return new F(); +}; +} +var ua={toString:function(){ +return navigator.userAgent; +},test:function(s){ +return this.toString().toLowerCase().indexOf(s.toLowerCase())>-1; +}}; +ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1]; +ua.webkit=ua.test("webkit"); +ua.gecko=ua.test("gecko")&&!ua.webkit; +ua.opera=ua.test("opera"); +ua.ie=ua.test("msie")&&!ua.opera; +ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined"; +ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined"; +ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined"; +var domReady=function(){ +var _1=[]; +var _2=function(){ +if(!arguments.callee.done){ +arguments.callee.done=true; +for(var i=0;i<_1.length;i++){ +_1[i](); +} +} +}; +if(document.addEventListener){ +document.addEventListener("DOMContentLoaded",_2,false); +} +if(ua.ie){ +(function(){ +try{ +document.documentElement.doScroll("left"); +} +catch(e){ +setTimeout(arguments.callee,50); +return; +} +_2(); +})(); +document.onreadystatechange=function(){ +if(document.readyState==="complete"){ +document.onreadystatechange=null; +_2(); +} +}; +} +if(ua.webkit&&document.readyState){ +(function(){ +if(document.readyState!=="loading"){ +_2(); +}else{ +setTimeout(arguments.callee,10); +} +})(); +} +window.onload=_2; +return function(fn){ +if(typeof fn==="function"){ +_1[_1.length]=fn; +} +return fn; +}; +}(); +var cssHelper=function(){ +var _3={BLOCKS:/[^\s{][^{]*\{(?:[^{}]*\{[^{}]*\}[^{}]*|[^{}]*)*\}/g,BLOCKS_INSIDE:/[^\s{][^{]*\{[^{}]*\}/g,DECLARATIONS:/[a-zA-Z\-]+[^;]*:[^;]+;/g,RELATIVE_URLS:/url\(['"]?([^\/\)'"][^:\)'"]+)['"]?\)/g,REDUNDANT_COMPONENTS:/(?:\/\*([^*\\\\]|\*(?!\/))+\*\/|@import[^;]+;)/g,REDUNDANT_WHITESPACE:/\s*(,|:|;|\{|\})\s*/g,MORE_WHITESPACE:/\s{2,}/g,FINAL_SEMICOLONS:/;\}/g,NOT_WHITESPACE:/\S+/g}; +var _4,_5=false; +var _6=[]; +var _7=function(fn){ +if(typeof fn==="function"){ +_6[_6.length]=fn; +} +}; +var _8=function(){ +for(var i=0;i<_6.length;i++){ +_6[i](_4); +} +}; +var _9={}; +var _a=function(n,v){ +if(_9[n]){ +var _b=_9[n].listeners; +if(_b){ +for(var i=0;i<_b.length;i++){ +_b[i](v); +} +} +} +}; +var _c=function(_d,_e,_f){ +if(ua.ie&&!window.XMLHttpRequest){ +window.XMLHttpRequest=function(){ +return new ActiveXObject("Microsoft.XMLHTTP"); +}; +} +if(!XMLHttpRequest){ +return ""; +} +var r=new XMLHttpRequest(); +try{ +r.open("get",_d,true); +r.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest"); +} +catch(e){ +_f(); +return; +} +var _10=false; +setTimeout(function(){ +_10=true; +},5000); +document.documentElement.style.cursor="progress"; +r.onreadystatechange=function(){ +if(r.readyState===4&&!_10){ +if(!r.status&&location.protocol==="file:"||(r.status>=200&&r.status<300)||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){ +_e(r.responseText); +}else{ +_f(); +} +document.documentElement.style.cursor=""; +r=null; +} +}; +r.send(""); +}; +var _11=function(_12){ +_12=_12.replace(_3.REDUNDANT_COMPONENTS,""); +_12=_12.replace(_3.REDUNDANT_WHITESPACE,"$1"); +_12=_12.replace(_3.MORE_WHITESPACE," "); +_12=_12.replace(_3.FINAL_SEMICOLONS,"}"); +return _12; +}; +var _13={mediaQueryList:function(s){ +var o={}; +var idx=s.indexOf("{"); +var lt=s.substring(0,idx); +s=s.substring(idx+1,s.length-1); +var mqs=[],rs=[]; +var qts=lt.toLowerCase().substring(7).split(","); +for(var i=0;i-1&&_23.href&&_23.href.length!==0&&!_23.disabled){ +_1f[_1f.length]=_23; +} +} +if(_1f.length>0){ +var c=0; +var _24=function(){ +c++; +if(c===_1f.length){ +_20(); +} +}; +var _25=function(_26){ +var _27=_26.href; +_c(_27,function(_28){ +_28=_11(_28).replace(_3.RELATIVE_URLS,"url("+_27.substring(0,_27.lastIndexOf("/"))+"/$1)"); +_26.cssHelperText=_28; +_24(); +},_24); +}; +for(i=0;i<_1f.length;i++){ +_25(_1f[i]); +} +}else{ +_20(); +} +}; +var _29={mediaQueryLists:"array",rules:"array",selectors:"object",declarations:"array",properties:"object"}; +var _2a={mediaQueryLists:null,rules:null,selectors:null,declarations:null,properties:null}; +var _2b=function(_2c,v){ +if(_2a[_2c]!==null){ +if(_29[_2c]==="array"){ +return (_2a[_2c]=_2a[_2c].concat(v)); +}else{ +var c=_2a[_2c]; +for(var n in v){ +if(v.hasOwnProperty(n)){ +if(!c[n]){ +c[n]=v[n]; +}else{ +c[n]=c[n].concat(v[n]); +} +} +} +return c; +} +} +}; +var _2d=function(_2e){ +_2a[_2e]=(_29[_2e]==="array")?[]:{}; +for(var i=0;i<_4.length;i++){ +_2b(_2e,_4[i].cssHelperParsed[_2e]); +} +return _2a[_2e]; +}; +domReady(function(){ +var els=document.body.getElementsByTagName("*"); +for(var i=0;i=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44)); +}else{ +return false; +} +}else{ +return _46>0; +} +}else{ +if("device-height"===_41.substring(l-13,l)){ +_47=screen.height; +if(_42!==null){ +if(_43==="length"){ +return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44)); +}else{ +return false; +} +}else{ +return _47>0; +} +}else{ +if("width"===_41.substring(l-5,l)){ +_46=document.documentElement.clientWidth||document.body.clientWidth; +if(_42!==null){ +if(_43==="length"){ +return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44)); +}else{ +return false; +} +}else{ +return _46>0; +} +}else{ +if("height"===_41.substring(l-6,l)){ +_47=document.documentElement.clientHeight||document.body.clientHeight; +if(_42!==null){ +if(_43==="length"){ +return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44)); +}else{ +return false; +} +}else{ +return _47>0; +} +}else{ +if("device-aspect-ratio"===_41.substring(l-19,l)){ +return _43==="aspect-ratio"&&screen.width*_44[1]===screen.height*_44[0]; +}else{ +if("color-index"===_41.substring(l-11,l)){ +var _48=Math.pow(2,screen.colorDepth); +if(_42!==null){ +if(_43==="absolute"){ +return ((min&&_48>=_44)||(max&&_48<_44)||(!min&&!max&&_48===_44)); +}else{ +return false; +} +}else{ +return _48>0; +} +}else{ +if("color"===_41.substring(l-5,l)){ +var _49=screen.colorDepth; +if(_42!==null){ +if(_43==="absolute"){ +return ((min&&_49>=_44)||(max&&_49<_44)||(!min&&!max&&_49===_44)); +}else{ +return false; +} +}else{ +return _49>0; +} +}else{ +if("resolution"===_41.substring(l-10,l)){ +var res; +if(_45==="dpcm"){ +res=_3d("1cm"); +}else{ +res=_3d("1in"); +} +if(_42!==null){ +if(_43==="resolution"){ +return ((min&&res>=_44)||(max&&res<_44)||(!min&&!max&&res===_44)); +}else{ +return false; +} +}else{ +return res>0; +} +}else{ +return false; +} +} +} +} +} +} +} +} +}; +var _4a=function(mq){ +var _4b=mq.getValid(); +var _4c=mq.getExpressions(); +var l=_4c.length; +if(l>0){ +for(var i=0;i0){ +s[c++]=","; +} +s[c++]=n; +} +} +if(s.length>0){ +_39[_39.length]=cssHelper.addStyle("@media "+s.join("")+"{"+mql.getCssText()+"}",false); +} +}; +var _4e=function(_4f){ +for(var i=0;i<_4f.length;i++){ +_4d(_4f[i]); +} +if(ua.ie){ +document.documentElement.style.display="block"; +setTimeout(function(){ +document.documentElement.style.display=""; +},0); +setTimeout(function(){ +cssHelper.broadcast("cssMediaQueriesTested"); +},100); +}else{ +cssHelper.broadcast("cssMediaQueriesTested"); +} +}; +var _50=function(){ +for(var i=0;i<_39.length;i++){ +cssHelper.removeStyle(_39[i]); +} +_39=[]; +cssHelper.mediaQueryLists(_4e); +}; +var _51=0; +var _52=function(){ +var _53=cssHelper.getViewportWidth(); +var _54=cssHelper.getViewportHeight(); +if(ua.ie){ +var el=document.createElement("div"); +el.style.position="absolute"; +el.style.top="-9999em"; +el.style.overflow="scroll"; +document.body.appendChild(el); +_51=el.offsetWidth-el.clientWidth; +document.body.removeChild(el); +} +var _55; +var _56=function(){ +var vpw=cssHelper.getViewportWidth(); +var vph=cssHelper.getViewportHeight(); +if(Math.abs(vpw-_53)>_51||Math.abs(vph-_54)>_51){ +_53=vpw; +_54=vph; +clearTimeout(_55); +_55=setTimeout(function(){ +if(!_3a()){ +_50(); +}else{ +cssHelper.broadcast("cssMediaQueriesTested"); +} +},500); +} +}; +window.onresize=function(){ +var x=window.onresize||function(){ +}; +return function(){ +x(); +_56(); +}; +}(); +}; +var _57=document.documentElement; +_57.style.marginLeft="-32767px"; +setTimeout(function(){ +_57.style.marginTop=""; +},20000); +return function(){ +if(!_3a()){ +cssHelper.addListener("newStyleParsed",function(el){ +_4e(el.cssHelperParsed.mediaQueryLists); +}); +cssHelper.addListener("cssMediaQueriesTested",function(){ +if(ua.ie){ +_57.style.width="1px"; +} +setTimeout(function(){ +_57.style.width=""; +_57.style.marginLeft=""; +},0); +cssHelper.removeListener("cssMediaQueriesTested",arguments.callee); +}); +_3c(); +_50(); +}else{ +_57.style.marginLeft=""; +} +_52(); +}; +}()); +try{ +document.execCommand("BackgroundImageCache",false,true); +} +catch(e){ +} + diff --git a/params.json b/params.json new file mode 100644 index 0000000..f0cd9ec --- /dev/null +++ b/params.json @@ -0,0 +1 @@ +{"name":"PythonJS","tagline":"Python to JavaScript Translator","body":"PythonJS\r\n############\r\n\r\n![alt text](http://4.bp.blogspot.com/-24HxG7miZnE/UoHEmzmAByI/AAAAAAAAAgM/C_NwyODm5gY/s400/pythonjs-nodejs-0.8.4.png \"PythonJS\")\r\n\r\n\r\nIntroduction\r\n======\r\n\r\nPythonJS is a Python to Javascript translator written in Python, created by Amirouche Boubekki and Brett Hartshorn. It converts a subset of Python into a subset of Javascript. It features: list comprehensions, classes, multiple inheritance, first-class functions, operator overloading, function and class decorators, HTML DOM, and easily integrates with JavaScript and external JavaScript libraries. The generated code works in the Browser and in NodeJS.\r\n\r\n---------------\r\n\r\nGetting Started\r\n---------------\r\n\r\nGet Source Code::\r\n\r\n\tgit clone https://github.com/PythonJS/PythonJS.git\r\n\r\nTranslate Your Script::\r\n\r\n\tcd PythonJS/pythonjs\r\n\t./translator.py myscript1.py myscript2.py > ~/myapp.js\r\n\r\nThe translator.py script can take in multiple Python scripts, these are appended together, and translated into a single JavaScript. The output is printed to stdout. If no command line arguments is given, then translator.py takes input from stdin.\r\n\r\n\r\nTest Server (server.py)\r\n========\r\n\r\nInstall Tornado for Python3::\r\n\r\n\twget https://pypi.python.org/packages/source/t/tornado/tornado-3.1.1.tar.gz\r\n\ttar xvf tornado-3.1.1.tar.gz\r\n\tcd tornado-3.1.1\r\n\tpython3 setup.py build\r\n\tsudo python3 setup.py install\r\n\r\nRun Test Server::\r\n\r\n\tcd PythonJS/tests\r\n\t./server.py\r\n\r\nThen open a web browser and go to: http://localhost:8080\r\n\r\nThe test server dynamically compiles Python into JavaScript, this greatly speeds up the testing and development process. Any html file you place in the PythonJS/tests directory will become available as a new web-page. When this web-page is requested the server will parse the html and check all the \r\n\t\r\n\r\nThe server knows that the above script needs to be dynamically compiled to JavaScript because the script is located in the \"bindings\" directory and the file name ends with \".py\"\r\n\r\nEmbedded Python Scripts::\r\n\r\n\t\r\n\t\r\n\t\r\n\r\nThe server knows that above is an embedded Python script because the script tag has its type attribute set to \"text/python\". The server will compile and replace the Python code with JavaScript, change the type attribute to be \"text/javascript\", and serve the page to the client.\r\n\r\nThe syntax \"from three import *\" tells the compiler to load static type information about the previously compiled binding \"three.py\" into the compilers namespace, this is required because three.py uses operator overloading to wrap the THREE.js API. PythonJS programs are explicitly and implicitly statically typed to allow for operator overloading and optimizations.\r\n\r\n---------------\r\n\r\nDirectly Calling JavaScript Functions\r\n---------------\r\n\r\nHTML DOM Example::\r\n\r\n\t\r\n\t\r\n\r\n\t\r\n\r\n\t\r\n\r\n\t\r\n\r\n\t\r\n\t\r\n\r\nNumbers and strings can be passed directly to JavaScript functions. Simple callbacks that do not take any arguments can also be passed as an argument to a JavaScript function, like window.setInterval. PythonJS allows you to call any JavaScript function directly by wrapping it at runtime. Attributes of JavaScript objects are also returned directly, like document.body. This allows you to use the HTML DOM API just as you would in normal JavaScript.\r\n\r\n---------------\r\n\r\nInline JavaScript\r\n---------------\r\n\r\nThere are times that JavaScript needs to be directly inlined into PythonJS code, this is done with the special 'JS([str])' function that takes a string literal as its only argument. The compiler will insert the string directly into the final output JavaScript.\r\n\r\nJS Example::\r\n\r\n\tJS(\"var arr = new Array()\")\r\n\tJS(\"var ob = new Object()\")\r\n\tJS(\"ob['key'] = 'value'\")\r\n\tif JS(\"Object.prototype.toString.call( arr ) === '[object Array]'\"):\r\n\t\tJS(\"arr.push('hello world')\")\r\n\t\tJS(\"arr.push( ob )\")\r\n\r\nIn the example above we create a new JavaScript Array. The if statement is still Python syntax, but its condition is allowed to be inlined JavaScript. As the compiler becomes smarter and the PythonJS low-level API develops, there will be less need to write inline JavaScript in the above style. Lets take a look at two alternative ways this can be rewritten.\r\n\r\n1. JSArray, JSObject, and instanceof::\r\n\r\n\tarr = JSArray()\r\n\tob = JSObject()\r\n\tif instanceof(arr, Array):\r\n\t\tarr.push('hello world')\r\n\t\tarr.push( ob )\r\n\r\nThe special function JSArray will create a new JavaScript Array object, and JSObject creates a new JavaScript Object. The 'instanceof' function will be translated into using the 'instanceof' JavaScript operator. At the end, arr.push is called without wrapping it in JS(), this is allowed because from PythonJS, we can directly call JavaScript functions by dynamically wrapping it at runtime.\r\n\r\nThis code is more clear than before, but the downside is that the calls to arr.push will be slower because it gets wrapped at runtime. To have fast and clear code we need to use the final method below, 'with javascript'\r\n\r\n2. with javascript::\r\n\r\n\twith javascript:\r\n\t\tarr = []\r\n\t\tob = {}\r\n\t\tif instanceof(arr, Array):\r\n\t\t\tarr.push('hello world')\r\n\t\t\tarr.push( ob )\r\n\r\nThe \"with javascript:\" statement can be used to mark a block of code as being direct JavaScript. The compiler will basically wrap each line it can in JS() calls. The calls to arr.push will be fast because there is no longer any runtime wrapping. Instead of using JSArray and JSObject you just use the literal notation to create them.\r\n\r\n---------------\r\n\r\nCalling PythonJS Functions from JavaScript\r\n------------------------------\r\n\r\nPythonJS functions can be used as callbacks in Javascript code, there are no special calling conventions that you need to worry about. Simply define a function in PythonJS and call it from JavaScript. Note that if your PythonJS function uses keyword arguments, you can use them as a normal positional arguments.\r\n\r\nExample::\r\n\r\n\t# PythonJS\r\n\tdef my_pyfunction( a,b,c, optional='some default'):\r\n\t\tprint a,b,c, optional\r\n\r\n\t// javascript\r\n\tmy_pyfunction( 1,2,3, 'my kwarg' );\r\n\r\n\r\n---------------\r\n\r\nCalling PythonJS Methods from JavaScript\r\n------------------------------\r\n\r\nCalling PythonJS methods is also simple, you just need to create an instance of the class in PythonJS and then pass the method to a JavaScript function, or assign it to a new variable that the JavaScript code will use. PythonJS takes care of wrapping the method for you so that \"self\" is bound to the method, and is callable from JavaScript.\r\n\r\nExample::\r\n\r\n\t// javascript\r\n\tfunction js_call_method( method_callback ) {\r\n\t\tmethod_callback( 1,2,3 )\r\n\t}\r\n\r\n\t# PythonJS\r\n\tclass A:\r\n\t\tdef my_method(self, a,b,c):\r\n\t\t\tprint self, a,b,c\r\n\t\t\tself.a = a\r\n\t\t\tself.b = b\r\n\t\t\tself.c = c\r\n\r\n\ta = A()\r\n\tjs_call_method( a.my_method )\r\n\r\n\r\n---------------\r\n\r\nPassing PythonJS Instances to JavaScript\r\n------------------------------\r\n\r\nIf you are doing something complex like deep integration with an external JavaScript library, the above technique of passing each method callback to JavaScript might become inefficient. If you want to pass the PythonJS instance itself and have its methods callable from JavaScript, you can do this now simply by passing the instance. This only works for normal methods, not with property getter/setters.\r\n\r\nExample::\r\n\r\n\t// javascript\r\n\tfunction js_function( pyob ) {\r\n\t\tpyob.foo( 1,2,3 )\r\n\t\tpyob.bar( 4,5,6 )\r\n\t}\r\n\r\n\t# PythonJS\r\n\tclass A:\r\n\t\tdef foo(self, a,b,c):\r\n\t\t\tprint a+b+c\r\n\t\tdef bar(self, a,b,c):\r\n\t\t\tprint a*b*c\r\n\r\n\ta = A()\r\n\tjs_function( a )\r\n\r\n\r\n---------------\r\n\r\nDefine JavaScript Prototypes from PythonJS\r\n------------------------------\r\n\r\nIf you are going beyond simple integration with an external JavaScript library, and perhaps want to change the way it works on a deeper level, you can modify JavaScript prototypes from PythonJS using some special syntax.\r\n\r\nExample::\r\n\r\n\twith javascript:\r\n\r\n\t\t@String.prototype.upper\r\n\t\tdef func():\r\n\t\t\treturn this.toUpperCase()\r\n\r\n\t\t@String.prototype.lower\r\n\t\tdef func():\r\n\t\t\treturn this.toLowerCase()\r\n\r\n\t\t@String.prototype.index\r\n\t\tdef func(a):\r\n\t\t\treturn this.indexOf(a)\r\n\r\nThe above example shows how we modify the String type in JavaScript to act more like a Python string type. The functions must be defined inside a \"with javascript:\" block, and the decorator format is: `[class name].prototype.[function name]`\r\n\r\n\r\n---------------\r\n\r\nMaking PythonJS Wrappers for JavaScript Libraries\r\n------------------------------\r\n\r\nThe above techniques provide all the tools you will need to interact with JavaScript code, and easily write wrapper code in PythonJS. The last tool you will need, is a standard way of creating JavaScript objects, storing a reference to the instance, and later passing the instance to wrapped JavaScript function. In JavaScript objects are created with the `new` keyword, in PythonJS you can use the `new()` function instead. To store an instance created by `new()`, you should assign it to `self` like this: `self[...] = new( SomeJavaScriptClass() )`. \r\n\r\nIf you have never seen `...` syntax in Python it is the rarely used Ellipsis syntax, we have hijacked it in PythonJS as a special case to assign something to a hidden attribute. The builtin types: tuple, list, dict, etc, are wrappers that internally use JavaScript Arrays or Objects, to get to these internal objects you use the Ellipsis syntax. The following example shows how the THREE.js binding wraps the Vector3 object and combines operator overloading.\r\n\r\nExample::\r\n\r\n\tclass Vector3:\r\n\t\tdef __init__(self, x=0, y=0, z=0, object=None ):\r\n\t\t\tif object:\r\n\t\t\t\tself[...] = object\r\n\t\t\telse:\r\n\t\t\t\twith javascript:\r\n\t\t\t\t\tself[...] = new(THREE.Vector3(x,y,z))\r\n\r\n\t\t@property\r\n\t\tdef x(self):\r\n\t\t\twith javascript: return self[...].x\r\n\t\t@x.setter\r\n\t\tdef x(self, value):\r\n\t\t\twith javascript: self[...].x = value\r\n\r\n\t\t@property\r\n\t\tdef y(self):\r\n\t\t\twith javascript: return self[...].y\r\n\t\t@y.setter\r\n\t\tdef y(self, value):\r\n\t\t\twith javascript: self[...].y = value\r\n\r\n\t\t@property\r\n\t\tdef z(self):\r\n\t\t\twith javascript: return self[...].z\r\n\t\t@z.setter\r\n\t\tdef z(self, value):\r\n\t\t\twith javascript: self[...].z = value\r\n\r\n\t\tdef set(self, x,y,z):\r\n\t\t\tself[...].set(x,y,z)\r\n\r\n\t\tdef add(self, other):\r\n\t\t\tassert isinstance(other, Vector3)\r\n\t\t\tself.set( self.x+other.x, self.y+other.y, self.z+other.z )\r\n\t\t\treturn self\r\n\r\n\t\tdef addScalar(self, s):\r\n\t\t\tself.set( self.x+s, self.y+s, self.z+s )\r\n\t\t\treturn self\r\n\r\n\t\tdef __add__(self, other):\r\n\t\t\tif instanceof(other, Object):\r\n\t\t\t\tassert isinstance(other, Vector3)\r\n\t\t\t\treturn Vector3( self.x+other.x, self.y+other.y, self.z+other.z )\r\n\t\t\telse:\r\n\t\t\t\treturn Vector3( self.x+other, self.y+other, self.z+other )\r\n\r\n\t\tdef __iadd__(self, other):\r\n\t\t\tif instanceof(other, Object):\r\n\t\t\t\tself.add( other )\r\n\t\t\telse:\r\n\t\t\t\tself.addScalar( other )\r\n\r\n\r\n---------------\r\n\r\nOptimized Function Calls\r\n------------------------------\r\n\r\nBy default PythonJS functions have runtime call checking that ensures you have called the function with the required number of arguments, and also checks to see if you had called the function from JavaScript - and if so adapt the arguments. This adds some overhead each time the function is called, and will generally be about 15 times slower than normal Python. When performance is a concern you can decorate functions that need to be fast with @fastdef, or use the `with fastdef:` with statement. Note that functions that do not have arguments are always fast. Using fastdef will make each call to your function 100 times faster, so if you call the same function many times in a loop, it is a good idea to decorate it with @fastdef.\r\n\r\nExample::\r\n\r\n\t@fastdef\r\n\tdef f1( a, b, c ):\r\n\t\treturn a+b+c\r\n\r\n\twith fastdef:\r\n\t\tdef f2( a,b,c, x=1,y=2,z=3):\r\n\t\t\treturn a+b+c+x+y+z\r\n\r\nIf you need to call a fastdef function from JavaScript you will need to call it with arguments packed into an array as the first argument, and keyword args packed into an Object as the second argument.\r\n\r\nExample::\r\n\r\n\t// javascript\r\n\tf2( [1,2,3], {x:100, y:200, z:300} );\r\n\r\nIf you need fast function that is callable from javascript without packing its arguments like above, you can use the @javascript decorator, or nest the function inside a `with javascript:` statement.\r\n\r\nExample::\r\n\r\n\t@javascript\r\n\tdef f( a,b,c, x=1, y=2, z=3 ):\r\n\t\treturn a+b+c+x+y+z\r\n\r\n\t// javascript\r\n\tf( 1,2,3, 100, 200, 300 );\r\n\r\n\r\n\r\n---------------\r\n\r\nNodeJS\r\n------------------------------\r\n\r\nPythonJS can also be used to write server side software using NodeJS. You can use the nodejs.py helper script to translate your python script and run it in NodeJS. This has been tested with NodeJS v0.6.19.\r\n\r\nExample::\r\n\r\n\tcd PythonJS\r\n\t./nodejs.py myscript.py\r\n\r\nThe directory PythonJS/nodejs/bindings contains wrappers for using NodeJS modules. Some of these wrappers emulate parts of Pythons standard library, like: os, sys and io. The example below imports the fake io and sys libraries, and prints the contents of a file passed as the last command line argument to nodejs.py.\r\n\r\nExample::\r\n\r\n\tfrom nodejs.io import *\r\n\tfrom nodejs.sys import *\r\n\r\n\tpath = sys.argv[ len(sys.argv)-1 ]\r\n\tf = open( path, 'rb' )\r\n\tprint f.read()\r\n\r\n------------------------------\r\n\r\n\r\n.. image:: https://d2weczhvl823v0.cloudfront.net/PythonJS/pythonjs/trend.png\r\n :alt: Bitdeli badge\r\n :target: https://bitdeli.com/free\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/pythonjs/README.md b/pythonjs/README.md deleted file mode 100644 index a095513..0000000 --- a/pythonjs/README.md +++ /dev/null @@ -1,31 +0,0 @@ -PythonJS -====== - -PythonJS is a multi-language Python translator. The translator is written in Python and runs inside NodeJS using a hacked and stripped down version of Empythoned. Empythoned is the standard C-Python interpreter compiled to JavaScript using Emscripten. - -PythonJS can be used from the command line or as a library within your own NodeJS program. By default the translator will output JavaScript. You can also use the experimental backends for: Dart, Coffee, Lua and Vis.js. The Vis.js backend turns your code into a graph so you can inspect it visually in a web-browser using the vis.js library. - -####Command Line - - python-js INPUT OUTPUT [--dart, --coffee, --lua, --visjs] - - -####NodeJS Module - - var pythonjs = require('python-js'); - - var code = pythonjs.translator.to_javascript( my_python_code ) // output javascript - eval( code ) // runs the javascript output server side within nodejs - - // experimental backends - var code = pythonjs.translator.to_dart( my_python_code ) // output dart - var code = pythonjs.translator.to_coffee( my_python_code ) // output coffeescript - var code = pythonjs.translator.to_lua( my_python_code ) // output lua - var code = pythonjs.translator.to_visjs( my_python_code ) // output a graph for vis.js - - // the runtime required on the client side by the javascript and coffee backends - var header = pythonjs.runtime.javascript - -The PythonJS module exports an object named `translator` that contains functions to translate your python code using one of the backends. - -When translating code for the Dart or Lua backends the required runtime header is inserted at the top of the output. Note that for the Javascript and Coffee backends, the runtime header is not included in the output - so if code is going to be run on the client side in a web browser, then you will need to manually include `pythonjs.js` script in the HTML page. diff --git a/pythonjs/__init__.py b/pythonjs/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pythonjs/__main__.py b/pythonjs/__main__.py deleted file mode 100644 index f6b0b4e..0000000 --- a/pythonjs/__main__.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env python - -from translator import command - -command() diff --git a/pythonjs/ast_utils.py b/pythonjs/ast_utils.py deleted file mode 100644 index 85b2308..0000000 --- a/pythonjs/ast_utils.py +++ /dev/null @@ -1,130 +0,0 @@ -import ast -import typedpython - -class CollectNames(ast.NodeVisitor): - _names_ = [] - def visit_Name(self, node): - self._names_.append( node ) - -def collect_names(node): - CollectNames._names_ = names = [] - CollectNames().visit( node ) - return names - - -class CollectReturns(ast.NodeVisitor): - _returns_ = [] - def visit_Return(self, node): - self._returns_.append( node ) - -def collect_returns(node): - CollectReturns._returns_ = returns = [] - CollectReturns().visit( node ) - return returns - -def retrieve_vars(body): - local_vars = set() - global_vars = set() - for n in body: - #if isinstance(n, ast.Assign) and isinstance(n.targets[0], ast.Name): ## assignment to local - TODO support `a=b=c` - # local_vars.add( n.targets[0].id ) - #elif isinstance(n, ast.Assign) and isinstance(n.targets[0], ast.Tuple): - # for c in n.targets[0].elts: - # local_vars.add( c.id ) - if isinstance(n, ast.Assign): - user_typedef = None - #targets = list(n.targets) - #targets.reverse() - for i,u in enumerate(n.targets): - if isinstance(u, ast.Name): - if i==0: - if u.id in typedpython.types: - user_typedef = u.id - else: - local_vars.add( u.id ) - elif user_typedef: - local_vars.add( '%s=%s' %(user_typedef, u.id) ) - user_typedef = None - else: - #add = True ## TODO this should work?! - #for x in local_vars: - # if u.id == x or ('=' in x and x.split('=')[-1] == u.id): - # add = False - # break - #if add: - local_vars.add( u.id ) - - elif isinstance(u, ast.Tuple): - for uu in u.elts: - if isinstance(uu, ast.Name): - local_vars.add( uu.id ) - else: - raise NotImplementedError(uu) - else: - pass ## skips assignment to an attribute `a.x = y` - - if user_typedef: ## `int x` - if isinstance(n.value, ast.Name): - local_vars.add( '%s=%s' %(user_typedef, n.value.id)) - elif isinstance(n.value, ast.Num): - local_vars.add( '%s=%s' %(user_typedef, n.value.n)) - else: - raise SyntaxError(n.value) - - - elif isinstance(n, ast.Global): - global_vars.update( n.names ) - elif hasattr(n, 'body') and not isinstance(n, ast.FunctionDef): - # do a recursive search inside new block except function def - l, g = retrieve_vars(n.body) - local_vars.update(l) - global_vars.update(g) - if hasattr(n, 'orelse'): - l, g = retrieve_vars(n.orelse) - local_vars.update(l) - global_vars.update(g) - - return local_vars, global_vars - -def retrieve_properties(body): - props = set() - for n in body: - if isinstance(n, ast.Assign) and isinstance(n.targets[0], ast.Attribute) and isinstance(n.targets[0].value, ast.Name) and n.targets[0].value.id == 'self': - props.add( n.targets[0].attr ) - elif hasattr(n, 'body') and not isinstance(n, ast.FunctionDef): - props.update( retrieve_properties(n.body) ) - return props - -def inspect_function( node ): - local_vars, global_vars = retrieve_vars(node.body) - local_vars = local_vars - global_vars - for arg in node.args.args: - local_vars.add( arg.id ) - names = [] - returns = [] - for n in node.body: - names.extend( collect_names(n) ) - returns.extend( collect_returns(n) ) - - typedefs = {} - for decorator in node.decorator_list: - if isinstance(decorator, ast.Call) and decorator.func.id == 'typedef': - c = decorator - assert len(c.args) == 0 and len(c.keywords) - for kw in c.keywords: - assert isinstance( kw.value, ast.Name) - typedefs[ kw.arg ] = kw.value.id - - info = { - 'locals':local_vars, - 'globals':global_vars, - 'name_nodes':names, - 'return_nodes':returns, - 'typedefs': typedefs - } - return info - -def inspect_method( node ): - info = inspect_function( node ) - info['properties'] = retrieve_properties( node.body ) - return info \ No newline at end of file diff --git a/pythonjs/cli.js b/pythonjs/cli.js deleted file mode 100755 index 2fb4008..0000000 --- a/pythonjs/cli.js +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node - - -if (process.argv.length <= 2) { - console.log('python-js input.py output.js [--dart, --coffee, --lua, --visjs]') - console.log('(the default output is javascript)') -} else { - var fs = require('fs') - var pythonjs = require('./python-js') - var input = fs.readFileSync( process.argv[2], {'encoding':'utf8'} ) - - if (process.argv.indexOf('--dart') != -1) { - var header = pythonjs.runtime.dart; - var output = pythonjs.translator.to_dart( header + '\n' + input ) - } else if (process.argv.indexOf('--coffee') != -1) { - var output = pythonjs.translator.to_coffee( input ) - } else if (process.argv.indexOf('--lua') != -1) { - var header = pythonjs.runtime.lua; - var output = pythonjs.translator.to_lua( header + '\n' + input ) - } else if (process.argv.indexOf('--visjs') != -1) { - var output = pythonjs.translator.to_visjs( input ) - } else { - var output = pythonjs.translator.to_javascript( input ) - } - - if (process.argv.length >= 4) { - fs.writeFileSync( process.argv[3], output, {'encoding':'utf8'} ) - } else { - console.log(output) - } - -} \ No newline at end of file diff --git a/pythonjs/code_writer.py b/pythonjs/code_writer.py deleted file mode 100644 index 9fa4a6f..0000000 --- a/pythonjs/code_writer.py +++ /dev/null @@ -1,47 +0,0 @@ -import sys - -if sys.version_info.major == 3: - import io - StringIO = io.StringIO -else: - from StringIO import StringIO - -class Writer(object): - - def __init__(self): - self.inline_glsl = False - self.inline_skip = ('@', 'def ', 'while ', 'if ', 'for ', 'var(') - self.level = 0 - self.buffer = list() - self.output = StringIO() - self.functions = [] - - def is_at_global_level(self): - return self.level == 0 - - def push(self): - self.level += 1 - - def pull(self): - self.level -= 1 - - def append(self, code): - self.buffer.append(code) - - def write(self, code): - for content in self.buffer: - self._write(content) - self.buffer = list() - self._write(code) - - def _write(self, code): - indentation = self.level * 4 * ' ' - if self.inline_glsl and not code.startswith( self.inline_skip ): - code = "inline('''%s''')" %code - s = '%s%s\n' % (indentation, code) - self.output.write(s) - - def getvalue(self): - s = self.output.getvalue() - self.output = StringIO() - return s \ No newline at end of file diff --git a/pythonjs/empythoned-translator-webworker.js b/pythonjs/empythoned-translator-webworker.js deleted file mode 100644 index cf664b0..0000000 --- a/pythonjs/empythoned-translator-webworker.js +++ /dev/null @@ -1,59 +0,0 @@ -(function () { - self.console = { - log: function () {} - }; - self.prompt = function () { - return 'Input not supported in demo'; - }; - var ready = false; - - importScripts('empythoned.js'); - - // https://github.com/kripken/emscripten/wiki/Filesystem-API - FS.createLazyFile(".", "python_to_pythonjs.py", "./python_to_pythonjs.py", - true,false - ); - FS.createLazyFile(".", "pythonjs.py", "./pythonjs.py", - true,false - ); - FS.createLazyFile(".", "ministdlib.py", "./ministdlib.py", - true,false - ); - - var buffer = []; - var on_stderr = function(chr) { - if (chr == null || chr == 0 || chr == 10) { - postMessage( {'error':buffer.join('')} ); - buffer.length = 0; - } else { - buffer.push( String.fromCharCode(chr) ); - } - } - - Python.initialize( - null, // stdin - null, // stdout - on_stderr // stderr - ); - - var res = Python.eval('from python_to_pythonjs import main as to_pythonjs'); - var res = Python.eval('from pythonjs import main as to_javascript'); - var res = Python.eval('def translate_to_javascript(src): return to_javascript(to_pythonjs(src))'); - - ready = true; - - var on_message = function (e) { - if (ready != true) throw Error('Empythoned not ready'); - // e.data is written to a file to avoid any problems with escaping string quotes - // note: emscripten 1.0 api - FS.createDataFile( "/sandbox", "temp", e.data, true, true ); - var result = Python.eval('translate_to_javascript(open("/sandbox/temp","r").read())'); - if (result !== null && result !== undefined) { - postMessage( {'code':result} ); // javascript to eval - } - //FS.deleteFile( "/sandbox/temp" ); - }; - - addEventListener('message', on_message, false); - -})(); diff --git a/pythonjs/empythoned-webworker.js b/pythonjs/empythoned-webworker.js deleted file mode 100644 index 29bd26b..0000000 --- a/pythonjs/empythoned-webworker.js +++ /dev/null @@ -1,42 +0,0 @@ -(function () { - self.console = { - log: function () {} - }; - self.prompt = function () { - return 'Input not supported in demo'; - }; - - importScripts('empythoned.js'); - - // https://github.com/kripken/emscripten/wiki/Filesystem-API - FS.createLazyFile(".", "python_to_pythonjs.py", "./python_to_pythonjs.py", - true,false - ); - FS.createLazyFile(".", "pythonjs.py", "./pythonjs.py", - true,false - ); - FS.createLazyFile(".", "ministdlib.py", "./ministdlib.py", - true,false - ); - - - Python.initialize(null, function(chr) { - if (chr !== null) - postMessage(String.fromCharCode(chr)); - }); - - var on_message = function (e) { - if (Python.isFinished(e.data)) { - var result = Python.eval(e.data); - if (result !== null && result !== undefined) { - postMessage('\n--------------------------\nResult: ' + result); - } - } else { - postMessage('\nCommand not finished.\n'); - } - }; - - addEventListener('message', on_message, false); - - postMessage('Empythoned Ready\n'); -})(); diff --git a/pythonjs/empythoned.js b/pythonjs/empythoned.js deleted file mode 100644 index 6fba7cf..0000000 --- a/pythonjs/empythoned.js +++ /dev/null @@ -1,11660 +0,0 @@ -function read(path) { - /* read file - fallback for nodejs - always read relative to the path where empythoned.js is (__filename), - because this is only used to load python modules in the same directory - as empythoned.js or the "lib" sub-folder. - */ - console.log('loading python module->' + path); - var cwd = process.cwd(); - process.chdir( require('path').dirname( __filename ) ); - var data = require('fs').readFileSync( path, {'encoding':'utf8'} ); - process.chdir( cwd ); - return data; -} - -//this.Module||(this.Module={}); // not compatible with nodejs -var Module={}; -if(!Module.arguments)try{Module.arguments=scriptArgs}catch(e$$5){try{Module.arguments=arguments}catch(e$$6){Module.arguments=[]}} -var Runtime={forceAlign:function(g,e){e=e||4;return isNumber(g)&&isNumber(e)?Math.ceil(g/e)*e:"Math.ceil(("+g+")/"+e+")*"+e},isNumberType:function(g){return g in Runtime.INT_TYPES||g in Runtime.FLOAT_TYPES},isPointerType:function(g){return pointingLevels(g)>0},isStructType:function(g){return isPointerType(g)?!1:RegExp(/^\[\d+\ x\ (.*)\]/g).test(g)?!0:!Runtime.isNumberType(g)&&g[0]=="%"},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{"float":0,"double":0},or64:function(g,e){var b=g|0|e|0,a=(Math.round(g/ -4294967296)|Math.round(e/4294967296))*4294967296;return b+a},and64:function(g,e){var b=(g|0)&(e|0),a=(Math.round(g/4294967296)&Math.round(e/4294967296))*4294967296;return b+a},xor64:function(g,e){var b=(g|0)^(e|0),a=(Math.round(g/4294967296)^Math.round(e/4294967296))*4294967296;return b+a},getNativeFieldSize:function(g){return Math.max(Runtime.getNativeTypeSize(g),4)},getNativeTypeSize:function(g){var e={_i1:1,_i8:1,_i16:2,_i32:4,_i64:8,_float:4,_double:8}["_"+g];!e&&g[g.length-1]=="*"&&(e=4);return e}, -dedup:function(g,e){var b={};return e?g.filter(function(a){return b[a[e]]?!1:b[a[e]]=!0}):g.filter(function(a){return b[a]?!1:b[a]=!0})},set:function(){for(var g=typeof arguments[0]==="object"?arguments[0]:arguments,e={},b=0;b=0&&e.push(a-b);return b=a});g.flatSize=Runtime.alignMemory(g.flatSize,g.alignSize);if(e.length==0)g.flatFactor=g.flatSize;else if(Runtime.dedup(e).length==1)g.flatFactor=e[0];g.needsFlattening=g.flatFactor!=1;return g.flatIndexes},generateStructInfo:function(g,e,b){var a,c;if(e){b=b||0;a=(typeof Types=== -"undefined"?Runtime.typeInfo:Types.types)[e];if(!a)return null;g||(g=(typeof Types==="undefined"?Runtime:Types).structMetadata[e.replace(/.*\./,"")]);if(!g)return null;assert(a.fields.length===g.length,"Number of named fields must match the type for "+e+". Perhaps due to inheritance, which is not supported yet?");c=a.flatIndexes}else a={fields:g.map(function(a){return a[0]})},c=Runtime.calculateStructAlignment(a);var d={__size__:a.flatSize};e?g.forEach(function(e,g){if(typeof e==="string")d[e]=c[g]+ -b;else{var j,k;for(k in e)j=k;d[j]=Runtime.generateStructInfo(e[j],a.fields[g],c[g])}}):g.forEach(function(a,b){d[a[1]]=c[b]});return d},stackAlloc:function(g){var e=STACKTOP;_memset(STACKTOP,0,g);STACKTOP+=g;STACKTOP=Math.ceil(STACKTOP/4)*4;return e},staticAlloc:function(g){var e=STATICTOP;STATICTOP+=g;STATICTOP=Math.ceil(STATICTOP/4)*4;return e},alignMemory:function(g,e){return Math.ceil(g/(e?e:4))*(e?e:4)},__dummy__:0},CorrectionsMonitor={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(g,e){e|| -(this.corrections++,this.corrections>=this.MAX_ALLOWED&&abort("\n\nToo many corrections!"))},print:function(){var g=[],e;for(e in this.sigs)g.push({sig:e,fails:this.sigs[e][0],succeeds:this.sigs[e][1],total:this.sigs[e][0]+this.sigs[e][1]});g.sort(function(a,b){return b.total-a.total});for(e=0;e=0?Math.floor(g):Math.ceil(g)} -var __globalConstructor__=function(){},__THREW__=!1,__ATEXIT__=[],ABORT=!1,undef=0;function abort(g){print(g+":\n"+Error().stack);ABORT=!0;throw"Assertion: "+g;}function assert(g,e){g||abort("Assertion failed: "+e)} -function setValue(g,e,b){b[b.length-1]==="*"&&(b="i32");switch(b){case "i1":HEAP[g]=e;break;case "i8":HEAP[g]=e;break;case "i16":HEAP[g]=e;break;case "i32":HEAP[g]=e;break;case "i64":HEAP[g]=e;break;case "float":HEAP[g]=e;break;case "double":HEAP[g]=e;break;default:abort("invalid type for setValue: "+b)}}this.setValue=setValue; -function getValue(g,e){e[e.length-1]==="*"&&(e="i32");switch(e){case "i1":return HEAP[g];case "i8":return HEAP[g];case "i16":return HEAP[g];case "i32":return HEAP[g];case "i64":return HEAP[g];case "float":return HEAP[g];case "double":return HEAP[g];default:abort("invalid type for setValue: "+e)}return null}this.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2; -function allocate(g,e,b){var a,c;typeof g==="number"?(a=!0,c=g):(a=!1,c=g.length);for(var b=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc][b===void 0?ALLOC_STATIC:b](Math.max(c,1)),d=typeof e==="string"?e:null,f=0,h;f0;){var g=__ATEXIT__.pop(),e=g.func;typeof e==="number"&&(e=FUNCTION_TABLE[e]);e(g.arg===void 0?null:g.arg)}CorrectionsMonitor.print()}function Array_copy(g,e){return HEAP.slice(g,g+e)}Module.Array_copy=Array_copy;function String_len(g){for(var e=0;HEAP[g+e];)e++;return e}Module.String_len=String_len;function String_copy(g,e){var b=String_len(g);e&&b++;var a=Array_copy(g,b);e&&(a[b-1]=0);return a}Module.String_copy=String_copy; -if(typeof print==="undefined")this.print=console.log;function intArrayFromString(g,e){for(var b=[],a=0;a255&&(c&=255);b.push(c);a+=1}e||b.push(0);return b}Module.intArrayFromString=intArrayFromString;function intArrayToString(g){for(var e=[],b=0;b255&&(a&=255);e.push(String.fromCharCode(a))}return e.join("")}Module.intArrayToString=intArrayToString;function unSign(g,e){return g>=0?g:e<=32?2*Math.abs(1<=b&&(g=-2*b+g);return g} -var $0___SIZE=20,$1___SIZE=20,$2___SIZE=12,$3___SIZE=12,$4___SIZE=12,$5___SIZE=16,$6___SIZE=16,$7___SIZE=12,$8___SIZE=4,$9___SIZE=848,$10___SIZE=16,$11___SIZE=156,$12___SIZE=196,$13___SIZE=40,$14___SIZE=24,$15___SIZE=752,$16___SIZE=16,$17___SIZE=196,$18___SIZE=32,$19___SIZE=196,$20___SIZE=196,$21___SIZE=40,$22___SIZE=20,$23___SIZE=20,$24___SIZE=196,$25___SIZE=8,$26___SIZE=40,$27___SIZE=120,$28___SIZE=40,$29___SIZE=20,$30___SIZE=672,$31___SIZE=16,$32___SIZE=300,$33___SIZE=20,$34___SIZE=64,$35___SIZE= -60,$36___SIZE=60,$37___SIZE=40,$38___SIZE=20,$39___SIZE=196,$40___SIZE=160,$41___SIZE=40,$42___SIZE=80,$43___SIZE=100,$44___SIZE=64,$45___SIZE=352,$46___SIZE=156,$47___SIZE=36,$48___SIZE=12,$49___SIZE=20,$50___SIZE=64,$51___SIZE=80,$52___SIZE=40,$53___SIZE=80,$54___SIZE=32,$55___SIZE=140,$56___SIZE=272,$57___SIZE=100,$58___SIZE=80,$59___SIZE=196,$60___SIZE=96,$61___SIZE=8,$62___SIZE=176,$63___SIZE=60,$64___SIZE=120,$65___SIZE=160,$66___SIZE=196,$67___SIZE=160,$68___SIZE=180,$69___SIZE=224,$70___SIZE= -80,$71___SIZE=64,$72___SIZE=196,$73___SIZE=24,$74___SIZE=24,$74___FLATTENER=[0,4,8,16,20],$75___SIZE=304,$76___SIZE=32,$77___SIZE=96,$78___SIZE=100,$79___SIZE=196,$80___SIZE=196,$81___SIZE=208,$82___SIZE=112,$83___SIZE=80,$84___SIZE=48,$85___SIZE=40,$86___SIZE=196,$87___SIZE=136,$88___SIZE=1840,$89___SIZE=64,$90___SIZE=40,$91___SIZE=48,$92___SIZE=336,$93___SIZE=156,$94___SIZE=192,$95___SIZE=144,$96___SIZE=196,$97___SIZE=176,$98___SIZE=160,$99___SIZE=48,$100___SIZE=64,$101___SIZE=704,$102___SIZE=156, -$103___SIZE=12,$104___SIZE=200,$105___SIZE=416,$106___SIZE=128,$107___SIZE=48,$108___SIZE=80,$109___SIZE=140,$110___SIZE=60,$111___SIZE=80,$112___SIZE=196,$113___SIZE=96,$114___SIZE=2800,$115___SIZE=28,$116___SIZE=28,$117___SIZE=28,$118___SIZE=736,$119___SIZE=32,$120___SIZE=196,$121___SIZE=128,$122___SIZE=12,$123___SIZE=12,$124___SIZE=8,$125___SIZE=4,$126___SIZE=4,$127___SIZE=16,$128___SIZE=8,$129___SIZE=12,$130___SIZE=12,$131___SIZE=16,$132___SIZE=8,$133___SIZE=12,$134___SIZE=12,$135___SIZE=8,$136___SIZE= -8,$137___SIZE=8,$138___SIZE=12,$139___SIZE=8,$140___SIZE=12,$141___SIZE=8,$142___SIZE=28,$142___FLATTENER=[0,2,4,8,12,16,20,24],$143___SIZE=4,$144___SIZE=8,$145___SIZE=16,$146___SIZE=12,$147___SIZE=8,$148___SIZE=20,$149___SIZE=24,$struct__0anon___SIZE=20,$struct__0sequence___SIZE=8,$struct_AutoNumber___SIZE=8,$struct_DIR___SIZE=0,$struct_DIR___FLATTENER=[],$struct_FILE___SIZE=148,$struct_FILE___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,70,71,72,76,84,88,92,96,100,104,108],$struct_FieldNameIterator___SIZE= -12,$struct_GroupGenerator___SIZE=12,$struct_InternalFormatSpec___SIZE=28,$struct_InternalFormatSpec___FLATTENER=[0,1,4,8,12,16,20,24],$struct_LocaleInfo___SIZE=12,$struct_MarkupIterator___SIZE=8,$struct_MatchObject___SIZE=44,$struct_MergeState___SIZE=1724,$struct_MergeState___FLATTENER=[0,4,8,12,16,20,700],$struct_NullImporter___SIZE=8,$struct_NumberFieldWidths___SIZE=44,$struct_OutputString___SIZE=16,$struct_PatternObject___SIZE=44,$struct_PyArena___SIZE=12,$struct_PyBaseExceptionObject___SIZE=20, -$struct_PyBoolObject___SIZE=12,$struct_PyBufferObject___SIZE=32,$struct_PyBufferProcs___SIZE=24,$struct_PyByteArrayObject___SIZE=24,$struct_PyCFunctionObject___SIZE=20,$struct_PyCObject___SIZE=20,$struct_PyCapsule___SIZE=24,$struct_PyCellObject___SIZE=12,$struct_PyClassObject___SIZE=36,$struct_PyCodeObject___SIZE=72,$struct_PyCompilerFlags___SIZE=4,$struct_PyComplexObject___SIZE=24,$struct_PyDescrObject___SIZE=16,$struct_PyDictEntry___SIZE=12,$struct_PyDictObject___SIZE=124,$struct_PyEnvironmentErrorObject___SIZE= -32,$struct_PyFileObject___SIZE=84,$struct_PyFloatBlock___SIZE=996,$struct_PyFloatObject___SIZE=16,$struct_PyFrameObject___SIZE=316,$struct_PyFrameObject___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,312],$struct_PyFunctionObject___SIZE=44,$struct_PyGenObject___SIZE=24,$struct_PyGetSetDef___SIZE=20,$struct_PyGetSetDescrObject___SIZE=20,$struct_PyHeapTypeObject___SIZE=436,$struct_PyHeapTypeObject___FLATTENER=[0,196,352,364,404,428,432],$struct_PyInstanceObject___SIZE=20,$struct_PyIntBlock___SIZE= -988,$struct_PyInterpreterState___SIZE=40,$struct_PyListObject___SIZE=20,$struct_PyLongObject___SIZE=16,$struct_PyMappingMethods___SIZE=12,$struct_PyMemberDef___SIZE=20,$struct_PyMemberDescrObject___SIZE=20,$struct_PyMemoryViewObject___SIZE=64,$struct_PyMethodChain___SIZE=8,$struct_PyMethodDef___SIZE=16,$struct_PyMethodDescrObject___SIZE=20,$struct_PyMethodObject___SIZE=24,$struct_PyNumberMethods___SIZE=156,$struct_PySTEntryObject___SIZE=60,$struct_PySequenceMethods___SIZE=40,$struct_PySetObject___SIZE= -100,$struct_PySetObject___FLATTENER=[0,4,8,12,16,20,24,28,92,96],$struct_PyStringObject___SIZE=24,$struct_PyStructSequence___SIZE=16,$struct_PyStructSequence_Desc___SIZE=16,$struct_PyStructSequence_Field___SIZE=8,$struct_PyThreadState___SIZE=84,$struct_PyTracebackObject___SIZE=24,$struct_PyTryBlock___SIZE=12,$struct_PyTypeObject___SIZE=196,$struct_PyUnicodeErrorObject___SIZE=40,$struct_PyUnicodeObject___SIZE=24,$struct_PyWeakReference___SIZE=28,$struct_PyWrapperDescrObject___SIZE=24,$struct_Py_buffer___SIZE= -52,$struct_Py_buffer___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,48],$struct_Py_complex___SIZE=16,$struct_SRE_REPEAT___SIZE=16,$struct_SRE_STATE___SIZE=860,$struct_SRE_STATE___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,840,844,848,852,856],$struct_ScannerObject___SIZE=872,$struct_WFILE___SIZE=32,$struct__IO_marker___SIZE=12,$struct__PyUnicode_Name_CAPI___SIZE=12,$struct__PyUnicode_TypeRecord___SIZE=10,$struct__PyUnicode_TypeRecord___FLATTENER=[0,2,4,6,7,8],$struct__alias___SIZE=8,$struct__arguments___SIZE= -16,$struct__comprehension___SIZE=12,$struct__excepthandler___SIZE=24,$struct__excepthandler___FLATTENER=[0,4,16,20],$struct__expr___SIZE=32,$struct__expr___FLATTENER=[0,4,24,28],$struct__frozen___SIZE=12,$struct__inittab___SIZE=8,$struct__keyword___SIZE=8,$struct__mod___SIZE=8,$struct__node___SIZE=24,$struct__slice___SIZE=16,$struct__ss_arc___SIZE=12,$struct__stmt___SIZE=28,$struct__stmt___FLATTENER=[0,4,20,24],$struct_anon___SIZE=4,$struct_arc___SIZE=4,$struct_asdl_int_seq___SIZE=8,$struct_asdl_seq___SIZE= -8,$struct_assembler___SIZE=32,$struct_basicblock___SIZE=32,$struct_block___SIZE=16,$struct_bytesiterobject___SIZE=16,$struct_calliterobject___SIZE=16,$struct_compiler___SIZE=36,$struct_compiler_unit___SIZE=220,$struct_compiler_unit___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,44,48,208,212,216],$struct_compiling___SIZE=16,$struct_constdef___SIZE=8,$struct_dfa___SIZE=24,$struct_dictiterobject___SIZE=28,$struct_dictviewobject___SIZE=12,$struct_dirent___SIZE=276,$struct_dirent___FLATTENER=[0,8,16,18,19], -$struct_encoding_map___SIZE=52,$struct_encoding_map___FLATTENER=[0,4,8,40,44,48],$struct_enumobject___SIZE=24,$struct_fblockinfo___SIZE=8,$struct_fieldnameiterobject___SIZE=24,$struct_formatteriterobject___SIZE=20,$struct_gc_generation___SIZE=20,$struct_gc_generation___FLATTENER=[0,12,16],$struct_grammar___SIZE=24,$struct_grammar___FLATTENER=[0,4,8,16,20],$struct_instr___SIZE=16,$struct_instr___FLATTENER=[0,1,4,8,12],$struct_itimerval___SIZE=16,$struct_label___SIZE=8,$struct_labellist___SIZE=8,$struct_lconv___SIZE= -56,$struct_lconv___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,41,42,43,44,45,46,47,48,49,50,51,52,53],$struct_listiterobject___SIZE=16,$struct_mallinfo___SIZE=40,$struct_malloc_chunk___SIZE=16,$struct_malloc_params___SIZE=24,$struct_malloc_segment___SIZE=16,$struct_malloc_state___SIZE=468,$struct_malloc_state___FLATTENER=[0,4,8,12,16,20,24,28,32,36,40,304,432,436,440,444,460,464],$struct_malloc_tree_chunk___SIZE=32,$struct_malloc_tree_chunk___FLATTENER=[0,4,8,12,16,24,28],$struct_memberlist___SIZE= -16,$struct_nfa___SIZE=24,$struct_nfagrammar___SIZE=16,$struct_nfastate___SIZE=8,$struct_parser_state___SIZE=18016,$struct_parser_state___FLATTENER=[0,18004,18008,18012],$struct_passwd___SIZE=28,$struct_perrdetail___SIZE=28,$struct_propertyobject___SIZE=28,$struct_rangeiterobject___SIZE=24,$struct_rangeobject___SIZE=20,$struct_reversedobject___SIZE=16,$struct_rusage___SIZE=72,$struct_rusage___FLATTENER=[0,8,16,20,24,28,32,36,40,44,48,52,56,60,64,68],$struct_s_slice___SIZE=8,$struct_setentry___SIZE= -8,$struct_setiterobject___SIZE=24,$struct_spamdictobject___SIZE=128,$struct_spamlistobject___SIZE=24,$struct_sre_match_context___SIZE=32,$struct_sre_umatch_context___SIZE=32,$struct_ss_state___SIZE=24,$struct_st_zip_searchorder___SIZE=20,$struct_stack___SIZE=18004,$struct_stackentry___SIZE=12,$struct_stat___SIZE=96,$struct_stat___FLATTENER=[0,8,12,16,20,24,28,32,40,44,52,56,64,72,80,88],$struct_state___SIZE=24,$struct_statvfs___SIZE=96,$struct_statvfs___FLATTENER=[0,4,8,16,24,32,40,48,56,60,64,68, -72],$struct_superobject___SIZE=20,$struct_symtable___SIZE=36,$struct_termios___SIZE=60,$struct_termios___FLATTENER=[0,4,8,12,16,17,52,56],$struct_tm___SIZE=44,$struct_tms___SIZE=16,$struct_tok_state___SIZE=920,$struct_tok_state___FLATTENER=[0,4,8,12,16,20,24,28,32,36,436,440,444,448,452,456,460,464,468,472,476,876,880,884,888,892,896,900,904,908,912,916],$struct_tupleiterobject___SIZE=16,$struct_utsname___SIZE=390,$struct_winsize___SIZE=8,$struct_wrapperbase___SIZE=28,$struct_wrapperobject___SIZE= -16,$union_PyGC_Head___SIZE=12,$union_anon___SIZE=4,__str,__str1,_hintstrobj_8403,__str2,__str3,__str4,__str5,__str6,__str7,__str8,__str9,__str10,__str11,__str12,__str13,__str14,__str15,__str16,__str17,_format_cache_9213,__str18,__str19,__str20,__str21,__str22,__str23,__str24,__str25,__str26,__str27,__str28,__str29,__str30,__str31,__str32,__str33,__str34,__str35,__str36,__str37,__str38,__str39,__str40,__str41,__str42,__str43,__str44,__str45,__str46,__str47,__str48,__str49,__str50,__str51,__str52,__str53, -__str54,__str55,__str56,_int_name_10455,__str57,_trunc_name_10530,__str58,__str59,__str60,__str61,__str62,_trunc_name_10659,__str63,__str64,__str65,__str66,__str67,__str68,__str69,__str70,__str71,__str72,__str73,__str74,__str75,__str76,__str77,__str78,__str79,__str80,__str81,__str82,__str83,___bases___12015,__str84,___class___12127,__str85,__str86,__str87,__str88,_name_12209,__str89,__str90,__str91,__str92,_name_12338,__str93,__str94,_stderr,__str95,__str196,__str297,__str398,__str499,__str100,__str1101, -__str2102,__str3103,__str4104,__str5105,__str6106,__str7107,__str8108,__str9109,__str10110,__str11111,__str12112,__str13113,__str14114,__str15115,__str16116,__str17117,__str18118,__str19119,__str20120,__str21121,__str22122,__str23123,__str24124,__str25125,__str26126,__str27127,__str28128,__str29129,__str30130,__str31131,__str32132,__str33133,__str34134,__str35135,__str36136,__str37137,__str38138,__str39139,__str40140,__str41141,__str42142,__str43143,__str44144,__str45145,__str46146,__str47147,__str48148, -__str49149,__str50150,__str51151,__str52152,__str53153,__str54154,__str55155,__str56156,__str57157,__str58158,__str59159,__str60160,__str61161,__str62162,__str64164,__str65165,__str66166,__str67167,__str68168,__str69169,__str70170,__str71171,__str72172,__str73173,__str74174,__str75175,__str76176,__str77177,__str78178,__str79179,__str80180,__str81181,__str182,_Py_FileSystemDefaultEncoding,__str183,_kwlist_9045,__str1184,__str2185,__str3186,__str4187,__str5188,_import_doc,_abs_doc,_all_doc,_any_doc, -__str6189,__str7190,__str8191,__str9192,_apply_doc,_bin_doc,__str10193,_callable_doc,__str11194,_filter_doc,__str12195,_format_doc,__str13196,__str14197,_chr_doc,__str15198,_unichr_doc,__str16199,_cmp_doc,__str17200,__str18201,_coerce_doc,__str19202,_kwlist_9605,__str20203,__str21204,__str22205,__str23206,__str24207,__str25208,__str26209,__str27210,__str28211,__str29212,__str30213,_compile_doc,__str31214,_dir_doc,__str32215,_divmod_doc,__str33216,__str34217,__str35218,__str36219,__str37220,__str38221, -__str39222,_eval_doc,__str40223,__str41224,__str42225,_execfile_doc,__str43226,__str44227,_getattr_doc,_globals_doc,__str45228,__str46229,_hasattr_doc,_id_doc,__str47230,__str48231,_errmsg_10106,_map_doc,__str49232,__str50233,_next_doc,__str51234,_setattr_doc,__str52235,_delattr_doc,_hash_doc,__str53236,__str54237,_hex_doc,__str55238,_input_doc,__str56239,__str57240,_intern_doc,__str58241,__str59242,_iter_doc,_len_doc,_locals_doc,__str60243,__str61244,__str62245,__str63246,__str64247,_min_doc,_max_doc, -__str65248,__str66249,_oct_doc,_open_doc,__str67250,__str68251,_ord_doc,__str69252,_pow_doc,_dummy_args_10876,_str_newline_10879,__str70253,__str71254,_str_space_10880,_unicode_newline_10877,_unicode_space_10878,__str72255,_kwlist_10875,__str73256,__str74257,__str75258,__str76259,__str77260,__str78261,_print_doc,__str79262,__str80263,__str81264,__str82265,__str83266,__str84267,__str85268,__str86269,__str87270,_range_doc,__str88271,__str89272,__str90273,__str91274,__str92275,__str93276,_raw_input_doc, -__str94277,_functools_reduce_11644,__str95278,__str96,_reduce_doc,__str97,_reload_doc,_repr_doc,__str98,_kwlist_11706,__str99,__str100279,_round_doc,__str101,_kwlist_11755,__str102,__str103,__str104,_sorted_doc,__str105,__str106,__str107,__str108,_vars_doc,__str109,__str110,_sum_doc,__str111,_isinstance_doc,__str112,_issubclass_doc,__str113,_zip_doc,__str114,__str115,__str116,__str117,__str118,__str119,__str120,__str121,__str122,__str123,__str124,__str125,__str126,__str127,__str128,__str129,__str130, -__str131,__str132,__str133,__str134,__str135,__str136,__str137,__str138,__str139,__str140,__str141,_builtin_methods,_builtin_doc,__str142,__str143,__str144,__str145,__str146,__str147,__str148,__str149,__str150,__str151,__str152,__str153,__str154,__str155,__str156,__str157,__str158,__str159,__str160,__str161,__str162,__str163,__str164,__str165,__str166,__str167,__str168,__str169,__str170,__str171,__str172,__str173,__str174,__str175,__str176,__str177,__str178,__str280,__str1281,_false_str,_true_str, -__Py_TrueStruct,__Py_ZeroStruct,__str2284,_kwlist_8347,__str3285,_bool_doc,_bool_as_number,__str4286,_PyBool_Type,__str289,__str1290,__str2291,__str3292,__str4293,__str5294,__str6295,__str7296,__str8297,__str9298,__str10299,__str11300,__str12301,_buffer_doc,__str13302,__str14303,__str15304,__str16305,__str17306,__str18307,__str19308,__str20309,__str21310,__str22311,__str23312,__str24313,__str25314,__str26315,__str27316,_buffer_as_sequence,_buffer_as_mapping,_buffer_as_buffer,__str28317,_PyBuffer_Type, -__PyByteArray_empty_string,__str320,__str1321,__str2322,__str3323,__str4324,__str5325,__str6326,__str7327,__str8328,__str9329,__str10330,__str11331,__str12332,__str13333,__str14334,_kwlist_9338,__str15335,__str16336,__str17337,__str18338,__str19339,__str20340,__str21341,__str22342,__str23343,__str24344,__str26346,__str27347,__str29349,_expandtabs__doc__,__str30350,__str31351,_ljust__doc__,__str32352,_rjust__doc__,__str33353,_center__doc__,__str34354,_zfill__doc__,__str35355,__str36356,_find__doc__, -_count__doc__,__str37357,_index__doc__,__str38358,_rfind__doc__,_rindex__doc__,_startswith__doc__,__str39359,_endswith__doc__,__str40360,_translate__doc__,__str41361,__str42362,__str43363,__str44364,_replace__doc__,__str45365,_split__doc__,__str46366,_partition__doc__,_rpartition__doc__,_rsplit__doc__,__str47367,_reverse__doc__,_insert__doc__,__str48368,__str49369,_append__doc__,_extend__doc__,_pop__doc__,__str50370,__str51371,__str52372,_remove__doc__,__str53373,_strip__doc__,__str54374,__str55375, -_lstrip__doc__,__str56376,_rstrip__doc__,__str57377,_decode_doc,__str58378,_kwlist_13210,_alloc_doc,_join_doc,__str59379,__str60380,_splitlines__doc__,__str61381,_fromhex_doc,__str62382,__str63383,_reduce_doc384,__str64385,__str65386,__str66387,_sizeof_doc,_bytearray_as_sequence,_bytearray_as_mapping,_bytearray_as_buffer,__str67388,__str68389,__str69390,__str70391,__str71392,__str72393,__str73394,__str74395,__str75396,__str76397,__str77398,__str78399,__str79400,__str80401,__str81402,__str82403,__str83404, -__str84405,__str85406,__str86407,__str87408,__str88409,__str89410,__str90411,__str91412,__str92413,__str93414,__str94415,__str95416,__str96417,__str97418,__str98419,__str99420,__str100421,__str101422,__str102423,__str103424,__str104425,__str105426,__str106427,__str107428,__str108429,_bytearray_methods,_bytearray_doc,__str109430,_PyByteArray_Type,_length_hint_doc,_bytearrayiter_methods,__str111433,_PyByteArrayIter_Type,__str112434,__str113435,__Py_isspace__doc__,__Py_isalpha__doc__,__Py_isalnum__doc__, -__Py_isdigit__doc__,__Py_islower__doc__,__Py_isupper__doc__,__Py_istitle__doc__,__Py_lower__doc__,__Py_upper__doc__,__Py_title__doc__,__Py_capitalize__doc__,__Py_swapcase__doc__,__str460,__str1461,__str2462,__str3463,__str4464,__str5465,__str6466,__str7467,__str8468,__str9469,__str10470,__str11471,__str12472,__str13473,__str14474,__str15475,__str16476,_PyCapsule_Type__doc__,__str17477,_PyCapsule_Type,__str478,__str1479,__str2480,__str3481,__str4482,__str5483,__str6484,_cell_getsetlist,__str7485,_PyCell_Type, -__str486,__str1487,_pendingfirst,_pendinglast,_pendingcalls_to_do,_busy_8528,_pendingcalls,__Py_Ticker,_busy_8545_b,_recursion_limit,__Py_CheckRecursionLimit,__str2489,__Py_TracingPossible,__Py_CheckInterval,__str3490,__str4491,__str5492,__str6493,__str7494,__str8495,__str9496,__str10497,__str11498,__str12499,__str13500,__str14501,__str15502,__str16503,__str17504,__str18505,__str19506,__str20507,__str21508,__str22509,__str23510,__str24511,_exit_8846,__str25512,_enter_8847,__str26513,__str27514,__str28515, -__str29516,__str30517,__str31518,__str32519,__str33520,__str34521,__str35522,__str36523,__str37524,__str38525,__str39526,__str40527,__str41528,__str42529,__str43530,__str44531,__str45532,__str46533,__str47534,__str48535,__str49536,__str50537,__str51538,__str52539,__str53540,__str54541,__str55542,__str56543,__str57544,__str58545,__str59546,__str60547,__str61548,__str62549,__str63550,__str64551,__str65552,__str66553,__str67554,__str69556,__str70557,__str71558,__str72559,__str73560,__str74561,__str75562, -__str76563,_numfree,_docstr_8341,__str572,_modstr_8342,__str1573,_namestr_8343,__str2574,__str3575,__str4576,__str5577,__str6578,_getattrstr,__str7579,__str8580,_setattrstr,__str9581,_delattrstr,__str10582,__str11583,_class_doc,__str12584,_kwlist_8540,__str13585,__str14586,__str15587,__str16588,__str17589,__str19591,__str20592,__str21593,__str22594,__str23595,__str24596,__str25597,__str26598,__str27599,__str28600,__str29601,__str30602,__str31603,_PyClass_Type,_initstr_9117,__str32605,__str33606,__str34607, -_instance_doc,__str35608,__str36609,_delstr_9250,__str37610,__str38611,__str39612,__str40613,__str41614,__str42615,__str43616,__str44617,_reprstr_9615,__str45618,__str46619,__str47620,_strstr_9670,__str48621,_hashstr_9703,__str49622,_eqstr_9704,__str50623,_cmpstr_9705,__str51624,__str52625,__str53626,_lenstr,__str54627,__str55628,__str56629,_getitemstr,_delitemstr,__str58631,_setitemstr,__str59632,_instance_as_mapping,__str60633,_getslicestr_10036,__str61634,__str62635,__str63636,__str64637,__str65638, -_delslicestr_10188,__str66639,__str67640,_setslicestr_10187,__str68641,__str69642,__str70643,__str71644,___contains___10319,__str72645,_instance_as_sequence,_coerce_obj,__str73646,__str74647,__str75648,_o_10701,__str76649,_o_10716,__str77650,_o_10731,__str78651,__str79652,__str80653,__str81654,__str82655,__str83656,__str84657,__str85658,__str86659,__str87660,__str88661,__str89662,__str90663,__str91664,__str92665,__str93666,__str94667,__str95668,__str96669,__str97670,__str98671,__str99672,__str100673, -__str101674,__str102675,__str103676,__str104677,__str105678,__str106679,__str107680,__str108681,__str109682,__str110683,__str111684,__str112685,__str113686,__str114687,__str115688,__str116689,_cmp_obj_10922,__str117690,_nonzerostr_11141,__str118691,__str119692,__str120693,_indexstr_11213,__str121694,__str122695,_o_11243,__str123696,_o_11258,_int_name_11274,_o_11296,__str127700,_o_11317,__str128701,_o_11332,__str129702,_o_11347,__str130703,__str131704,__str132705,__str133706,_name_op,__str134707,__str135708, -__str136709,__str137710,__str138711,_iterstr,__str139712,__str140713,__str141714,_nextstr,__str142715,__str143716,__str144717,__str145718,__str146719,_instance_as_number,__str147720,_PyInstance_Type,_free_list,__str148722,__str149723,__str150724,__str151725,__str152726,__str153727,__str154728,__str155729,_instancemethod_memberlist,_docstr_11784,_instancemethod_getset,_instancemethod_doc,__str156730,__str157731,__str158732,__str159733,__str160734,__str161735,__str162736,__str163737,_PyMethod_Type, -__str740,__str1741,__str2742,__str3743,__str4744,__str5745,__str6746,_PyCObject_Type__doc__,__str7747,_PyCObject_Type,_register__doc__,_lookup__doc__,__str748,_encode__doc__,__str1749,_decode__doc__,__str2750,__str3751,__str4752,__str5753,__str6754,__str7755,__str8756,__str9757,__str10758,__str11759,__str12760,__str13761,__str14762,__str15763,__str16764,__str17765,__str18766,__str19767,__str20768,__str21769,__str22770,__str23771,__str24772,__str25773,__str26774,__str27775,__str28776,__str29777,__str30778, -__str31779,__str32780,__str33781,__str34782,__str35783,__str36784,__str37785,__str38786,__str39787,_register_error__doc__,__str40788,_lookup_error__doc__,__str41789,__str42790,__str43791,__str44792,__str45793,__str46794,__str47795,__str48796,__str49797,__str50798,__str51799,__str52800,__str53801,__str54802,__str55803,__str56804,__str57805,__str58806,__str59807,__str60808,__str61809,__str62810,__str63811,__str64812,__str65813,__str66814,__str67815,__str68816,__str69817,__str70818,__str71819,__str72820, -__str73821,__str74822,__str75823,__str76824,__str77825,__str78826,__str79827,__str80828,__str81829,__str82830,__codecs_functions,__str83831,__str832,__str1833,__str2834,__str3835,__str4836,__str5837,__str6838,__str7839,__str8840,__str9841,__str10842,__str11843,__str12844,__str13845,__str14846,__str15847,__str16848,__str17849,__str18850,__str19851,__str20852,_hexdigits,_methods_9223,__str21853,__str22854,__str23855,__str24856,__str25857,__str26858,__str27859,__str28860,__str29861,__str30862,__str31863, -__str32864,__str33865,__str34866,__str35867,__str36868,__str37869,__str876,_ok_name_char_8322,__str1877,__str2878,_emptystring_8489,__str3879,_nulltuple_8490,__str4880,__str5881,__str6882,__str7883,__str8884,__str9885,__str10886,__str11887,__str12888,__str13889,__str14890,__str15891,__str16892,__str17893,_code_memberlist,__str18894,_code_doc,__str19895,__str20896,__str21897,__str22898,__str23899,__str24900,__str25901,_PyCode_Type,_Py_OptimizeFlag,___doc__,__str905,__str1906,__str2907,__str3908,__str4909, -__str5910,_module_10269,__str6911,__str7912,__str8913,__str9914,__str10915,__str11916,__str12917,__str13918,__str14919,_name_10827,__str15920,_LOOP_ERROR_MSG_11259,_IN_FINALLY_ERROR_MSG_11260,__str16921,_empty_string_11652,__str17922,__str18923,__str19924,_assertion_error_11819,__str20925,__str21926,__str22927,__str23928,__str24929,__str25930,__str26931,__str27932,__str28933,__str29934,__str30935,__str31936,__str32937,_name_12904,__str33938,_name_12922,__str34939,_name_12940,__str35940,__str36941, -__str37942,__str38943,__str39944,__str40945,__str41946,__str42947,__str43948,__str44949,__str45950,__str46951,__str47952,__str48953,__str49954,__str50955,__str51956,_complexstr_8622,__str958,__str1959,__str2960,__str3961,__str4962,__str5963,__str6964,__str7965,__str8966,__str9967,__str10968,__str11969,__str12970,__str13971,__str14972,__str15973,__str16974,__str17975,__str18976,_complex_conjugate_doc,__str19977,_complex__format__doc,__str20978,__str21979,__str22980,__str23981,_complex_methods,__str25983, -__str26984,__str27985,__str28986,_complex_members,__str29987,__str30988,__str31989,_kwlist_9921,__str32990,__str33991,__str34992,__str35993,_complex_doc,_complex_as_number,__str36994,_PyComplex_Type,__PyImport_Inittab,__str998,__str1999,__str21000,__str31001,__str41002,__str51003,__str61004,__str71005,__str81006,__str91007,__str101008,__str111009,__str121010,__str131011,__str141012,__str151013,__str161014,__str171015,__str181016,__str1017,__str11018,__str21019,__str31020,__str41021,__str51022,__str61023, -__str71024,__str81025,__str91026,__str101027,__str111028,__str121029,__str131030,__str141031,__str151032,_descr_members,__str161033,_method_getset,_member_getset,_getset_getset,_wrapperdescr_getset,__str171034,_PyMethodDescr_Type,__str181035,_PyClassMethodDescr_Type,__str191036,_PyMemberDescr_Type,__str201037,_PyGetSetDescr_Type,__str211038,_PyWrapperDescr_Type,_proxy_as_mapping,_proxy_as_sequence,__str221039,__str231040,__str241041,__str251042,__str261043,__str271044,__str281045,__str291046,__str301047, -__str311048,__str321049,__str331050,__str341051,__str351052,__str361053,__str371054,__str381055,__str391056,__str401057,_proxy_methods,__str411058,_PyDictProxy_Type,__str421059,__str431060,__str441061,_wrapper_members,_wrapper_getsets,__str451062,__str461063,_wrappertype,__str471064,__str481065,__str491066,_property_members,_getter_doc,_setter_doc,_deleter_doc,__str501067,__str511068,__str521069,_property_methods,__str531070,__str541071,__str551072,__str561073,__str571074,__str581075,_kwlist_9610, -__str591076,_property_doc,__str601077,_PyProperty_Type,_dummy,_numfree1079,_free_list1080,__str1081,__str11082,__str21083,__str31084,__str41085,__str51086,__str61087,__str71088,__str81089,__str91090,_missing_str_9446,_dict_as_mapping,__str101091,__str111092,__str121093,__str131094,__str141095,__str151096,__str161097,__str171098,__str181099,__str191100,__str201101,__str211102,_has_key__doc__,_contains__doc__,_getitem__doc__,_sizeof__doc__,_get__doc__,_setdefault_doc__,_pop__doc__1103,_popitem__doc__, -_keys__doc__,_items__doc__,_values__doc__,_update__doc__,_fromkeys__doc__,_clear__doc__,_copy__doc__,_iterkeys__doc__,_itervalues__doc__,_iteritems__doc__,_viewkeys__doc__,_viewitems__doc__,_viewvalues__doc__,__str221104,__str231105,__str241106,__str251107,__str261108,__str271109,__str281110,__str291111,__str301112,__str311113,__str321114,__str331115,__str341116,__str351117,__str361118,_mapp_methods,_dict_as_sequence,__str371119,_dictionary_doc,_PyDict_Type,_length_hint_doc1121,__str381122,_dictiter_methods, -__str391123,__str401124,_PyDictIterKey_Type,__str411125,_PyDictIterValue_Type,__str421126,_PyDictIterItem_Type,__str431127,__str441128,_dictkeys_as_sequence,__str451129,__str461130,__str471131,__str481132,_dictviews_as_number,_dictkeys_methods,__str491133,_PyDictKeys_Type,_dictitems_as_sequence,_dictitems_methods,__str501134,_PyDictItems_Type,_dictvalues_as_sequence,_dictvalues_methods,__str511135,_PyDictValues_Type,__str1148,__str11149,__str21150,__PyImport_DynLoadFiletab,_nhandles,__str31151,__str41152, -_handles,__str51153,__str61154,__str1155,_kwlist_8307,__str11156,__str21157,_one_8464,_enum_doc,__str31158,_PyEnum_Type,__str41160,__str51161,__str61162,_reversed_cache_8637,__str71163,_reversed_doc,_length_hint_doc1164,__str81165,_reversediter_methods,_PyReversed_Type,_errno_methods,_errno__doc__,__str1167,__str11168,__str21169,__str31170,__str41171,__str51172,__str61173,__str71174,__str81175,__str91176,__str101177,__str111178,__str121179,__str131180,__str141181,__str151182,__str161183,__str171184, -__str181185,__str191186,__str201187,__str211188,__str221189,__str231190,__str241191,__str251192,__str261193,__str271194,__str281195,__str291196,__str301197,__str311198,__str321199,__str331200,__str341201,__str351202,__str361203,__str371204,__str381205,__str391206,__str401207,__str411208,__str421209,__str431210,__str441211,__str451212,__str461213,__str471214,__str481215,__str491216,__str501217,__str511218,__str521219,__str531220,__str541221,__str551222,__str561223,__str571224,__str581225,__str591226, -__str601227,__str611228,__str621229,__str631230,__str641231,__str651232,__str661233,__str671234,__str681235,__str691236,__str701237,__str711238,__str721239,__str731240,__str741241,__str751242,__str761243,__str771244,__str781245,__str791246,__str801247,__str811248,__str821249,__str831250,__str841251,__str851252,__str861253,__str871254,__str881255,__str891256,__str901257,__str911258,__str921259,__str931260,__str941261,__str951262,__str961263,__str971264,__str981265,__str991266,__str1001267,__str1011268, -__str1021269,__str1031270,__str1041271,__str1051272,__str1061273,__str1071274,__str1081275,__str1091276,__str1101277,__str1111278,__str1121279,__str1131280,__str1141281,__str1151282,__str1161283,__str1171284,__str1181285,__str1191286,__str1201287,__str1211288,__str1221289,__str1231290,__str1292,__str11293,__str21294,__str31295,__str41296,__str51297,__str61298,__str71299,__str81300,__str91301,__str101302,__str111303,__str121304,__str131305,__str141306,__str151307,__str161308,__str171309,__str181310, -__str191311,__str201312,__str211313,__str221314,__str231315,__str241316,_exceptions_doc,__str1334,_PyExc_TypeError,__str11336,__str21337,__str31338,__str41339,_BaseException_methods,_PyExc_DeprecationWarning,__str51341,__str61342,_BaseException_as_sequence,__str71343,__str81344,__str91345,__str101346,_PyExc_AttributeError,__str111348,__str121349,__str131350,__str141351,_BaseException_getset,__str151352,__str161353,__PyExc_BaseException,_PyExc_BaseException,__str171354,__str181355,__PyExc_Exception, -_PyExc_Exception,__str191357,__str201358,__PyExc_StandardError,_PyExc_StandardError,__str211359,__str221360,__PyExc_TypeError,__str231361,__str241362,__PyExc_StopIteration,_PyExc_StopIteration,__str251364,__str261365,__PyExc_GeneratorExit,_PyExc_GeneratorExit,__str271366,__str281367,_SystemExit_members,__str291368,__str301369,__PyExc_SystemExit,_PyExc_SystemExit,__str311370,__str321371,__PyExc_KeyboardInterrupt,_PyExc_KeyboardInterrupt,__str331373,__str341374,__PyExc_ImportError,_PyExc_ImportError, -__str351376,__str361377,__str371378,__str381379,__str391380,__str401381,__str411382,__str421383,__str431384,_EnvironmentError_members,_EnvironmentError_methods,__str441385,__str451386,__PyExc_EnvironmentError,_PyExc_EnvironmentError,__str461387,__str471388,__PyExc_IOError,_PyExc_IOError,__str481390,__str491391,__PyExc_OSError,_PyExc_OSError,__str501392,__str511393,__PyExc_EOFError,_PyExc_EOFError,__str521395,__str531396,__PyExc_RuntimeError,_PyExc_RuntimeError,__str541398,__str551399,__PyExc_NotImplementedError, -_PyExc_NotImplementedError,__str561400,__str571401,__PyExc_NameError,_PyExc_NameError,__str581403,__str591404,__PyExc_UnboundLocalError,_PyExc_UnboundLocalError,__str601406,__str611407,__PyExc_AttributeError,_PyExc_IndexError,__str621409,__str631410,__str641411,__str651412,__str661413,__str671414,__str681415,__str691416,__str701417,__str711418,__str721419,__str731420,__str741421,__str751422,__str761423,_SyntaxError_members,__str771424,__str781425,__PyExc_SyntaxError,_PyExc_SyntaxError,__str791427, -__str801428,__PyExc_IndentationError,_PyExc_IndentationError,__str811429,__str821430,__PyExc_TabError,_PyExc_TabError,__str831431,__str841432,__PyExc_LookupError,_PyExc_LookupError,__str851434,__str861435,__PyExc_IndexError,__str871436,__str881437,__PyExc_KeyError,_PyExc_KeyError,__str891439,__str901440,__PyExc_ValueError,_PyExc_ValueError,__str911442,__str921443,__PyExc_UnicodeError,_PyExc_UnicodeError,__str931445,__str941446,__str951447,__str961448,__str971449,__str981450,__str991451,__str1001452, -__str1011453,__str1021454,__str1031455,__str1041456,__str1051457,__str1061458,_UnicodeError_members,__str1071459,__str1081460,__str1091461,__str1101462,__str1111463,__str1121464,__str1131465,__PyExc_UnicodeEncodeError,_PyExc_UnicodeEncodeError,__str1141467,__str1151468,__str1161469,__str1171470,__str1181471,__str1191472,__PyExc_UnicodeDecodeError,_PyExc_UnicodeDecodeError,__str1201474,__str1211475,__str1221476,__str1231477,__str1241478,__str1251479,__PyExc_UnicodeTranslateError,_PyExc_UnicodeTranslateError, -__str1261481,__str1271482,__str1281483,__PyExc_AssertionError,_PyExc_AssertionError,__str1291484,__str1301485,__PyExc_ArithmeticError,_PyExc_ArithmeticError,__str1311486,__str1321487,__PyExc_FloatingPointError,_PyExc_FloatingPointError,__str1331488,__str1341489,__PyExc_OverflowError,_PyExc_OverflowError,__str1351491,__str1361492,__PyExc_ZeroDivisionError,_PyExc_ZeroDivisionError,__str1371494,__str1381495,__PyExc_SystemError,_PyExc_SystemError,__str1391497,__str1401498,__PyExc_ReferenceError,_PyExc_ReferenceError, -__str1411499,__str1421500,__PyExc_MemoryError,_PyExc_MemoryError,__str1431502,__str1441503,__PyExc_BufferError,_PyExc_BufferError,__str1451505,__str1461506,__PyExc_Warning,_PyExc_Warning,__str1471507,__str1481508,__PyExc_UserWarning,_PyExc_UserWarning,__str1491509,__str1501510,__PyExc_DeprecationWarning,__str1511511,__str1521512,__PyExc_PendingDeprecationWarning,_PyExc_PendingDeprecationWarning,__str1531514,__str1541515,__PyExc_SyntaxWarning,_PyExc_SyntaxWarning,__str1551517,__str1561518,__PyExc_RuntimeWarning, -_PyExc_RuntimeWarning,__str1571519,__str1581520,__PyExc_FutureWarning,_PyExc_FutureWarning,__str1591521,__str1601522,__PyExc_ImportWarning,_PyExc_ImportWarning,__str1611523,__str1621524,__PyExc_UnicodeWarning,_PyExc_UnicodeWarning,__str1631525,__str1641526,__PyExc_BytesWarning,_PyExc_BytesWarning,_PyExc_MemoryErrorInst,_PyExc_RecursionErrorInst,_functions,__str1651530,__str1661531,__str1671532,__str1681533,__str1691534,__str1701535,__str1711536,__str1721537,__str1731538,__str1741539,__str1751540, -__str1761541,__str1771542,__str1781543,__str179,__str180,__str181,__str1821544,__str1831545,__str184,__str185,__str186,__str187,__str188,__str189,__str190,__str191,__str192,__str193,__str194,__str195,__str1961546,__str197,__str198,__str199,__str200,__str201,__str202,__str203,__str204,__str205,__str206,__str207,__str208,__str209,__str210,__str211,__str212,__str213,__str214,__str215,__str216,__str217,__str218,__str219,__str220,__str221,__str1553,__str11554,__str21555,__str31556,__str41557,__str51558, -__str61559,__str71560,__str81561,__str91562,__str101563,__str111564,__str121565,__str131566,__str141567,__str151568,__str161569,__str171570,__str181571,__str191572,__str201573,__str211574,__str221575,__str231576,__str241577,__str251578,__str261579,__str271580,__str281581,__str291582,__str301583,__str311584,__str321585,__str331586,__str341587,__str351588,__str361589,__str371590,__str381591,__str391592,__str401593,_readline_doc,_read_doc,_write_doc,_fileno_doc,_seek_doc,_truncate_doc,_tell_doc,_readinto_doc, -_readlines_doc,_xreadlines_doc,_writelines_doc,_flush_doc,_close_doc,_isatty_doc,_enter_doc,_exit_doc,__str411594,__str421595,__str431596,__str441597,__str451598,__str461599,__str471600,__str481601,__str491602,__str501603,__str511604,__str521605,__str531606,_file_methods,__str541607,__str551608,__str561609,__str571610,__str581611,__str591612,__str601613,__str611614,_file_memberlist,__str621615,__str631616,__str641617,__str651618,__str661619,__str671620,__str681621,__str691622,__str701623,__str711624, -__str721625,__str731626,__str741627,_file_getsetlist,_not_yet_string_10508,__str751628,__str761629,__str771630,_kwlist_10547,__str781631,__str791632,_file_doc,__str801633,_PyFile_Type,__str811635,__str821636,__str831637,__str841638,__str851639,__str1647,__str11648,_dummy_8427,__str21649,__str31650,__str41651,__str51652,__str61653,__str71654,__str81655,__str91656,_block_list,_free_list1657,_FloatInfoType,_floatinfo__doc__,__str1658,__str11659,__str21660,__str31661,__str41662,__str51663,__str61664, -__str71665,__str81666,__str91667,__str101668,__str111669,__str121670,__str131671,__str141672,__str151673,__str161674,__str171675,__str181676,__str191677,__str201678,__str211679,_floatinfo_fields,_floatinfo_desc,__str221680,__str231681,__str241682,__str251683,__str261684,__str271685,__str281686,__str291687,__str301688,__str311689,__str321690,__str331691,__str341692,__str351693,__str371695,__str381696,__str391697,__str401698,_float_hex_doc,__str411699,__str421700,__str431701,__str441702,__str451703, -__str461704,__str471705,_float_fromhex_doc,__str481706,__str491707,_float_as_integer_ratio_doc,__str501708,_kwlist_10262,__str511709,__str521710,__str531711,_double_format,__str541712,_float_format,__str551713,__str571715,__str581716,__str591717,_float_getformat_doc,__str601718,_detected_double_format,_detected_float_format,__str611719,__str621720,__str631721,_float_setformat_doc,__str641722,__str651723,_float__format__doc,__str661724,__str671725,__str681726,__str691727,__str701728,__str711729,__str721730, -__str731731,__str741732,__str751733,__str761734,__str771735,__str781736,_float_methods,__str791737,__str801738,__str811739,__str821740,_float_getset,_float_doc,_float_as_number,_PyFloat_Type,__str831742,__str841743,__str851744,__str861745,__str871746,__str881747,__str891748,__str901749,__str911750,__str921751,__str931752,__str941753,__str951754,__str1759,__str11760,__str21761,__str31762,__str41763,_no_grouping,__str51764,__str61765,__str71766,__str81767,__str91768,__str101769,__str111770,__str121771, -__str131772,__str141773,__str151774,__str161775,__str171776,__str181777,__str191778,__str1781,__str11782,__str21783,__str31784,__str41785,__str51786,__str61787,__str71788,__str81789,__str91790,__str1800,__str11801,__str21802,__str31803,__str41804,_frame_memberlist,__str51805,__str61806,__str71807,__str81808,__str91809,__str101810,__str111811,__str121812,__str131813,__str141814,__str151815,__str161816,__str171817,__str181818,__str191819,__str201820,__str211821,_frame_getsetlist,_free_list1822,_numfree1823, -_sizeof__doc__1824,__str221825,_frame_methods,__str231826,_PyFrame_Type,__str241827,_builtin_object,__str251828,__str261829,__str271830,__str281831,__str1838,__str11839,_stdin,_stdout,__str21840,__str31841,__str41842,__str51843,_M___hello__,__PyImport_FrozenModules,__str1844,__str11845,__str21846,_PyImport_FrozenModules,___name___8324,__str1847,__str11848,__str21849,__str31850,__str41851,__str51852,__str61853,__str71854,__str81855,__str91856,__str101857,__str111858,_func_memberlist,__str121859,__str131860, -__str141861,__str151862,__str161863,__str171864,__str181865,__str191866,__str201867,__str211868,__str221869,__str231870,__str241871,__str251872,_func_getsetlist,_func_doc,__str261873,_kwlist_8728,__str271874,__str281875,__str291876,__str301877,__str311878,__str321879,__str331880,__str341881,__str351882,__str361883,__str371884,__str381885,__str391886,_PyFunction_Type,__str401888,__str411889,__str421890,_cm_memberlist,_classmethod_doc,_PyClassMethod_Type,__str431892,__str441893,_sm_memberlist,_staticmethod_doc, -_PyStaticMethod_Type,__str1898,__str11899,__str21900,__str31901,__str41902,__str51903,__str61904,__str71905,__str81906,__str91907,_future_9164,__str101908,__str111909,_generations,__PyGC_generation0,_enabled_b,_collecting_b,_garbage,_gc_str,_delstr,_long_lived_total,_long_lived_pending,_tmod,__str1912,__str11913,_debug,__str21914,__str31915,__str41916,__str51917,__str61918,__str71919,__str81920,__str91921,__str101922,__str111923,__str121924,__str131925,__str141926,__str151927,__str161928,__str171929, -__str181930,_gc_enable__doc__,_gc_disable__doc__,_gc_isenabled__doc__,_gc_collect__doc__,__str191931,_keywords_8967,__str201932,__str211933,_gc_set_debug__doc__,__str221934,_gc_get_debug__doc__,__str231935,_gc_set_thresh__doc__,__str241936,_gc_get_thresh__doc__,__str251937,_gc_get_count__doc__,_gc_get_referrers__doc__,_gc_get_referents__doc__,_gc_get_objects__doc__,_gc_is_tracked__doc__,_gc__doc__,__str261938,__str271939,__str281940,__str291941,__str301942,__str311943,__str321944,__str331945,__str341946, -__str351947,__str361948,__str371949,__str381950,_GcMethods,__str391951,__str401952,__str411953,__str421954,__str431955,__str441956,__str451957,__str461958,__str471959,__str481960,__str1967,__str11968,__str21969,_send_doc,_close_doc1970,__str31971,_throw_doc,__str41972,__str51973,__str61974,__str71975,__str81976,_gen__name__doc__,__str91977,_gen_getsetlist,__str101978,__str111979,__str121980,_gen_memberlist,__str131981,__str141982,_gen_methods,__str151983,_PyGen_Type,__str1987,__str11988,__str21989, -__str31990,__str41991,__str51992,__str61993,__str71994,__str81995,__str91996,__str101997,__str111998,__str121999,__str132000,__str142001,__str152002,__str162003,__str172004,__str182005,__str192006,__str202007,__str212008,__str222009,__str232010,__str242011,__str252012,__str262013,__str272014,__str282015,__str292016,__str302017,__str312018,__str322019,__str332020,__str342021,__str352022,__str362023,__str372024,__str382025,__str392026,__str402027,__str412028,__str422029,__str432030,__str442031,__str452032, -__str462033,__str472034,__str482035,__str492036,__str502037,__str512038,__str522039,__str532040,__str542041,__str552042,__str562043,__str572044,__str582045,__str592046,__str602047,__str612048,__str622049,__str632050,__str642051,__str652052,__str662053,__str672054,__str682055,__str692056,__str702057,__str712058,__str722059,__str732060,__str742061,__str752062,__str762063,__str772064,__str782065,__str792066,__str802067,__str812068,__str822069,__str832070,__str842071,__str852072,__str862073,__str872074, -__str882075,__str892076,__str902077,__str912078,__str922079,__str932080,__str942081,__str952082,__str2090,__str12091,__str22092,_buildinfo_8294,__str32093,__str42094,__str52095,_svnversion_8313,__str72097,__str2098,_cprt,__PyOS_opterr,__PyOS_optind,__PyOS_optarg,_opt_ptr_1726,__str2100,__str12101,__str22102,__str32103,__str42104,__str52105,__str62106,__str72107,_module_search_path,_lib_python,__str2108,__str12109,__str22110,_prefix,__str32111,__str42112,__str52113,__str62114,__str72115,_exec_prefix, -__str82116,__str92117,__str102118,__str112119,_progpath,__str122120,__str132121,__str142122,__str152123,__str162124,__str172125,__str182126,_delimiter_8478,_separator_8479,__str2127,_version_8294,__str2128,__str12129,_arcs_0_0,_arcs_0_1,_arcs_0_2,_states_0,_arcs_1_0,_arcs_1_1,_states_1,_arcs_2_0,_arcs_2_1,_arcs_2_2,_states_2,_arcs_3_0,_arcs_3_1,_arcs_3_2,_arcs_3_3,_arcs_3_4,_arcs_3_5,_arcs_3_6,_states_3,_arcs_4_0,_arcs_4_1,_states_4,_arcs_5_0,_arcs_5_1,_arcs_5_2,_states_5,_arcs_6_0,_arcs_6_1,_arcs_6_2, -_arcs_6_3,_arcs_6_4,_arcs_6_5,_states_6,_arcs_7_0,_arcs_7_1,_arcs_7_2,_arcs_7_3,_states_7,_arcs_8_0,_arcs_8_1,_arcs_8_2,_arcs_8_3,_arcs_8_4,_arcs_8_5,_arcs_8_6,_arcs_8_7,_arcs_8_8,_arcs_8_9,_states_8,_arcs_9_0,_arcs_9_1,_arcs_9_2,_arcs_9_3,_states_9,_arcs_10_0,_arcs_10_1,_arcs_10_2,_states_10,_arcs_11_0,_arcs_11_1,_states_11,_arcs_12_0,_arcs_12_1,_arcs_12_2,_arcs_12_3,_states_12,_arcs_13_0,_arcs_13_1,_states_13,_arcs_14_0,_arcs_14_1,_arcs_14_2,_arcs_14_3,_arcs_14_4,_arcs_14_5,_states_14,_arcs_15_0, -_arcs_15_1,_states_15,_arcs_16_0,_arcs_16_1,_arcs_16_2,_arcs_16_3,_arcs_16_4,_arcs_16_5,_arcs_16_6,_arcs_16_7,_arcs_16_8,_states_16,_arcs_17_0,_arcs_17_1,_arcs_17_2,_states_17,_arcs_18_0,_arcs_18_1,_states_18,_arcs_19_0,_arcs_19_1,_states_19,_arcs_20_0,_arcs_20_1,_states_20,_arcs_21_0,_arcs_21_1,_states_21,_arcs_22_0,_arcs_22_1,_arcs_22_2,_states_22,_arcs_23_0,_arcs_23_1,_states_23,_arcs_24_0,_arcs_24_1,_arcs_24_2,_arcs_24_3,_arcs_24_4,_arcs_24_5,_arcs_24_6,_states_24,_arcs_25_0,_arcs_25_1,_states_25, -_arcs_26_0,_arcs_26_1,_arcs_26_2,_states_26,_arcs_27_0,_arcs_27_1,_arcs_27_2,_arcs_27_3,_arcs_27_4,_arcs_27_5,_arcs_27_6,_arcs_27_7,_states_27,_arcs_28_0,_arcs_28_1,_arcs_28_2,_arcs_28_3,_states_28,_arcs_29_0,_arcs_29_1,_arcs_29_2,_arcs_29_3,_states_29,_arcs_30_0,_arcs_30_1,_arcs_30_2,_states_30,_arcs_31_0,_arcs_31_1,_states_31,_arcs_32_0,_arcs_32_1,_states_32,_arcs_33_0,_arcs_33_1,_arcs_33_2,_states_33,_arcs_34_0,_arcs_34_1,_arcs_34_2,_arcs_34_3,_arcs_34_4,_arcs_34_5,_arcs_34_6,_states_34,_arcs_35_0, -_arcs_35_1,_arcs_35_2,_arcs_35_3,_arcs_35_4,_states_35,_arcs_36_0,_arcs_36_1,_states_36,_arcs_37_0,_arcs_37_1,_arcs_37_2,_arcs_37_3,_arcs_37_4,_arcs_37_5,_arcs_37_6,_arcs_37_7,_states_37,_arcs_38_0,_arcs_38_1,_arcs_38_2,_arcs_38_3,_arcs_38_4,_arcs_38_5,_arcs_38_6,_arcs_38_7,_states_38,_arcs_39_0,_arcs_39_1,_arcs_39_2,_arcs_39_3,_arcs_39_4,_arcs_39_5,_arcs_39_6,_arcs_39_7,_arcs_39_8,_arcs_39_9,_states_39,_arcs_40_0,_arcs_40_1,_arcs_40_2,_arcs_40_3,_arcs_40_4,_arcs_40_5,_arcs_40_6,_arcs_40_7,_arcs_40_8, -_arcs_40_9,_arcs_40_10,_arcs_40_11,_arcs_40_12,_states_40,_arcs_41_0,_arcs_41_1,_arcs_41_2,_arcs_41_3,_arcs_41_4,_states_41,_arcs_42_0,_arcs_42_1,_arcs_42_2,_arcs_42_3,_states_42,_arcs_43_0,_arcs_43_1,_arcs_43_2,_arcs_43_3,_arcs_43_4,_states_43,_arcs_44_0,_arcs_44_1,_arcs_44_2,_arcs_44_3,_arcs_44_4,_states_44,_arcs_45_0,_arcs_45_1,_arcs_45_2,_arcs_45_3,_arcs_45_4,_states_45,_arcs_46_0,_arcs_46_1,_states_46,_arcs_47_0,_arcs_47_1,_arcs_47_2,_arcs_47_3,_arcs_47_4,_states_47,_arcs_48_0,_arcs_48_1,_arcs_48_2, -_arcs_48_3,_arcs_48_4,_arcs_48_5,_states_48,_arcs_49_0,_arcs_49_1,_states_49,_arcs_50_0,_arcs_50_1,_states_50,_arcs_51_0,_arcs_51_1,_arcs_51_2,_states_51,_arcs_52_0,_arcs_52_1,_states_52,_arcs_53_0,_arcs_53_1,_arcs_53_2,_arcs_53_3,_states_53,_arcs_54_0,_arcs_54_1,_states_54,_arcs_55_0,_arcs_55_1,_states_55,_arcs_56_0,_arcs_56_1,_states_56,_arcs_57_0,_arcs_57_1,_states_57,_arcs_58_0,_arcs_58_1,_states_58,_arcs_59_0,_arcs_59_1,_states_59,_arcs_60_0,_arcs_60_1,_arcs_60_2,_states_60,_arcs_61_0,_arcs_61_1, -_arcs_61_2,_arcs_61_3,_states_61,_arcs_62_0,_arcs_62_1,_arcs_62_2,_arcs_62_3,_arcs_62_4,_arcs_62_5,_arcs_62_6,_arcs_62_7,_arcs_62_8,_arcs_62_9,_arcs_62_10,_states_62,_arcs_63_0,_arcs_63_1,_arcs_63_2,_arcs_63_3,_arcs_63_4,_states_63,_arcs_64_0,_arcs_64_1,_arcs_64_2,_arcs_64_3,_arcs_64_4,_states_64,_arcs_65_0,_arcs_65_1,_arcs_65_2,_arcs_65_3,_arcs_65_4,_states_65,_arcs_66_0,_arcs_66_1,_arcs_66_2,_arcs_66_3,_arcs_66_4,_arcs_66_5,_arcs_66_6,_states_66,_arcs_67_0,_arcs_67_1,_arcs_67_2,_states_67,_arcs_68_0, -_arcs_68_1,_arcs_68_2,_arcs_68_3,_arcs_68_4,_arcs_68_5,_arcs_68_6,_states_68,_arcs_69_0,_arcs_69_1,_arcs_69_2,_states_69,_arcs_70_0,_arcs_70_1,_arcs_70_2,_states_70,_arcs_71_0,_arcs_71_1,_arcs_71_2,_states_71,_arcs_72_0,_arcs_72_1,_arcs_72_2,_arcs_72_3,_arcs_72_4,_arcs_72_5,_arcs_72_6,_arcs_72_7,_arcs_72_8,_arcs_72_9,_arcs_72_10,_states_72,_arcs_73_0,_arcs_73_1,_arcs_73_2,_arcs_73_3,_arcs_73_4,_arcs_73_5,_arcs_73_6,_arcs_73_7,_states_73,_arcs_74_0,_arcs_74_1,_arcs_74_2,_arcs_74_3,_arcs_74_4,_arcs_74_5, -_arcs_74_6,_arcs_74_7,_states_74,_arcs_75_0,_arcs_75_1,_arcs_75_2,_arcs_75_3,_states_75,_arcs_76_0,_arcs_76_1,_states_76,_arcs_77_0,_arcs_77_1,_arcs_77_2,_arcs_77_3,_arcs_77_4,_arcs_77_5,_states_77,_arcs_78_0,_arcs_78_1,_arcs_78_2,_arcs_78_3,_states_78,_arcs_79_0,_arcs_79_1,_states_79,_arcs_80_0,_arcs_80_1,_arcs_80_2,_arcs_80_3,_arcs_80_4,_arcs_80_5,_states_80,_arcs_81_0,_arcs_81_1,_arcs_81_2,_arcs_81_3,_states_81,_arcs_82_0,_arcs_82_1,_states_82,_arcs_83_0,_arcs_83_1,_states_83,_arcs_84_0,_arcs_84_1, -_arcs_84_2,_states_84,_dfas,__str2131,__str12132,__str22133,__str32134,__str42135,__str52136,__str62137,__str72138,__str82139,__str92140,__str102141,__str112142,__str122143,__str132144,__str142145,__str152146,__str162147,__str172148,__str182149,__str192150,__str202151,__str212152,__str222153,__str232154,__str242155,__str252156,__str262157,__str272158,__str282159,__str292160,__str302161,__str312162,__str322163,__str332164,__str342165,__str352166,__str362167,__str372168,__str382169,__str392170,__str402171, -__str412172,__str422173,__str432174,__str442175,__str452176,__str462177,__str472178,__str482179,__str492180,__str502181,__str512182,__str522183,__str532184,__str542185,__str552186,__str562187,__str572188,__str582189,__str592190,__str602191,__str612192,__str622193,__str632194,__str642195,__str652196,__str662197,__str672198,__str682199,__str692200,__str702201,__str712202,__str722203,__str732204,__str742205,__str752206,__str762207,__str772208,__str782209,__str792210,__str802211,__str812212,__str822213, -__str832214,__str842215,__str852216,__str862217,__str872218,__str882219,__str892220,__str902221,__str912222,__str922223,__str932224,__str942225,__str952226,__str962227,__str972228,__str982229,__str992230,__str1002231,__str1012232,__str1022233,__str1032234,__str1042235,__str1052236,__str1062237,__str1072238,__str1082239,__str1092240,__str1102241,__str1112242,__str1122243,__str1132244,__str1142245,__str1152246,__str1162247,__str1172248,__str1182249,__str1192250,__str1202251,__str1212252,__str1222253, -__str1232254,__str1242255,__str1252256,__str1262257,__str1272258,__str1282259,__str1292260,__str1302261,_labels,__str1312262,__str1322263,__str1332264,__str1342265,__str1352266,__str1362267,__str1372268,__str1382269,__str1392270,__str1402271,__str1412272,__str1422273,__str1432274,__str1442275,__str1452276,__str1462277,__str1472278,__str1482279,__str1492280,__str1502281,__str1512282,__str1522283,__str1532284,__str1542285,__str1552286,__str1562287,__str1572288,__str1582289,__str1592290,__str1602291, -__str1612292,__str1622293,__PyParser_Grammar,__str2294,_buf_8408,__str12295,__str22296,__str2299,__str12300,__str22301,__str32302,__str42303,__str52304,__str62305,__str72306,__str82307,__str92308,__str102309,__str112310,__str122311,__str132312,__str142313,__str152314,__str162315,__str2317,__str12318,__str22319,__str32320,_pyc_magic_b,_extensions,_PyImport_Inittab,__PyImport_Filetab,__str12322,__str22323,__str32324,__PyImport_StandardFiletab,__str42325,__str52326,__str62327,__str72328,__str82329,__str92330, -__str102331,__str112332,__str122333,__str132334,__str142335,__str152336,__str162337,_sys_deletes,__str172338,__str182339,__str192340,__str202341,__str212342,__str222343,__str232344,__str242345,__str252346,__str262347,__str272348,__str282349,__str292350,_sys_files,__str302351,__str312352,__str322353,__str332354,__str342355,__str352356,__str362357,__str372358,__str382359,__str392360,__str402361,__str412362,__str422363,__str432364,__str442365,__str452366,__str462367,__str472368,__str482369,__str492370, -__str502371,__str512372,__str522373,__str532374,__str542375,__str552376,__str562377,__str572378,__str582379,__str592380,__str602381,__str612382,__str622383,__str632384,__str642385,__str652386,__str662387,__str672388,__str682389,__str692390,__str702391,_importhookdescr,__str712392,__str722393,__str732394,__str742395,__str752396,__str762397,__str772398,_fd_frozen_10256,__str782399,_fd_builtin_10257,__str792400,__str802401,__str812402,__str822403,_fd_package_10258,__str832404,__str842405,__str852406, -__str872408,__str882409,__str892410,__str902411,__str912412,__str922413,__str932414,__str942415,__str952416,__str962417,__str972418,__str982419,__str992420,__str1002421,__str1012422,__str1022423,__str1032424,__str1042425,__str1052426,__str1062427,_namestr_11013,__str1072428,_pathstr_11014,_pkgstr_11015,__str1082429,__str1092430,__str1102431,__str1112432,__str1122433,__str1132434,__str1142435,__str1152436,__str1162437,__str1172438,__str1182439,__str1192440,__str1202441,__str1212442,__str1222443,_silly_list_11619, -__str1232444,_import_str_11621,_builtins_str_11620,__str1242445,__str1252446,__str1262447,__str1272448,__str1282449,__str1292450,__str1302451,__str1312452,__str1322453,__str1332454,__str1342455,__str1352456,__str1362457,__str1372458,__str1382459,__str1392460,__str1402461,__str1412462,__str1422463,__str1432464,__str1442465,__str1452466,_doc_imp,_doc_reload,_doc_find_module,_doc_load_module,_doc_get_magic,_doc_get_suffixes,_doc_new_module,_doc_lock_held,_doc_acquire_lock,_doc_release_lock,__str1462467, -__str1472468,__str1482469,__str1492470,__str1502471,__str1512472,__str1522473,__str1532474,__str1542475,__str1552476,__str1562477,__str1572478,__str1582479,__str1592480,__str1602481,__str1612482,_imp_methods,__str1622483,__str1632484,__str1642485,__str1652486,__str1662487,_NullImporter_methods,__str1672488,__str1682489,_PyNullImporter_Type,__str1692490,__str1702491,__str1712492,__str1722493,__str1732494,__str1742495,__str1752496,__str1762497,__str1772498,__str1782499,__str1792500,__str1802501,_our_copy_12226, -_block_list2511,_free_list2512,_small_ints,__str2513,__str12514,__str22515,__str32516,__str42517,__str52518,__str62519,__str72520,__str82521,__str92522,__str102523,__str112524,__str122525,_kwlist_9642,__str132526,__str142527,__str152528,__str162529,__str172530,__str182531,_int_bit_length_doc,__str192532,__str202533,__str212534,__str222535,__str232536,__str242537,__str252538,_int_methods,__str262539,__str272540,__str282541,__str292542,__str302543,__str312544,__str322545,__str332546,_int_getset,_int_doc, -_int_as_number,__str342547,_PyInt_Type,__str352549,__str362550,__str372551,__str382552,__str392553,__str2565,__str12566,_length_hint_doc2567,__str22568,_seqiter_methods,__str32569,_PySeqIter_Type,__str42570,_PyCallIter_Type,_level,_atbol_b,__str2573,__str12574,_numfree2575,_free_list2576,__str2577,__str12578,_indexerr,__str22579,__str32580,__str42581,__str52582,__str62583,__str72584,__str82585,__str92586,__str102587,__str112588,__str122589,__str132590,__str142591,__str152592,__str162593,__str172594, -__str182595,_sortwrapper_doc,__str192596,_sortwrapper_type,__str202597,__str212598,_cmpwrapper_doc,__str222599,_cmpwrapper_type,__str232600,_kwlist_10412,__str242601,__str252602,__str262603,__str272604,__str282605,__str292606,_err_format_10677,__str302607,__str312608,__str322609,_kwlist_10924,__str332610,_getitem_doc,_reversed_doc2611,_sizeof_doc2612,_append_doc,_extend_doc,_insert_doc,_pop_doc,_remove_doc,_index_doc,_count_doc,_reverse_doc,_sort_doc,__str342613,__str352614,__str362615,__str372616, -__str382617,__str392618,__str402619,__str412620,__str422621,__str432622,__str442623,_list_methods,_list_as_sequence,_list_doc,__str452624,__str462625,__str472626,_list_as_mapping,__str482627,_PyList_Type,_length_hint_doc2629,__str492630,_listiter_methods,__str502631,_PyListIter_Type,_listreviter_methods,__str512632,_PyListRevIter_Type,__str2643,__str12644,__str22645,__str32646,__str42647,__str52648,__str62649,__str72650,__str82651,__str92652,__str102653,__str112654,__str122655,__str132656,__str142657, -_BitLengthTable2658,__str152659,__PyLong_DigitValue,__str162660,__str172661,_log_base_PyLong_BASE_9958,_convmultmax_base_9960,_convwidth_base_9959,__str182662,__str192663,_half_even_correction_10608,__str202664,__str212665,__str222666,__str232667,__str242668,__str252669,__str262670,__str272671,__str282672,__str292673,_kwlist_13776,__str302674,__str312675,__str322676,__str332677,__str342678,__str352679,_long_bit_length_doc,__str362680,__str372681,__str382682,__str392683,__str402684,__str412685,__str422686, -__str432687,__str442688,_long_methods,__str452689,__str462690,__str472691,__str482692,__str492693,__str502694,__str512695,__str522696,_long_getset,_long_doc,_long_as_number,__str532697,_PyLong_Type,_long_info__doc__,_long_info_fields,__str542699,__str552700,__str562701,__str572702,_long_info_desc,__str582703,_Long_InfoType,__str2722,__str12723,__str22724,__str32725,__str42726,__str52727,__str62728,__str72729,__str82730,__str92731,__str102732,__str112733,__str122734,__str132735,__str142736,__str152737, -__str162738,__str172739,__str182740,__str192741,__str202742,__str212743,_dump_doc,__str222744,_load_doc,__str232745,_dumps_doc,__str242746,_loads_doc,__str252747,__str262748,__str272749,__str282750,_marshal_methods,_marshal_doc,__str292751,__str302752,__str2759,_memory_doc,__str12761,__str22762,__str32763,_kwlist_8402,__str42764,__str52765,__str62766,__str72767,__str82768,__str92769,__str102770,__str112771,__str122772,__str132773,_memory_getsetlist,__str152775,__str162776,__str172777,__str182778, -_memory_methods,__str192779,__str202780,__str212781,__str222782,__str232783,__str242784,__str252785,__str262786,_memory_as_mapping,_memory_as_sequence,_memory_as_buffer,__str272787,_PyMemoryView_Type,_arcs_0_02789,_arcs_0_12790,_states_02791,_arcs_1_02792,_arcs_1_12793,_arcs_1_2,_arcs_1_3,_arcs_1_4,_states_12794,_arcs_2_02795,_arcs_2_12796,_states_22797,_arcs_3_02798,_arcs_3_12799,_states_32800,_arcs_4_02801,_arcs_4_12802,_arcs_4_2,_arcs_4_3,_arcs_4_4,_states_42803,_arcs_5_02804,_arcs_5_12805,_arcs_5_22806, -_arcs_5_3,_states_52807,_dfas2808,__str2809,__str12810,__str22811,__str32812,__str42813,__str52814,__str62815,__str72816,__str82817,__str92818,_labels2819,__str102820,__PyParser_Grammar2821,_free_list2822,_numfree2823,__str2824,__str12825,__str22826,__str32827,__str42828,__str52829,__str62830,__str72831,__str82832,_meth_getsets,__str92833,_meth_members,__str102834,__str112835,__str122836,__str132837,_PyCFunction_Type,__str142839,__str152840,__Py_PackageContext,_api_version_warning,__str2845,__str12846, -__str22847,__str32848,__str42849,__str52850,__str62851,__str72852,__str82853,__str92854,__str102855,__str2864,_module_members,__str12865,__str22866,__str32867,__str42868,__str52869,__str62870,__str72871,__str82872,__str92873,__str102874,__str112875,_kwlist_8510,__str122876,__str132877,__str142878,__str152879,__str162880,_module_doc,__str172881,_PyModule_Type,_PyOS_InputHook,__str2887,__PyOS_ReadlineTState,__str12889,_PyOS_ReadlineFunctionPointer,_smallmax,_digitlimit,__str2894,__str12895,__str22896, -__str32897,__str42898,__str52899,__str62900,__str72901,__str82902,__str92903,__str102904,__str112905,__str122906,_unicodestr_8677,__str132907,__str142908,__str152909,__Py_SwappedOp,__Py_NotImplementedStruct,_tries_8972,__Py_NoneStruct,__str162913,__str172914,__str182915,_Py_Py3kWarningFlag,__str192917,__str202918,__str212919,__str222920,__str232921,__str242922,__str252923,__str262924,__str282926,__str292927,__str302928,__str312929,__str322930,__str332931,__str342932,__str352933,__str362934,__str372935, -__str382936,__str392937,__str402938,__str412939,__str422940,_dir_str_10462,__str432941,__str442942,__str452943,__str462944,_PyNone_Type,__str472945,__str482946,_PyNotImplemented_Type,__str492947,__str502948,__str512949,__str522950,__str532951,__str542952,__str552953,__str562954,__str572955,__str582956,__str592957,__str602958,__str612959,__str622960,__str632961,__str642962,__str652963,__str662964,__str672965,__str682966,__str692967,__str702968,__str712969,__str722970,__str732971,__str742972,__str752973, -__str762974,__str772975,__str782976,__str792977,__str802978,__str812979,__str822980,__str832981,__str842982,__str852983,__str862984,__str872985,__str882986,__str892987,__str902988,__str912989,__str922990,__Py_capsule_hack,__Py_cobject_hack,__Py_abstract_hack,__str932991,__PyTrash_delete_nesting,__PyTrash_delete_later,_Py_DivisionWarningFlag,__str3035,__str13036,__str23037,__str33038,__str43039,__str53040,__str63041,__str73042,__str3043,_Py_TabcheckFlag,__str13044,__str23045,__str3046,__str13047,__str23048, -__str3050,__str13051,_type_8534,__str23052,__str33053,__str43054,__str53055,__str63056,__str73057,__str83058,__str93059,__str103060,__str113061,__str123062,__str133063,__str143064,__str153065,__str163066,__str173067,__str183068,__str193069,__str203070,__str213071,__str223072,_posix__doc__,_environ,_stat_result__doc__,__str3073,__str13074,__str23075,__str33076,__str43077,__str53078,__str63079,__str73080,__str83081,__str93082,__str103083,__str113084,__str123085,__str133086,__str143087,__str153088,__str163089, -__str173090,__str183091,__str193092,__str203093,__str213094,__str223095,__str233096,__str243097,__str253098,__str263099,__str273100,__str283101,_stat_result_fields,_stat_result_desc,__str293102,_statvfs_result__doc__,__str303103,__str313104,__str323105,__str333106,__str343107,__str353108,__str363109,__str373110,__str383111,__str393112,_statvfs_result_fields,_statvfs_result_desc,__str403113,_structseq_new,__stat_float_times,_stat_float_times__doc__,__str413114,_StatResultType,_posix_access__doc__, -__str423115,_posix_ttyname__doc__,__str433116,_posix_ctermid__doc__,_posix_chdir__doc__,__str443117,_posix_fchdir__doc__,_posix_chmod__doc__,__str453118,_posix_fchmod__doc__,__str463119,_posix_chroot__doc__,__str473120,_posix_fsync__doc__,_posix_fdatasync__doc__,_posix_chown__doc__,__str483121,_posix_fchown__doc__,__str493122,_posix_lchown__doc__,__str503123,_posix_getcwd__doc__,_posix_getcwdu__doc__,__str513124,_posix_link__doc__,__str523125,_posix_listdir__doc__,__str533126,__str543127,_posix_mkdir__doc__, -__str553128,_posix_nice__doc__,__str563129,_posix_rename__doc__,__str573130,_posix_rmdir__doc__,__str583131,_posix_stat__doc__,__str593132,_posix_system__doc__,__str603133,_posix_umask__doc__,__str613134,_posix_unlink__doc__,_posix_remove__doc__,__str623135,_posix_uname__doc__,__str633136,_posix_utime__doc__,__str643137,__str653138,_posix__exit__doc__,__str663139,_posix_execv__doc__,__str673140,__str683141,__str693142,__str703143,__str713144,_posix_execve__doc__,__str723145,__str733146,__str743147, -__str753148,__str763149,__str773150,__str783151,__str793152,__str803153,__str813154,_posix_fork__doc__,__str823155,_posix_openpty__doc__,__str833156,_posix_forkpty__doc__,__str843157,_posix_getegid__doc__,_posix_geteuid__doc__,_posix_getgid__doc__,_posix_getpid__doc__,_posix_getgroups__doc__,_posix_initgroups__doc__,__str853158,_posix_getpgid__doc__,__str863159,_posix_getpgrp__doc__,_posix_setpgrp__doc__,_posix_getppid__doc__,_posix_getlogin__doc__,__str873160,_posix_getuid__doc__,_posix_kill__doc__, -__str883161,_posix_killpg__doc__,__str893162,_posix_popen__doc__,__str903163,__str913164,__str923165,__str933166,__str943167,__str953168,__str963169,_posix_setuid__doc__,__str973170,__str983171,_posix_seteuid__doc__,__str993172,_posix_setegid__doc__,__str1003173,_posix_setreuid__doc__,__str1013174,_posix_setregid__doc__,_posix_setgid__doc__,__str1023175,_posix_setgroups__doc__,__str1033176,__str1043177,__str1053178,_struct_rusage_11141,__str1063179,__str1073180,__str1083181,_posix_wait3__doc__,__str1093182, -_posix_wait4__doc__,__str1103183,_posix_waitpid__doc__,__str1113184,__str1123185,_posix_wait__doc__,_posix_lstat__doc__,__str1133186,_posix_readlink__doc__,__str1143187,_posix_symlink__doc__,__str1153188,_ticks_per_second,__str1163189,_posix_times__doc__,_posix_getsid__doc__,__str1173190,_posix_setsid__doc__,_posix_setpgid__doc__,__str1183191,_posix_tcgetpgrp__doc__,__str1193192,_posix_tcsetpgrp__doc__,__str1203193,_posix_open__doc__,__str1213194,_posix_close__doc__,__str1223195,_posix_closerange__doc__, -__str1233196,_posix_dup__doc__,__str1243197,_posix_dup2__doc__,__str1253198,_posix_lseek__doc__,__str1263199,_posix_read__doc__,__str1273200,_posix_write__doc__,__str1283201,_posix_fstat__doc__,__str1293202,_posix_fdopen__doc__,__str1303203,__str1313204,_posix_isatty__doc__,__str1323205,_posix_pipe__doc__,_posix_mkfifo__doc__,__str1333206,_posix_mknod__doc__,__str1343207,_posix_major__doc__,__str1353208,_posix_minor__doc__,__str1363209,_posix_makedev__doc__,__str1373210,_posix_ftruncate__doc__,__str1383211, -_posix_putenv__doc__,__str1393212,_posix_putenv_garbage,_posix_unsetenv__doc__,__str1403213,_posix_strerror__doc__,__str1413214,__str1423215,_posix_WCOREDUMP__doc__,__str1433216,_posix_WIFCONTINUED__doc__,__str1443217,_posix_WIFSTOPPED__doc__,__str1453218,_posix_WIFSIGNALED__doc__,__str1463219,_posix_WIFEXITED__doc__,__str1473220,_posix_WEXITSTATUS__doc__,__str1483221,__str1493222,_posix_WTERMSIG__doc__,__str1503223,_posix_WSTOPSIG__doc__,__str1513224,_StatVFSResultType,_posix_fstatvfs__doc__,__str1523225, -_posix_statvfs__doc__,__str1533226,_posix_tempnam__doc__,__str1543227,__str1553228,__str1563229,_posix_tmpfile__doc__,__str1573230,__str1583231,__str1593232,_posix_tmpnam__doc__,__str1603233,__str1613234,__str1623235,__str1633236,__str1643237,__str1653238,_posix_constants_pathconf,__str1663239,__str1673240,__str1683241,__str1693242,__str1703243,__str1713244,__str1723245,__str1733246,__str1743247,__str1753248,__str1763249,__str1773250,__str1783251,__str1793252,_posix_fpathconf__doc__,__str1803253, -_posix_pathconf__doc__,__str1813254,_posix_constants_confstr,__str1823255,__str1833256,__str1843257,__str1853258,__str1863259,__str1873260,__str1883261,__str1893262,__str1903263,__str1913264,__str1923265,__str1933266,__str1943267,__str1953268,__str1963269,__str1973270,__str1983271,__str1993272,__str2003273,__str2013274,__str2023275,__str2033276,__str2043277,__str2053278,__str2063279,_posix_confstr__doc__,__str2073280,_posix_constants_sysconf,__str2083281,__str2093282,__str2103283,__str2113284,__str2123285, -__str2133286,__str2143287,__str2153288,__str2163289,__str2173290,__str2183291,__str2193292,__str2203293,__str2213294,__str222,__str223,__str224,__str225,__str226,__str227,__str228,__str229,__str230,__str231,__str232,__str233,__str234,__str235,__str236,__str237,__str238,__str239,__str240,__str241,__str242,__str243,__str244,__str245,__str246,__str247,__str248,__str249,__str250,__str251,__str252,__str253,__str254,__str255,__str256,__str257,__str258,__str259,__str260,__str261,__str262,__str263,__str264, -__str265,__str266,__str267,__str268,__str269,__str270,__str271,__str272,__str273,__str274,__str275,__str276,__str277,__str278,__str279,__str2803295,__str281,__str282,__str283,__str284,__str285,__str286,__str287,__str288,__str2893296,__str290,__str291,__str292,__str293,__str294,__str295,__str296,__str2973297,__str298,__str299,__str300,__str301,__str302,__str303,__str304,__str305,__str306,__str307,__str308,__str309,__str310,__str311,__str312,__str313,__str314,__str315,__str316,__str317,__str318,__str319, -__str3203298,__str321,__str322,__str323,__str324,__str325,__str326,__str327,__str328,__str329,__str330,__str331,__str332,__str333,__str334,__str335,__str336,__str337,__str338,__str339,__str340,__str341,_posix_sysconf__doc__,__str342,__str343,__str344,__str345,_posix_abort__doc__,_posix_getloadavg__doc__,__str346,__str347,_posix_setresuid__doc__,__str348,_posix_setresgid__doc__,_posix_getresuid__doc__,__str349,_posix_getresgid__doc__,__str350,__str351,__str352,__str353,__str354,__str355,__str356,__str357, -__str358,__str359,__str360,__str361,__str362,__str363,__str364,__str365,__str366,__str367,__str368,__str369,__str370,__str371,__str372,__str373,__str374,__str375,__str376,__str377,__str378,__str379,__str380,__str381,__str382,__str383,__str384,__str385,__str386,__str387,__str388,__str389,__str390,__str391,__str392,__str393,__str394,__str395,__str396,__str397,__str3983299,__str399,__str400,__str401,__str402,__str403,__str404,__str405,__str406,__str407,__str408,__str409,__str410,__str411,__str412,__str413, -__str414,__str415,__str416,__str417,__str418,__str419,__str420,__str421,__str422,__str423,__str424,__str425,__str426,__str427,__str428,__str429,__str430,__str431,__str432,__str433,__str434,__str435,__str436,__str437,__str438,__str439,__str440,__str441,__str442,__str443,__str444,__str445,__str446,__str447,__str448,__str449,__str450,__str451,__str452,__str453,__str454,__str455,__str456,__str457,__str458,__str459,__str4603300,__str461,__str462,__str463,_posix_methods,__str464,__str465,__str466,__str467, -__str468,__str469,__str470,__str471,__str472,__str473,__str474,__str475,__str476,__str477,__str4783301,__str479,__str480,__str481,__str482,__str483,__str484,__str485,__str4863302,__str487,__str488,__str489,__str490,__str491,__str492,__str493,__str494,__str495,__str496,__str497,__str498,__str4993303,__str500,__str501,__str502,__str503,__str504,__str505,__str506,__str507,__str508,__str509,__str510,_initialized_b,__str511,__str512,__str3305,__str13306,__str23307,__str33308,__str43309,__str53310,__str63311, -__str73312,__str83313,__str93314,__str103315,__str113316,__str123317,__str133318,_struct_pwd_type_fields,_struct_passwd__doc__,_struct_pwd_type_desc,__str143319,_pwd__doc__,_StructPwdType,_pwd_getpwuid__doc__,__str153320,__str163321,_pwd_getpwnam__doc__,__str173322,__str183323,_pwd_getpwall__doc__,__str193324,__str203325,__str213326,_pwd_methods,__str223327,_initialized3328_b,__str233329,__str243330,__Py_ctype_table,__Py_ctype_tolower,__Py_ctype_toupper,_interp_head,__PyThreadState_Current,__PyThreadState_GetFrame, -__str3341,__str13342,__str23344,__str33345,__str43346,__str53347,__str63348,__str73349,__str83350,__str93351,__str3355,__str13356,__str23357,__str33358,__str43359,__str53360,__str63361,__str73362,__str83363,__str93364,__str103365,__str113366,__str123367,__str133368,__str143369,__str153370,__str163371,_Module_fields,__str3375,_Interactive_fields,_Expression_fields,_Suite_fields,_stmt_attributes,__str13376,__str23377,_FunctionDef_fields,__str33378,__str43379,__str53380,_ClassDef_fields,__str63381,_Return_fields, -__str73382,_Delete_fields,__str83383,_Assign_fields,_AugAssign_fields,__str93384,__str103385,_Print_fields,__str113386,__str123387,__str133388,_For_fields,__str143389,__str153390,_While_fields,__str163391,_If_fields,_With_fields,__str173392,__str183393,_Raise_fields,__str193394,__str203395,__str213396,_TryExcept_fields,__str223397,_TryFinally_fields,__str233398,_Assert_fields,__str243399,_Import_fields,__str253400,_ImportFrom_fields,__str263401,__str273402,_Exec_fields,__str283403,__str293404,_Global_fields, -_Expr_fields,_expr_attributes,_BoolOp_fields,_BinOp_fields,__str303405,__str313406,_UnaryOp_fields,__str323407,_Lambda_fields,_IfExp_fields,_Dict_fields,__str333408,_Set_fields,__str343409,_ListComp_fields,__str353410,__str363411,_SetComp_fields,_DictComp_fields,__str373412,_GeneratorExp_fields,_Yield_fields,_Compare_fields,__str383413,__str393414,_Call_fields,__str403415,__str413416,__str423417,__str433418,_Repr_fields,_Num_fields,__str443419,_Str_fields,__str453420,_Attribute_fields,__str463421, -__str473422,_Subscript_fields,__str483423,_Name_fields,__str493424,_List_fields,_Tuple_fields,_Slice_fields,__str503425,__str513426,__str523427,_ExtSlice_fields,__str533428,_Index_fields,_comprehension_fields,__str543429,_excepthandler_attributes,_ExceptHandler_fields,_arguments_fields,__str553430,__str563431,__str573432,_keyword_fields,__str583433,_alias_fields,__str593434,__str603435,__str613436,__str623437,__str633438,__str643439,__str653440,__str663441,__str673442,_ast_type_methods,__str683443, -_AST_type,__str693444,__str703445,__str713446,__str723447,__str733448,__str743449,_initialized_9602_b,__str753450,_mod_type,__str763451,_Module_type,__str773452,_Interactive_type,__str783453,_Expression_type,__str793454,_Suite_type,__str803455,_stmt_type,__str813456,_FunctionDef_type,__str823457,_ClassDef_type,__str833458,_Return_type,__str843459,_Delete_type,__str853460,_Assign_type,__str863461,_AugAssign_type,__str873462,_Print_type,__str883463,_For_type,__str893464,_While_type,__str903465,_If_type, -__str913466,_With_type,__str923467,_Raise_type,__str933468,_TryExcept_type,__str943469,_TryFinally_type,__str953470,_Assert_type,__str963471,_Import_type,__str973472,_ImportFrom_type,__str983473,_Exec_type,__str993474,_Global_type,__str1003475,_Expr_type,__str1013476,_Pass_type,__str1023477,_Break_type,__str1033478,_Continue_type,__str1043479,_expr_type,__str1053480,_BoolOp_type,__str1063481,_BinOp_type,__str1073482,_UnaryOp_type,__str1083483,_Lambda_type,__str1093484,_IfExp_type,__str1103485,_Dict_type, -__str1113486,_Set_type,__str1123487,_ListComp_type,__str1133488,_SetComp_type,__str1143489,_DictComp_type,__str1153490,_GeneratorExp_type,__str1163491,_Yield_type,__str1173492,_Compare_type,__str1183493,_Call_type,__str1193494,_Repr_type,__str1203495,_Num_type,__str1213496,_Str_type,__str1223497,_Attribute_type,__str1233498,_Subscript_type,__str1243499,_Name_type,__str1253500,_List_type,__str1263501,_Tuple_type,__str1273502,_expr_context_type,__str1283503,_Load_type,_Load_singleton,__str1293504,_Store_type, -_Store_singleton,__str1303505,_Del_type,_Del_singleton,__str1313506,_AugLoad_type,_AugLoad_singleton,__str1323507,_AugStore_type,_AugStore_singleton,__str1333508,_Param_type,_Param_singleton,_slice_type,__str1343509,_Ellipsis_type,__str1353510,_Slice_type,__str1363511,_ExtSlice_type,__str1373512,_Index_type,__str1383513,_boolop_type,__str1393514,_And_type,_And_singleton,__str1403515,_Or_type,_Or_singleton,__str1413516,_operator_type,__str1423517,_Add_type,_Add_singleton,__str1433518,_Sub_type,_Sub_singleton, -__str1443519,_Mult_type,_Mult_singleton,__str1453520,_Div_type,_Div_singleton,__str1463521,_Mod_type,_Mod_singleton,__str1473522,_Pow_type,_Pow_singleton,__str1483523,_LShift_type,_LShift_singleton,__str1493524,_RShift_type,_RShift_singleton,__str1503525,_BitOr_type,_BitOr_singleton,__str1513526,_BitXor_type,_BitXor_singleton,__str1523527,_BitAnd_type,_BitAnd_singleton,__str1533528,_FloorDiv_type,_FloorDiv_singleton,__str1543529,_unaryop_type,__str1553530,_Invert_type,_Invert_singleton,__str1563531, -_Not_type,_Not_singleton,__str1573532,_UAdd_type,_UAdd_singleton,__str1583533,_USub_type,_USub_singleton,__str1593534,_cmpop_type,__str1603535,_Eq_type,_Eq_singleton,__str1613536,_NotEq_type,_NotEq_singleton,__str1623537,_Lt_type,_Lt_singleton,__str1633538,_LtE_type,_LtE_singleton,__str1643539,_Gt_type,_Gt_singleton,__str1653540,_GtE_type,_GtE_singleton,__str1663541,_Is_type,_Is_singleton,__str1673542,_IsNot_type,_IsNot_singleton,__str1683543,_In_type,_In_singleton,__str1693544,_NotIn_type,_NotIn_singleton, -__str1703545,_comprehension_type,__str1713546,_excepthandler_type,__str1723547,_ExceptHandler_type,__str1733548,_arguments_type,__str1743549,_keyword_type,__str1753550,_alias_type,__str1763551,__str1773552,__str1783553,__str1793554,__str1803555,__str1813556,__str1823557,__str1833558,__str1843559,__str1853560,__str1863561,__str1873562,__str1883563,__str1893564,__str1903565,__str1913566,__str1923567,__str1933568,__str1943569,__str1953570,__str1963571,__str1973572,__str1983573,__str1993574,__str2003575, -__str2013576,__str2023577,__str2033578,__str2043579,__str2053580,__str2063581,__str2073582,__str2083583,__str2093584,__str2103585,__str2113586,__str2123587,__str2133588,__str2143589,__str2153590,__str2163591,__str2173592,__str2183593,__str2193594,__str2203595,__str2213596,__str2223597,__str2233598,__str2243599,__str2253600,__str2263601,__str2273602,__str2283603,__str2293604,__str2303605,__str2313606,__str2323607,__str2333608,__str2343609,__str2353610,__str2363611,__str2373612,__str2383613,__str2393614, -__str2403615,__str2413616,__str2423617,__str2433618,__str2443619,__str2453620,__str2463621,__str2473622,__str2483623,__str2493624,__str2503625,__str2513626,__str2523627,__str2533628,__str2543629,__str2553630,__str2563631,__str2573632,__str2583633,__str2593634,__str2603635,__str2613636,__str2623637,__str2633638,__str2643639,__str2653640,__str2663641,__str2673642,__str2683643,__str2693644,__str2703645,__str2713646,__str2723647,__str2733648,__str2743649,__str2753650,__str2763651,__str2773652,__str2783653, -__str2793654,__str2803655,__str2813656,__str2823657,__str2833658,__str2843659,__str2853660,__str2863661,__str2873662,__str2883663,__str2893664,__str2903665,__str2913666,__str2923667,__str2933668,__str2943669,__str2953670,__str2963671,__str2973672,__str2983673,__str2993674,__str3003675,__str3013676,__str3023677,__str3033678,__str3043679,__str3053680,__str3063681,__str3073682,__str3083683,__str3093684,__str3103685,__str3113686,__str3123687,__str3133688,__str3143689,__str3153690,__str3163691,__str3173692, -__str3183693,__str3193694,__str3203695,__str3213696,__str3223697,__str3233698,__str3243699,__str3253700,__str3263701,__str3273702,__str3283703,__str3293704,__str3303705,__str3313706,__str3323707,__str3333708,__str3343709,__str3353710,__str3363711,__str3373712,__str3383713,__str3393714,__str3403715,__str3413716,__str3423717,__str3433718,__str3443719,__str3453720,__str3463721,__str3473722,__str3483723,__str3493724,__str3503725,__str3513726,__str3523727,__str3533728,__str3543729,__str3553730,__str3563731, -__str3573732,__str3583733,__str3593734,__str3603735,__str3613736,__str3623737,__str3633738,__str3643739,__str3653740,__str3663741,__str3673742,__str3683743,__str3693744,__str3703745,__str3713746,__str3723747,__str3733748,__str3743749,__str3753750,__str3763751,__str3773752,__str3783753,__str3793754,__str3803755,__str3813756,__str3823757,__str3833758,__str3843759,__str3853760,__str3863761,__str3873762,__str3883763,__str3893764,__str3903765,__str3913766,__str3923767,__str3933768,__str3943769,__str3953770, -__str3963771,__str3973772,__str3983773,_Py_UseClassExceptionsFlag,_Py_UnicodeFlag,__Py_QnewFlag,_Py_NoUserSiteDirectory,__str3836,_initialized3837_b,_Py_IgnoreEnvironmentFlag,__str13839,_Py_DebugFlag,__str23841,_Py_VerboseFlag,__str33843,__str43844,_Py_DontWriteBytecodeFlag,__str53845,__str63846,__str73847,__str83848,__str93849,__str103850,__str113851,__str123852,__str133853,__str143854,__str153855,__str163856,__str173857,__str183858,__str193859,__str203860,_Py_NoSiteFlag,__str213861,__str223862, -__str233863,__str243864,__str253865,__str263866,__str273867,__str283868,__str293869,__str303870,__str313871,__str323872,__str333873,_progname,__str343874,_default_home,__str353875,__str363876,__str373877,__str383878,__str393879,__str403880,__str413881,__str423882,__str433883,__str443884,__str453885,__str463886,__str473887,__str483888,__str493889,__str503890,__str513891,__str523892,__str533893,__str543894,__str553895,__str563896,__str573897,__str583898,__str593899,__str603900,_Py_InspectFlag,__str613901, -__str623902,__str633903,__str643904,__str653905,__str663906,__str673907,__str683908,__str693909,__str703910,__str713911,__str723912,__str733913,__str743914,__str753915,__str763916,__str773917,__str783918,__str793919,__str803920,__str813921,__str823922,__str833923,__str843924,__str853925,__str863926,__str873927,__str883928,__str893929,__str903930,__str913931,__str923932,__str933933,__str943934,__str953935,__str963936,__str973937,__str983938,__str993939,_nexitfuncs,_exitfuncs,__str1003940,__str1013941, -_Py_InteractiveFlag,__str1023942,_Py_BytesWarningFlag,_Py_FrozenFlag,__str3957,__str13958,__str23959,__str33960,__str43961,_range_doc3962,__str53963,__str63964,__str73965,__str83966,__str93967,_range_as_sequence,_reverse_doc3968,__str103969,__str113970,_range_methods,__str123971,_PyRange_Type,_length_hint_doc3973,__str133974,_rangeiter_methods,__str143975,_Pyrangeiter_Type,__str153976,_dummy3978,_numfree3979,_free_list3980,__str3981,__str13982,__str23983,__str33984,__str43985,__str53986,__str63987, -_pop_doc3988,_length_hint_doc3989,__str73990,_setiter_methods,__str83991,__str93992,_PySetIter_Type,__str103993,_update_doc,__str113994,_emptyfrozenset,__str123995,__str133996,_copy_doc,_clear_doc,_union_doc,_intersection_doc,_intersection_update_doc,_isdisjoint_doc,_difference_update_doc,_difference_doc,_symmetric_difference_update_doc,_symmetric_difference_doc,_issubset_doc,_issuperset_doc,__str143997,__str153998,_add_doc,_contains_doc,_remove_doc3999,_discard_doc,__str164000,_reduce_doc4001,_sizeof_doc4002, -_set_as_sequence,__str174003,__str184004,__str194005,__str204006,__str214007,__str224008,__str234009,__str244010,__str254011,__str264012,__str274013,__str284014,__str294015,__str304016,__str314017,__str324018,__str334019,__str344020,__str354021,__str364022,_set_methods,_set_as_number,_set_doc,__str374023,_PySet_Type,_frozenset_methods,_frozenset_as_number,_frozenset_doc,__str384025,_PyFrozenSet_Type,__str394027,_wakeup_fd,_is_tripped,_old_siginthandler,_default_int_handler_doc,_Handlers,__str4034, -__str14035,_alarm_doc,_pause_doc,__str24036,__str34037,_IgnoreHandler,_DefaultHandler,__str44038,_signal_doc,__str54039,_getsignal_doc,__str64040,__str74041,_set_wakeup_fd_doc,__str84042,_ItimerError,_setitimer_doc,__str94043,_getitimer_doc,__str104044,__str114045,__str124046,__str134047,__str144048,__str154049,__str164050,__str174051,_signal_methods,_module_doc4052,__str184053,__str194054,__str204055,_IntHandler,__str214056,__str224057,__str234058,__str244059,__str254060,__str264061,__str274062, -__str284063,__str294064,__str304065,__str314066,__str324067,__str334068,__str344069,__str354070,__str364071,__str374072,__str384073,__str394074,__str404075,__str414076,__str424077,__str434078,__str444079,__str454080,__str464081,__str474082,__str484083,__str494084,__str504085,__str514086,__str524087,__str534088,__str544089,__str554090,__str564091,__str574092,__str584093,__str594094,__str604095,__str614096,__str4103,__str14104,_PyEllipsis_Type,__Py_EllipsisObject,__str24107,__str34108,__str44109,_slice_doc, -__str54110,__str64111,__str74112,__str84113,__str94114,__str104115,_slice_members,__str114116,_slice_indices_doc,__str124117,_reduce_doc4118,__str134119,__str144120,_slice_methods,__str154121,_PySlice_Type,_copyright,_sre_char_info,_sre_char_lower,__str4126,__str14127,__str24128,__str34129,__str44130,__str54131,__str64132,__str74133,__str84134,_kwlist_12764,__str94135,__str104136,__str114137,__str124138,_kwlist_12800,__str134139,__str144140,_kwlist_12964,__str154141,__str164142,__str174143,_kwlist_13116, -__str184144,__str194145,__str204146,__str214147,__str224148,_kwlist_13463,__str234149,__str244150,__str254151,__str264152,_kwlist_13481,__str274153,__str284154,_pattern_match_doc,_pattern_search_doc,_pattern_split_doc,_pattern_findall_doc,_pattern_finditer_doc,_pattern_sub_doc,_pattern_subn_doc,_pattern_doc,__str294155,__str304156,__str314157,__str324158,__str334159,__str344160,__str354161,__str364162,__str374163,_pattern_methods,__str384164,__str394165,__str404166,_pattern_members,__str414167,_Pattern_Type, -__str424168,__str434169,__str444170,__str454171,__str464172,__str474173,_kwlist_14326,__str484174,__str494175,_kwlist_14364,__str504176,__str514177,__str524178,__str534179,__str544180,__str554181,__str564182,__str574183,__str584184,_match_methods,__str594185,__str604186,__str614187,_match_getset,_match_members,__str624188,_Match_Type,_scanner_methods,_scanner_members,__str634189,_Scanner_Type,__str644190,__str654191,__str664192,__str674193,__functions,__str684194,__str694195,__str704196,__str714197, -__str4199,_nullstring,_characters,__str14200,__str24201,__str34202,__str44203,__str54204,__str64205,__str74206,__str84207,__str94208,__str104209,__str114210,__str124211,__str134212,__str144213,__str154214,_interned,__str164215,__str174216,__str184217,__str194218,__str204219,__str214220,__str224221,__str234222,__str244223,__str254224,__str264225,__str274226,__str294228,__str304229,__str314230,__str324231,__str334232,__str344233,__str354234,__str364235,__str374236,__str384237,__str394238,__str404239, -__str414240,__str424241,__str434242,__str444243,_string_as_sequence,_string_as_mapping,_string_as_buffer,_stripformat,__str454244,__str464245,__str474246,_split__doc__4247,__str484248,_partition__doc__4249,_rpartition__doc__4250,_rsplit__doc__4251,__str494252,_join__doc__,__str504253,__str514254,__str524255,_find__doc__4256,_index__doc__4257,__str534258,_rfind__doc__4259,_rindex__doc__4260,__str544261,_strip__doc__4262,_lstrip__doc__4263,_rstrip__doc__4264,_lower__doc__,_upper__doc__,_title__doc__, -_capitalize__doc__,_count__doc__4265,__str554266,_swapcase__doc__,_translate__doc__4267,__str564268,__str574269,__str584270,__str594271,_replace__doc__4272,__str604273,_startswith__doc__4274,__str614275,__str624276,_endswith__doc__4277,__str634278,__str644279,_encode__doc__4280,__str654281,_kwlist_13266,__str664282,__str674283,__str684284,_decode__doc__4285,__str694286,_kwlist_13307,__str704287,_expandtabs__doc__4288,__str714289,__str724290,_ljust__doc__4291,__str734292,_rjust__doc__4293,__str744294, -_center__doc__4295,__str754296,_zfill__doc__4297,__str764298,_isspace__doc__,_isalpha__doc__,_isalnum__doc__,_isdigit__doc__,_islower__doc__,_isupper__doc__,_istitle__doc__,_splitlines__doc__4299,__str774300,_sizeof__doc__4301,__str784302,__str794303,__str804304,__str814305,__str824306,__str834307,__str844308,__str854309,__str864310,__str874311,__str884312,__str894313,__str904314,__str914315,__str924316,_formatteriter_methods,__str934317,_PyFormatterIter_Type,_fieldnameiter_methods,__str944318,_PyFieldNameIter_Type, -_format__doc__,__str954319,__str964320,_p_format__doc__,__str974321,__str984322,__str994323,__str1004324,__str1014325,__str1024326,__str1034327,__str1044328,__str1054329,__str1064330,__str1074331,__str1084332,__str1094333,__str1104334,__str1114335,__str1124336,__str1134337,__str1144338,__str1154339,__str1164340,__str1174341,__str1184342,__str1194343,__str1204344,__str1214345,__str1224346,__str1234347,__str1244348,__str1254349,__str1264350,__str1274351,__str1284352,__str1294353,__str1304354,__str1314355, -__str1324356,__str1334357,__str1344358,_string_methods,__str1354359,_kwlist_15262,__str1364360,__str1374361,_basestring_doc,_string_as_number,__str1384362,_PyBaseString_Type,_string_doc,__str1394364,_PyString_Type,__str1404366,__str1414367,__str1424368,__str1444370,__str1454371,__str1464372,__str1474373,__str1484374,__str1494375,__str1504376,__str1514377,__str1524378,__str1534379,__str1544380,__str1554381,__str1574383,__str1584384,__str1594385,__str1604386,__str1614387,__str1624388,__str1634389,__str4437, -__str14438,__str24439,__str34440,__str44441,__str54442,__str64443,__str74444,__str84445,__str94446,__str104447,__str114448,_visible_length_key,_real_length_key,_unnamed_fields_key,_PyStructSequence_UnnamedField,__str4452,__str14453,__str24454,__str34455,_kwlist_8532,__str44456,__str54457,__str64458,__str74459,__str84460,__str94461,__str104462,__str114463,__str124464,_structseq_as_sequence,_structseq_as_mapping,__str134465,_structseq_methods,__struct_sequence_template,__str4469,__str14470,__str24471, -__str34472,__str44473,__str54474,__str64475,_symtable_methods,__str74476,__str84477,__str94478,__str104479,__str114480,__str124481,__str134482,__str144483,__str154484,__str164485,__str174486,__str184487,__str194488,__str204489,__str214490,__str224491,__str234492,__str244493,__str254494,__str264495,__str274496,__str284497,__str4499,__str14500,__str24501,__str34502,__str44503,__str54504,__str64505,__str74506,__str84507,__str94508,_ste_memberlist,__str104509,_PySTEntry_Type,_top,_lambda,_genexpr,_setcomp, -_dictcomp,__str114510,__str124511,__str134512,__str144513,__str154514,__str164515,__str174516,__str184517,__str194518,__str204519,__str214520,__str224521,__str234522,__str244523,__str254524,__str264525,__str274526,__str284527,__str294528,__str304529,__str314530,__str324531,__str4536,__str14537,__str24538,__str34539,__str44540,_displayhook_doc,__str54542,_excepthook_doc,__str64543,_exc_info_doc,__str74544,__str84545,__str94546,__str104547,_exc_clear_doc,__str114548,_exit_doc4549,_getdefaultencoding_doc, -__str124550,_setdefaultencoding_doc,_getfilesystemencoding_doc,_whatstrings,_whatnames_9004,__str134551,__str144552,__str154553,__str164554,__str174555,__str184556,__str194557,_settrace_doc,_gettrace_doc,_setprofile_doc,_getprofile_doc,__str204558,_setcheckinterval_doc,_getcheckinterval_doc,__str214559,__str224560,_setrecursionlimit_doc,_getrecursionlimit_doc,__str234561,_setdlopenflags_doc,_getdlopenflags_doc,__str244562,_kwlist_9277,__str254563,__str264564,_gc_head_size_9276,__str274565,_str__sizeof___9275, -__str284566,_getsizeof_doc,_getrefcount_doc,_getframe_doc,__str294567,__str304568,_current_frames_doc,_call_tracing_doc,__str314569,_callstats_doc,_sys_clear_type_cache__doc__,__str324570,__str334571,__str344572,__str354573,__str364574,__str374575,__str384576,__str394577,__str404578,__str414579,__str424580,__str434581,__str444582,__str454583,__str464584,__str474585,__str484586,__str494587,__str504588,__str514589,__str524590,__str534591,__str544592,_sys_methods,_warnoptions,_sys_doc,_svn_initialized_b, -_branch,__str554593,_shortbranch,__str564594,_svn_revision,_flags__doc__,_FlagsType,__str574595,__str584596,__str594597,__str604598,__str614599,__str624600,__str634601,__str644602,__str654603,__str664604,__str674605,__str684606,__str694607,__str704608,__str714609,__str724610,__str734611,__str744612,__str754613,__str764614,__str774615,__str784616,__str794617,__str804618,__str814619,__str824620,__str834621,__str844622,__str854623,_flags_fields,_flags_desc,__str864624,_version_info__doc__,_VersionInfoType, -__str874625,__str884626,__str894627,__str904628,__str914629,__str924630,__str934631,__str944632,__str954633,__str964634,_version_info_fields,_version_info_desc,__str974635,__str984636,__str994637,__str1004638,__str1014639,__str1024640,__str1034641,__str1044642,__str1054643,__str1064644,__str1074645,__str1084646,__str1094647,__str1104648,__str1114649,__str1124650,__str1134651,__str1144652,__str1154653,__str1164654,__str1174655,__str1184656,__str1194657,__str1204658,__str1214659,__str1224660,__str1234661, -__str1244662,__str1254663,__str1264664,__str1274665,__str1284666,__str1294667,__str1304668,__str1314669,__str1324670,__str1334671,__str1344672,__str1354673,__str1364674,__str1374675,__str1384676,__str1394677,__str1404678,__str1414679,__str1424680,__str1434681,_empty_argv_10134,__str1444682,__str1454683,__str1464684,__str1474685,__str1484686,__str1494687,__str1504688,__PyParser_TokenNames,__str4697,__str14698,__str24699,__str34700,__str44701,__str54702,__str64703,__str74704,__str84705,__str94706,__str104707, -__str114708,__str124709,__str134710,__str144711,__str154712,__str164713,__str174714,__str184715,__str194716,__str204717,__str214718,__str224719,__str234720,__str244721,__str254722,__str264723,__str274724,__str284725,__str294726,__str304727,__str314728,__str324729,__str334730,__str344731,__str354732,__str364733,__str374734,__str384735,__str394736,__str404737,__str414738,__str424739,__str434740,__str444741,__str454742,__str464743,__str474744,__str484745,__str494746,__str504747,__str514748,__str524749, -__str534750,__str544751,__str554752,__str564753,__str574754,__str584755,__str594756,__str604757,__str614758,__str624759,__str634760,__str644761,__str654762,__str664763,__str674764,__str684765,__str694766,__str704767,__str714768,_tabforms_9557,__str724769,__str734770,__str744771,__str754772,__str764773,__str774774,__str784775,__str4784,__str14785,__str24786,__str34787,_tb_memberlist,__str44788,_PyTraceBack_Type,__str54790,__str64791,__str74792,__str84793,__str94794,__str104795,__str114796,__str124797, -__str4800,_free_list4801,_numfree4802,__str14803,__str24804,__str34805,__str44806,__str54807,__str64808,__str74809,__str84810,__str94811,__str104812,__str114813,__str124814,__str134815,__str144816,_kwlist_9096,__str154817,_tuple_doc,_tuple_as_sequence,__str164818,__str174819,_index_doc4820,_count_doc4821,_sizeof_doc4822,__str184823,__str194824,__str204825,__str214826,_tuple_methods,_tuple_as_mapping,__str224827,_PyTuple_Type,_length_hint_doc4829,__str234830,_tupleiter_methods,__str244831,_PyTupleIter_Type, -_next_version_tag,_method_cache,__str4842,__str14843,__str24844,__str34845,__str44846,__str54847,__str64848,_type_members,__str74849,__str84850,__str94851,__str104852,__str114853,__str124854,__str134855,__str144856,__str154857,__str164858,__str174859,__str184860,__str194861,__str204862,__str214863,__str224864,__str234865,__str244866,__str254867,__str264868,_type_getsets,__str274869,__str284870,__str294871,__str304872,__str314873,__str324874,__str334875,__str344876,__str354877,__str364878,__str374879, -__str384880,__str394881,_mro_str_10175,__str404882,__str414883,__str424884,__str434885,__str444886,_dict_str_10398,__str454887,__str464888,__str474889,__str484890,__str494891,__str504892,__str514893,_subtype_getsets_full,_subtype_getsets_dict_only,_subtype_getsets_weakref_only,__str524894,__str534895,__str544896,__str554897,__str564898,__str574899,_kwlist_10693,__str584900,__str594901,__str604902,__str614903,__str624904,__str634905,__str644906,__str654907,__str664908,__str674909,__str684910,__str694911, -__str704912,__str714913,__str724914,__str744916,__str764918,_type_methods,_type_doc,_PyType_Type,__str774920,__str784921,__str794922,_comma_11740,__str804923,__str814924,__str824925,__str834926,__str844927,__str854928,__str864929,__str874930,__str884931,__str894932,__str904933,__str914934,__str924935,_object_getsets,_copyreg_str_12072,__str934936,__str944937,__str954938,__str964939,__str974940,__str984941,__str994942,__str1004943,__str1014944,__str1024945,__str1034946,__str1044947,__str1054948,__str1064949, -__str1074950,_object_subclasshook_doc,__str1084951,__str1094952,__str1114954,__str1124955,__str1134956,__str1144957,__str1154958,__str1164959,__str1174960,_object_methods,__str1184961,__str1194962,_PyBaseObject_Type,__str1204964,__str1214965,__str1224966,__str1234967,__str1244968,__str1254969,__str1264970,__str1274971,__str1284972,__str1294973,__str1304974,__str1314975,__str1324976,__str1334977,__str1344978,__str1354979,__str1364980,__str1374981,__str1384982,__str1394983,_tp_new_methoddef,__str1404984, -_len_str_15398,__str1414985,__str1424986,_getitem_str_15424,__str1434987,__str1444988,__str1454989,_getslice_str_15516,__str1464990,_delitem_str_15533,__str1474991,__str1484992,_setitem_str_15534,__str1494993,__str1504994,__str1514995,_delslice_str_15558,__str1524996,__str1534997,__str1544998,_setslice_str_15559,__str1554999,__str1565000,_contains_str_15598,_cache_str_15642,__str1575001,_delitem_str_15652,_setitem_str_15653,__str1585002,__str1595003,_rcache_str_15675,__str1605004,_cache_str_15674, -__str1615005,_rcache_str_15745,__str1625006,_cache_str_15744,__str1635007,_rcache_str_15815,__str1645008,_cache_str_15814,__str1655009,_rcache_str_15885,__str1665010,_cache_str_15884,__str1675011,_rcache_str_15955,__str1685012,_cache_str_15954,__str1695013,_rcache_str_16025,__str1705014,_cache_str_16024,__str1715015,_rcache_str_16099,__str1725016,_cache_str_16098,_pow_str_16169,__str1735017,_cache_str_16190,__str1745018,_cache_str_16197,__str1755019,_cache_str_16204,__str1765020,_nonzero_str_16213, -_len_str_16214,__str1775021,__str1785022,_index_str_16278,__str1795023,_cache_str_16285,__str1805024,_rcache_str_16294,__str1815025,_cache_str_16293,__str1825026,_rcache_str_16364,__str1835027,_cache_str_16363,__str1845028,_rcache_str_16434,__str1855029,_cache_str_16433,__str1865030,_rcache_str_16504,__str1875031,_cache_str_16503,__str1885032,_rcache_str_16574,__str1895033,_cache_str_16573,__str1905034,_coerce_str_16643,__str1915035,__str1925036,_cache_str_16762,__str1935037,_cache_str_16769,__str1945038, -_cache_str_16776,__str1955039,_cache_str_16783,__str1965040,_cache_str_16790,__str1975041,_cache_str_16798,__str1985042,_cache_str_16806,__str1995043,_cache_str_16814,__str2005044,_cache_str_16822,__str2015045,_cache_str_16830,__str2025046,_cache_str_16839,__str2035047,_cache_str_16847,__str2045048,_cache_str_16855,__str2055049,_cache_str_16863,__str2065050,_cache_str_16871,__str2075051,_cache_str_16879,__str2085052,_rcache_str_16888,__str2095053,_cache_str_16887,__str2105054,_rcache_str_16958,__str2115055, -_cache_str_16957,__str2125056,_cache_str_17027,__str2135057,_cache_str_17035,__str2145058,_cmp_str_17046,__str2155059,_repr_str_17133,__str2165060,_str_str_17155,_hash_str_17174,_eq_str_17175,_cmp_str_17176,__str2175061,_call_str_17246,__str2185062,_getattribute_str_17266,_getattr_str_17307,__str2195063,_getattribute_str_17306,_delattr_str_17372,_setattr_str_17373,_name_op5064,__str2205065,__str2215066,__str2225067,__str2235068,__str2245069,_op_str_17399,__str2255070,_iter_str_17475,_getitem_str_17476, -__str2265071,__str2275072,_next_str_17518,_get_str_17529,__str2285073,__str2295074,_del_str_17559,__str2305075,_set_str_17560,__str2315076,_init_str_17582,__str2325077,_new_str_17624,__str2335078,_del_str_17681,__str2345079,__str2355080,__str2365081,__str2375082,__str2385083,__str2395084,__str2405085,__str2415086,__str2425087,__str2435088,__str2445089,__str2455090,__str2465091,__str2475092,__str2485093,__str2495094,__str2505095,__str2515096,__str2525097,__str2535098,__str2545099,__str2555100,__str2565101, -__str2575102,__str2585103,__str2595104,__str2605105,__str2615106,__str2625107,__str2635108,__str2645109,__str2655110,__str2665111,__str2675112,__str2685113,__str2695114,__str2705115,__str2715116,__str2725117,__str2735118,__str2745119,__str2755120,__str2765121,__str2775122,__str2785123,__str2795124,__str2805125,__str2815126,__str2825127,__str2835128,__str2845129,__str2855130,__str2865131,__str2875132,__str2885133,__str2895134,__str2905135,__str2915136,__str2925137,__str2935138,__str2945139,__str2955140, -__str2965141,__str2975142,__str2985143,__str2995144,__str3005145,__str3015146,__str3025147,__str3035148,__str3045149,__str3055150,__str3065151,__str3075152,__str3085153,__str3095154,__str3105155,__str3115156,__str3125157,__str3135158,__str3145159,__str3155160,__str3165161,__str3175162,__str3185163,_slotdefs,_pname_17754,_ptrs_17755,_initialized_17899_b,__str3195164,__str3205165,__str3215166,__str3225167,__str3235168,__str3245169,__str3255170,_super_members,__str3265171,__str3275172,__str3285173,_class_str_18252, -__str3295174,__str3305175,__str3315176,_super_doc,_PySuper_Type,__PyUnicode_TypeRecords,_index1,_index2,__Py_ascii_whitespace,_ascii_linebreak,_unicode_empty,_unicode_latin1,__str5196,_free_list5197,_numfree5198,__str15199,__str25200,__str35201,__str45202,__str55203,__str65204,__str75205,__str85206,__str95207,__str105208,__str115209,__str125210,__str135211,__str145212,__str155213,__str165214,__str175215,__str185216,_unicode_default_encoding,__str195217,__str205218,_utf7_category,__str215219,__str225220, -__str235221,__str245222,__str255223,__str265224,__str275225,__str285226,__str295227,__str305228,_utf8_code_length,__str315229,__str325230,__str335231,__str345232,__str355233,__str365234,__str375235,__str385236,__str395237,__str405238,__str415239,_ucnhash_CAPI,__str425240,__str435241,__str445242,__str455243,__str465244,__str475245,__str485246,__str495247,__str505248,__str515249,__str525250,__str535251,__str545252,__str555253,__str565254,__str575255,__str585256,__str595257,__str605258,__str615259,__str625260, -__str635261,__str645262,__str655263,__str665264,__str675265,__str685266,__str695267,__str705268,__str715269,_encoding_map_methods,__str725270,_EncodingMapType,__str735271,__str745272,__str755273,__str765274,__str775275,__str785276,__str795277,__str805278,_bloom_linebreak,__str815279,__str825280,__str835281,__str845282,_title__doc__5283,_capitalize__doc__5284,__str855285,__str865286,_center__doc__5287,__str875288,__str885289,__str895290,_count__doc__5291,__str905292,_encode__doc__5293,__str915294, -_kwlist_17702,__str925295,__str935296,__str945297,_decode__doc__5298,__str955299,_kwlist_17743,__str965300,_expandtabs__doc__5301,__str975302,__str985303,_find__doc__5304,__str995305,__str1005306,_index__doc__5307,__str1015308,__str1025309,_islower__doc__5310,_isupper__doc__5311,_istitle__doc__5312,_isspace__doc__5313,_isalpha__doc__5314,_isalnum__doc__5315,_isdecimal__doc__,_isdigit__doc__5316,_isnumeric__doc__,_join__doc__5317,_ljust__doc__5318,__str1035319,_lower__doc__5320,_stripformat5321,__str1045322, -__str1055323,__str1065324,__str1075325,_strip__doc__5326,_lstrip__doc__5327,_rstrip__doc__5328,__str1085329,_replace__doc__5330,__str1095331,_rfind__doc__5332,__str1105333,_rindex__doc__5334,__str1115335,_rjust__doc__5336,__str1125337,_split__doc__5338,__str1135339,_partition__doc__5340,_rpartition__doc__5341,_rsplit__doc__5342,__str1145343,_splitlines__doc__5344,__str1155345,_swapcase__doc__5346,_translate__doc__5347,_upper__doc__5348,_zfill__doc__5349,__str1165350,_startswith__doc__5351,__str1175352, -__str1185353,_endswith__doc__5354,__str1195355,__str1205356,__str1215357,__str1225358,__str1235359,__str1245360,__str1255361,__str1265362,__str1275363,__str1285364,__str1295365,__str1305366,__str1315367,__str1325368,__str1335369,__str1345370,_formatteriter_methods5371,__str1355372,_PyFormatterIter_Type5373,_fieldnameiter_methods5374,__str1365375,_PyFieldNameIter_Type5376,_format__doc__5377,__str1375378,__str1385379,_p_format__doc__5380,_sizeof__doc__5381,__str1395382,__str1405383,__str1415384,__str1425385, -__str1435386,__str1445387,__str1455388,__str1465389,__str1475390,__str1485391,__str1495392,__str1505393,__str1515394,__str1525395,__str1535396,__str1545397,__str1555398,__str1565399,__str1575400,__str1585401,__str1595402,__str1605403,__str1615404,__str1625405,__str1635406,__str1645407,__str1655408,__str1665409,__str1675410,__str1685411,__str1695412,__str1705413,__str1715414,__str1725415,__str1735416,__str1745417,__str1755418,__str1765419,_unicode_methods,_unicode_as_number,_unicode_as_sequence,__str1775420, -_unicode_as_mapping,__str1785421,__str1795422,__str1805423,__str1815424,__str1825425,__str1835426,__str1845427,__str1855428,__str1865429,__str1875430,__str1885431,__str1895432,__str1905433,__str1915434,__str1925435,__str1935436,__str1945437,__str1955438,__str1965439,__str1975440,_unicode_as_buffer,__str1985441,_kwlist_21713,__str1995442,_unicode_doc,__str2005443,_PyUnicode_Type,__str2015445,_warnings__doc__,__str5560,__str15561,_warnings_str_8371,__str25562,__str35563,__once_registry,__str45564,__default_action, -__str55565,__filters,__str65566,__str75567,__str85568,__str95569,__str105570,__str115571,__str125572,__str135573,__str145574,__str155575,__str165576,__str175577,__str185578,__str195579,__str205580,__str215581,__str225582,__str235583,__str245584,__str255585,__str265586,__str275587,__str285588,__str295589,__str305590,__str315591,__str325592,__str335593,__str345594,_kw_list_9139,__str355595,__str365596,__str375597,__str385598,_kwd_list_9163,__str395599,__str405600,__str415601,__str425602,_get_source_name_9171, -__str435603,_splitlines_name_9172,__str445604,__str455605,_warn_doc,_warn_explicit_doc,__str465606,__str475607,_warnings_functions,_ignore_str_9375,_error_str_9376,_default_str_9377,__str485608,__str495609,__str505610,__str515611,_weakref_getweakrefcount__doc__,_weakref_getweakrefs__doc__,_weakref_proxy__doc__,__str5615,_weakref_functions,__str15616,__str25617,__str35618,__str45619,__str55620,__str65621,__str75622,__str85623,__str5625,_kwlist_8419,__str15626,__str25627,__str35628,__str45629,__str55630, -__str65631,__str75632,__str85633,__str95634,__PyWeakref_RefType,__str105636,__str115637,__str125638,__str135639,_proxy_methods5640,_proxy_as_number,_proxy_as_sequence5641,_proxy_as_mapping5642,__str145643,__PyWeakref_ProxyType,__str155645,__PyWeakref_CallableProxyType,__str165647,_xxsubtype__doc__,__str5659,__str15660,__str25661,__str35662,__str45663,__str55664,__str65665,__str75666,__str85667,__str95669,_spamlist_methods,__str105670,__str115671,_spamlist_getsets,__str125672,_spamlist_type,_spamdict_methods, -_spamdict_members,__str135673,_spamdict_type,__str145674,__str155675,_xxsubtype_functions,__str165676,__str175677,__str185678,_zip_searchorder,_zip_directory_cache,__str5680,__str15681,_ZipImportError,__str25682,__str35683,__str45684,__str55685,__str65686,__str75687,__str85688,__str95689,__str105690,__str115691,__str125692,__str135693,__str145694,__str155695,__str165696,__str175697,__str185698,__str195699,__str205700,__str215701,__str225702,__str235703,__str245704,_doc_find_module5705,_doc_load_module5706, -_doc_get_data,_doc_is_package,_doc_get_code,_doc_get_source,_doc_get_filename,__str255707,__str265708,__str275709,__str285710,__str295711,__str305712,__str315713,_zipimporter_methods,__str325714,__str335715,__str345716,_zipimporter_members,_zipimporter_doc,__str355717,_ZipImporter_Type,__str365718,__str375719,__str385720,__str395721,__str405722,__str415723,__str425724,_importing_zlib_9030_b,__str435725,__str445726,__str455727,__str465728,__str475729,__str485730,__str495731,__str505732,__str515733, -__str525734,__str535735,__str545736,__str555737,__str565738,__str575739,__str585740,__str595741,_zipimport_doc,__str605742,__str615743,__str625744,__str635745,__str645746,_mparams,__gm_,__str513,__str1514,__str2515,_llvm_dbg_declare;function _memcpy(g,e,b){for(var a=0;a1&&a.pop():a.push(c))}return a.length==1?"/":a.join("/") - }, - analyzePath:function(g,e,b){ - var a={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null},g=FS.absolutePath(g); -if(g=="/")a.isRoot=!0,a.exists=a.parentExists=!0,a.name="/",a.path=a.parentPath="/",a.object=a.parentObject=FS.root;else if(g!==null)for(var b=b||0,g=g.slice(1).split("/"),c=FS.root,d=[""];g.length;){if(g.length==1&&c.isFolder)a.parentExists=!0,a.parentPath=d.length==1?"/":d.join("/"),a.parentObject=c,a.name=g[0];var f=g.shift();if(c.isFolder)if(c.read){if(!c.contents.hasOwnProperty(f)){a.error=ERRNO_CODES.ENOENT;break}}else{a.error=ERRNO_CODES.EACCES;break}else{a.error=ERRNO_CODES.ENOTDIR;break}c= -c.contents[f];if(c.link&&!(e&&g.length==0)){if(b>40){a.error=ERRNO_CODES.ELOOP;break}a=FS.absolutePath(c.link,d.join("/"));return FS.analyzePath([a].concat(g).join("/"),e,b+1)}d.push(f);if(g.length==0)a.exists=!0,a.path=d.join("/"),a.object=c}return a}, - findObject:function(g,e){FS.ensureRoot();var b=FS.analyzePath(g,e);return b.exists?b.object:(___setErrNo(b.error),null)}, - createObject:function(g,e,b,a,c){ - g||(g="/"); - typeof g==="string"&&(g=FS.findObject(g)); - if(!g)throw ___setErrNo(ERRNO_CODES.EACCES),Error("Parent path must exist."); - if(!g.isFolder)throw ___setErrNo(ERRNO_CODES.ENOTDIR),Error("Parent must be a folder."); - if(!g.write&&!FS.ignorePermissions)throw ___setErrNo(ERRNO_CODES.EACCES),Error("Parent folder must be writeable."); - if(!e||e=="."||e=="..")throw ___setErrNo(ERRNO_CODES.ENOENT),Error("Name must not be empty."); - //if(g.contents.hasOwnProperty(e))throw ___setErrNo(ERRNO_CODES.EEXIST),Error("Can't overwrite object."); - g.contents[e]={read:a===void 0?!0:a,write:c===void 0?!1:c,timestamp:Date.now(),inodeNumber:FS.nextInode++}; - for(var d in b) b.hasOwnProperty(d)&&(g.contents[e][d]=b[d]); - return g.contents[e] - }, - createFolder:function(g,e,b,a){return FS.createObject(g,e,{isFolder:!0,isDevice:!1,contents:{}},b,a)}, - createPath:function(g,e,b,a){g=FS.findObject(g);if(g===null)throw Error("Invalid parent.");for(e=e.split("/").reverse();e.length;){var c=e.pop();c&&(g.contents.hasOwnProperty(c)||FS.createFolder(g,c,b,a),g=g.contents[c])}return g}, - createFile:function(g,e,b,a,c){ - b.isFolder=!1; - return FS.createObject(g,e,b,a,c) - }, - createDataFile:function(g,e,b,a,c){ - if(typeof b==="string"){for(var d=[],f=0;fd?1:-1}return 0}function _strcmp(g,e){return _strncmp(g,e,TOTAL_MEMORY)} -function __formatString(g,e){for(var b=g,a=0,c=function(b){var c;c=HEAP[e+a];a+=Runtime.getNativeFieldSize(b);return Number(c)},d=[],f,h;;){var j=b;f=HEAP[b];if(f===0)break;h=HEAP[b+1];if(f=="%".charCodeAt(0)){var k=!1,l=!1,m=!1,n=!1;a:for(;;){switch(h){case "+".charCodeAt(0):k=!0;break;case "-".charCodeAt(0):l=!0;break;case "#".charCodeAt(0):m=!0;break;case "0".charCodeAt(0):if(n)break a;else{n=!0;break}default:break a}b++;h=HEAP[b+1]}var o=0;if(h=="*".charCodeAt(0))o=c("i32"),b++,h=HEAP[b+1];else for(;h>= -"0".charCodeAt(0)&&h<="9".charCodeAt(0);)o=o*10+(h-"0".charCodeAt(0)),b++,h=HEAP[b+1];var p=!1;if(h==".".charCodeAt(0)){var q=0,p=!0;b++;h=HEAP[b+1];if(h=="*".charCodeAt(0))q=c("i32"),b++;else for(;;){h=HEAP[b+1];if(h<"0".charCodeAt(0)||h>"9".charCodeAt(0))break;q=q*10+(h-"0".charCodeAt(0));b++}h=HEAP[b+1]}else q=6;var r;switch(String.fromCharCode(h)){case "h":h=HEAP[b+2];h=="h".charCodeAt(0)?(b++,r=1):r=2;break;case "l":h=HEAP[b+2];h=="l".charCodeAt(0)?(b++,r=8):r=4;break;case "L":case "q":case "j":r= -8;break;case "z":case "t":case "I":r=4;break;default:r=void 0}r!==void 0&&b++;h=HEAP[b+1];if("d,i,u,o,x,X,p".split(",").indexOf(String.fromCharCode(h))!=-1){j=h=="d".charCodeAt(0)||h=="i".charCodeAt(0);r=r||4;f=c("i"+r*8);if(r<=4){var u=Math.pow(256,r)-1;f=(j?reSign:unSign)(f&u,r*8)}var u=Math.abs(f),s,j="";if(h=="d".charCodeAt(0)||h=="i".charCodeAt(0))s=u.toString(10);else if(h=="u".charCodeAt(0))s=unSign(f,8*r).toString(10),f=Math.abs(f);else if(h=="o".charCodeAt(0))s=(m?"0":"")+u.toString(8);else if(h== -"x".charCodeAt(0)||h=="X".charCodeAt(0)){j=m?"0x":"";if(f<0){f=-f;s=(u-1).toString(16);m=[];for(u=0;ur&&r>=-4?(h=(h=="g".charCodeAt(0)?"f":"F").charCodeAt(0),q-=r+1):(h=(h=="g".charCodeAt(0)?"e":"E").charCodeAt(0),q--),r=Math.min(q,20);if(h=="e".charCodeAt(0)||h=="E".charCodeAt(0))s=f.toExponential(r),/[eE][-+]\d$/.test(s)&&(s=s.slice(0,-1)+"0"+s.slice(-1));else if(h=="f".charCodeAt(0)||h=="F".charCodeAt(0))s= -f.toFixed(r);j=s.split("e");if(p&&!m)for(;j[0].length>1&&j[0].indexOf(".")!=-1&&(j[0].slice(-1)=="0"||j[0].slice(-1)==".");)j[0]=j[0].slice(0,-1);else for(m&&s.indexOf(".")==-1&&(j[0]+=".");q>r++;)j[0]+="0";s=j[0]+(j.length>1?"e"+j[1]:"");h=="E".charCodeAt(0)&&(s=s.toUpperCase());k&&f>=0&&(s="+"+s)}else s=(f<0?"-":"")+"inf",n=!1;for(;s.lengthq&&(k=k.slice(0,q))):k=intArrayFromString("(null)",!0);if(!l)for(;k.length0;)d.push(" ".charCodeAt(0));l||d.push(c("i8"))}else if(h=="n".charCodeAt(0))l=c("i32*"),HEAP[l]=d.length;else if(h=="%".charCodeAt(0))d.push(f);else for(u=j;ud?1:-1}return 0}function _memmove(g,e,b){if(b!==0){var a=_malloc(b);_memcpy(a,e,b);_memcpy(g,a,b);_free(a)}}var _llvm_memmove_p0i8_p0i8_i32=_memmove;function _strncpy(g,e,b){for(var a=!1,c,d=0;d="A".charCodeAt(0)&&g<="Z".charCodeAt(0)?g-"A".charCodeAt(0)+"a".charCodeAt(0):g}function _copysign(g,e){return g<0===e<0?g:-g}function _printf(g,e){return _fprintf(HEAP[_stdout],g,e)}function _hypot(g,e){return Math.sqrt(g*g+e*e)} -var _llvm_pow_f64=Math.pow,_atan2=Math.atan2,_llvm_exp_f64=Math.exp,_llvm_log_f64=Math.log,_cos=Math.cos,_sin=Math.sin;function _isinf(g){return!isNaN(g)&&!isFinite(g)}var ___isinf=_isinf,_fabs=Math.abs,_floor=Math.floor;function _fstat(g,e){if(FS.streams[g]){var b=intArrayFromString(FS.streams[g].path);return _stat(allocate(b,"i8",ALLOC_STACK),e)}else return ___setErrNo(ERRNO_CODES.EBADF),-1}var ___01fstat64_=_fstat,DLFCN_DATA={error:null,errorMsg:null,loadedLibs:{},loadedLibNames:{}}; -function _dlsym(g,e){e="_"+Pointer_stringify(e);if(DLFCN_DATA.loadedLibs[g]){var b=DLFCN_DATA.loadedLibs[g];if(b.module.hasOwnProperty(e))if(b.cached_functions.hasOwnProperty(e))return b.cached_functions[e];else{var a=b.module[e];if(typeof a=="function")FUNCTION_TABLE.push(a),FUNCTION_TABLE.push(0),a=FUNCTION_TABLE.length-2,b.cached_functions=a;return a}else return DLFCN_DATA.errorMsg='Tried to lookup unknown symbol "'+e+'" in dynamic lib: '+b.name,0}else return DLFCN_DATA.errorMsg="Tried to dlsym() from an unopened handle: "+ -g,0}var ___environ=_environ=null; -function ___buildEnvironment(g){var e,b;_environ===null?(ENV.USER="root",ENV.PATH="/",ENV.PWD="/",ENV.HOME="/",ENV.LANG="en_US.UTF-8",ENV._="./this.program",e=allocate(1024,"i8",ALLOC_STATIC),b=allocate(256,"i8*",ALLOC_STATIC),HEAP[b]=e,___environ=_environ=allocate([b],"i8**",ALLOC_STATIC)):(b=HEAP[_environ],e=HEAP[b]);var a=[],c=0,d;for(d in g)if(typeof g[d]==="string"){var f=d+"="+g[d];a.push(f);c+=f.length}if(c>1024)throw Error("Environment size exceeded TOTAL_ENV_SIZE!");for(g=0;gb-1)return ___setErrNo(ERRNO_CODES.ERANGE);else{g=ERRNO_MESSAGES[g];for(b=0;b=g);return 0}function _close(g){return FS.streams[g]?(FS.streams[g].currentEntry&&_free(FS.streams[g].currentEntry),delete FS.streams[g],0):(___setErrNo(ERRNO_CODES.EBADF),-1)}function _fsync(g){return FS.streams[g]?0:(___setErrNo(ERRNO_CODES.EBADF),-1)} -function _fclose(g){_fsync(g);return _close(g)}function _fflush(g){var e=function(a){a in FS.streams&&FS.streams[a].object.output&&FS.streams[a].object.output(null)};try{if(g===0)for(var b in FS.streams)e(b);else e(g);return 0}catch(a){return ___setErrNo(ERRNO_CODES.EIO),-1}}function _setvbuf(){return 0} -function _lseek(g,e,b){return FS.streams[g]&&!FS.streams[g].isDevice?(g=FS.streams[g],b===1?e+=g.position:b===2&&(e+=g.object.contents.length),e<0?(___setErrNo(ERRNO_CODES.EINVAL),-1):(g.ungotten=[],g.position=e)):(___setErrNo(ERRNO_CODES.EBADF),-1)}function _fseek(g,e,b){return _lseek(g,e,b)==-1?-1:(FS.streams[g].eof=!1,0)}var ___01fseeko64_=_fseek; -function _ftell(g){return g in FS.streams?(g=FS.streams[g],g.object.isDevice?(___setErrNo(ERRNO_CODES.ESPIPE),-1):g.position):(___setErrNo(ERRNO_CODES.EBADF),-1)}var ___01ftello64_=_ftell;function _clearerr(g){if(g in FS.streams)FS.streams[g].error=!1} -function _truncate(g,e){if(e<0)return ___setErrNo(ERRNO_CODES.EINVAL),-1;else{typeof g!=="string"&&(g=Pointer_stringify(g));var b=FS.findObject(g);if(b===null)return-1;if(b.isFolder)return ___setErrNo(ERRNO_CODES.EISDIR),-1;else if(b.isDevice)return ___setErrNo(ERRNO_CODES.EINVAL),-1;else if(b.write){var a=b.contents;if(ea.length;)a.push(0);b.timestamp=Date.now();return 0}else return ___setErrNo(ERRNO_CODES.EACCES),-1}} -function _ftruncate(g,e){return FS.streams[g]&&FS.streams[g].isWrite?_truncate(FS.streams[g].path,e):(FS.streams[g]?___setErrNo(ERRNO_CODES.EINVAL):___setErrNo(ERRNO_CODES.EBADF),-1)}var ___01ftruncate64_=_ftruncate; -function _pread(g,e,b,a){var c=FS.streams[g];if(!c||c.object.isDevice)return ___setErrNo(ERRNO_CODES.EBADF),-1;else if(c.isRead)if(c.object.isFolder)return ___setErrNo(ERRNO_CODES.EISDIR),-1;else if(b<0||a<0)return ___setErrNo(ERRNO_CODES.EINVAL),-1;else{for(g=0;c.ungotten.length&&b>0;)HEAP[e++]=c.ungotten.pop(),b--,g++;for(var c=c.object.contents,b=Math.min(c.length-a,b),d=0;d0;)HEAP[e++]=a.ungotten.pop(),b--,g++;for(var c=0;cc?(j=c,___setErrNo(ERRNO_CODES.ERANGE)):j=unSign(j,d));if(j>c||jc?c:a,___setErrNo(ERRNO_CODES.ERANGE); -return j}function _strtol(g,e,b){return __parseInt(g,e,b,-2147483648,2147483647)}var ___isinff;function _localeconv(){var g=_localeconv;if(!g.ret)g.ret=allocate([allocate(intArrayFromString("."),"i8",ALLOC_NORMAL)],"i8",ALLOC_NORMAL);return g.ret}function _getenv(g){if(g===0)return 0;g=Pointer_stringify(g);if(!ENV.hasOwnProperty(g))return 0;_getenv.ret&&_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[g]),"i8",ALLOC_NORMAL);return _getenv.ret} -function _setbuf(g,e){e?_setvbuf(g,e,0,8192):_setvbuf(g,e,2,8192)}function _strcat(g,e){var b=_strlen(g),a=0;do{for(var c=0;c<1;c++)HEAP[g+b+a+c]=HEAP[e+a+c];a++}while(HEAP[e+a-1]!=0);return g}function _getcwd(g,e){if(e==0)return ___setErrNo(ERRNO_CODES.EINVAL),0;else if(ea&&(HEAP[e+c]=0);return c}else return ___setErrNo(ERRNO_CODES.EINVAL),-1}function _strncat(g,e,b){for(var a=_strlen(g),c=0;;){for(var d=0;d<1;d++)HEAP[g+a+c+d]=HEAP[e+c+d];if(HEAP[g+a+c]==0)break;c++;if(c==b){HEAP[g+a+c]=0;break}}return g} -function _strdup(g){for(var e=String_len(g),b=_malloc(e+1),a=0;a=c)HEAP[b]=0;else{a===-2?(d=".",c=1):a===-1?(d="..",c=1):(d=g.contents[a],c=g.object.contents[d].inodeNumber);g.position++;a=___dirent_struct_layout;HEAP[e+a.d_ino]=c;HEAP[e+a.d_off]=g.position;HEAP[e+a.d_reclen]=d.length+1;for(c=0;ca&&(HEAP[e+c++]=0);return c}} -function _sysconf(g){switch(g){case 30:return PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1; -case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4}___setErrNo(ERRNO_CODES.EINVAL); -return-1}function _qsort(g,e,b,a){for(var a=FUNCTION_TABLE[a],c=[],d=0;d="0".charCodeAt(0)&&g<="9".charCodeAt(0)} -function _strtod(g,e){for(;_isspace(HEAP[g]);)g++;var b=1;HEAP[g]=="-".charCodeAt(0)?(b=-1,g++):HEAP[g]=="+".charCodeAt(0)&&g++;for(var a,c=0;;){a=HEAP[g];if(!_isdigit(a))break;c=c*10+a-"0".charCodeAt(0);g++}if(HEAP[g]==".".charCodeAt(0)){g++;for(var d=0.1;;){a=HEAP[g];if(!_isdigit(a))break;c+=d*(a-"0".charCodeAt(0));d/=10;g++}}a=HEAP[g];if(a=="e".charCodeAt(0)||a=="E".charCodeAt(0)){g++;var d=0,f=!1;a=HEAP[g];a=="-".charCodeAt(0)?(f=!0,g++):a=="+".charCodeAt(0)&&g++;for(a=HEAP[g];;){if(!_isdigit(a))break; -d=d*10+a-"0".charCodeAt(0);g++;a=HEAP[g]}f&&(d=-d);c*=Math.pow(10,d)}e&&(HEAP[e]=g);return c*b}function _strpbrk(g,e){for(var b=Runtime.set.apply(null,String_copy(e));HEAP[g];){if(HEAP[g]in b)return g;g++}return 0}function _atoi(g){return Math.floor(Number(Pointer_stringify(g)))}function _setlocale(){if(!_setlocale.ret)_setlocale.ret=allocate([0],"i8",ALLOC_NORMAL);return _setlocale.ret} -function _nl_langinfo(g){switch(g){case 14:g="ANSI_X3.4-1968";break;case 131112:g="%a %b %e %H:%M:%S %Y";break;case 131113:g="%m/%d/%y";break;case 131114:g="%H:%M:%S";break;case 131115:g="%I:%M:%S %p";break;case 131110:g="AM";break;case 131111:g="PM";break;case 131079:g="Sunday";break;case 131080:g="Monday";break;case 131081:g="Tuesday";break;case 131082:g="Wednesday";break;case 131083:g="Thursday";break;case 131084:g="Friday";break;case 131085:g="Saturday";break;case 131072:g="Sun";break;case 131073:g= -"Mon";break;case 131074:g="Tue";break;case 131075:g="Wed";break;case 131076:g="Thu";break;case 131077:g="Fri";break;case 131078:g="Sat";break;case 131098:g="January";break;case 131099:g="February";break;case 131100:g="March";break;case 131101:g="April";break;case 131102:g="May";break;case 131103:g="June";break;case 131104:g="July";break;case 131105:g="August";break;case 131106:g="September";break;case 131107:g="October";break;case 131108:g="November";break;case 131109:g="December";break;case 131086:g= -"Jan";break;case 131087:g="Feb";break;case 131088:g="Mar";break;case 131089:g="Apr";break;case 131090:g="May";break;case 131091:g="Jun";break;case 131092:g="Jul";break;case 131093:g="Aug";break;case 131094:g="Sep";break;case 131095:g="Oct";break;case 131096:g="Nov";break;case 131097:g="Dec";break;case 131119:g="";break;case 65536:g=".";break;case 65537:g="";break;case 327680:g="^[yY]";break;case 327681:g="^[nN]";break;case 262159:g="-";break;default:g=""}var e=_nl_langinfo;if(!e.ret)e.ret=_malloc(32); -for(var b=0;b="a".charCodeAt(0)&&g<="z".charCodeAt(0)?g-"a".charCodeAt(0)+"A".charCodeAt(0):g}function _realpath(g,e){var b=FS.analyzePath(Pointer_stringify(g));if(b.error)return ___setErrNo(b.error),0;else{for(var a=Math.min(4095,b.path.length),c=0;c=0?g+b:0}function _clock(){if(_clock.start===void 0)_clock.start=new Date;return(Date.now()-_clock.start.getTime())*1E3}var ___tm_struct_layout={__size__:44,tm_sec:0,tm_min:4,tm_hour:8,tm_mday:12,tm_mon:16,tm_year:20,tm_wday:24,tm_yday:28,tm_isdst:32,tm_gmtoff:36,tm_zone:40},_tzname=null,_daylight=null,_timezone=null; -function _tzset(){if(_tzname===null){_timezone=_malloc(4);HEAP[_timezone]=-(new Date).getTimezoneOffset()*60;_daylight=_malloc(4);var g=new Date(2E3,0,1),e=new Date(2E3,6,1);HEAP[_daylight]=Number(g.getTimezoneOffset()!=e.getTimezoneOffset());g=g.toString().match(/\(([A-Z]+)\)/)[1];e=e.toString().match(/\(([A-Z]+)\)/)[1];g=allocate(intArrayFromString(g),"i8",ALLOC_NORMAL);e=allocate(intArrayFromString(e),"i8",ALLOC_NORMAL);_tzname=_malloc(8);HEAP[_tzname]=g;HEAP[_tzname+4]=e}} -function _mktime(g){_tzset();var e=___tm_struct_layout,b=HEAP[g+e.tm_year],a=(new Date(b>=1900?b:b+1900,HEAP[g+e.tm_mon],HEAP[g+e.tm_mday],HEAP[g+e.tm_hour],HEAP[g+e.tm_min],HEAP[g+e.tm_sec],0)).getTime()/1E3;HEAP[g+e.tm_wday]=(new Date(a)).getDay();b=Math.round((a-(new Date(b,0,1)).getTime())/864E5);HEAP[g+e.tm_yday]=b;return a}function _time(g){var e=Math.floor(Date.now()/1E3);g&&(HEAP[g]=e);return e} -function _mmap(g,e,b,a,c,d){g=FS.streams[c];return!g?-1:allocate(g.object.contents.slice(d,d+e),"i8",ALLOC_NORMAL)}var _mremap;function _sbrk(g){var e=_sbrk;e.STATICTOP?assert(e.STATICTOP==STATICTOP,"No one should touch the heap!"):(STATICTOP=alignMemoryPage(STATICTOP),e.STATICTOP=STATICTOP,e.DATASIZE=0);var b=STATICTOP+e.DATASIZE;e.DATASIZE+=alignMemoryPage(g);return b}function _munmap(g){_free(g)} -function _telldir(g){return!FS.streams[g]||!FS.streams[g].object.isFolder?___setErrNo(ERRNO_CODES.EBADF):FS.streams[g].position}function _seekdir(g,e){if(!FS.streams[g]||!FS.streams[g].object.isFolder)___setErrNo(ERRNO_CODES.EBADF);else{var b=0,a;for(a in FS.streams[g].contents)b++;e>=b?___setErrNo(ERRNO_CODES.EINVAL):FS.streams[g].position=e}}function _rewinddir(g){_seekdir(g,-2)} -function ___libgenSplitName(g){if(g===0||HEAP[g]===0){g=___libgenSplitName;if(!g.ret)g.ret=allocate([".".charCodeAt(0),0],"i8",ALLOC_NORMAL);return[g.ret,-1]}else{for(var e="/".charCodeAt(0),b=!0,a=[],c=0;HEAP[g+c]!==0;c++)HEAP[g+c]===e?a.push(c):b=!1;e=c;if(b)return HEAP[g+1]=0,[g,-1];else{for(;a.length&&a[a.length-1]==e-1;)HEAP[g+a.pop(c)]=0,e--;return[g,a.pop()]}}}function _basename(g){g=___libgenSplitName(g);return g[0]+g[1]+1}var ___xpg_basename=_basename; -function _dirname(g){g=___libgenSplitName(g);g[1]==0?HEAP[g[0]+1]=0:g[1]!==-1&&(HEAP[g[0]+g[1]]=0);return g[0]}function _creat(g,e){return _open(g,577,allocate([e,0,0,0],"i32",ALLOC_STACK))}function _posix_fadvise(){return 0}var _posix_madvise=_posix_fadvise;function _posix_fallocate(g,e,b){if(!(g in FS.streams)||FS.streams[g].link||FS.streams[g].isFolder||FS.streams[g].isDevice)return ___setErrNo(ERRNO_CODES.EBADF),-1;g=FS.streams[g].object.contents;for(e+=b;e>g.length;)g.push(0);return 0} -var ___pollfd_struct_layout=null;function _poll(g,e){for(var b=___pollfd_struct_layout,a=0,c=0;ca?HEAP[g+c]=0:(___setErrNo(ERRNO_CODES.ENAMETOOLONG),-1)}function _getopt(){return-1} -function _usleep(g){g/=1E3;for(var e=Date.now();Date.now()-e="0".charCodeAt(0)&&g[c].charCodeAt(0)<="9".charCodeAt(0);)c++;var j;c!=c&&(j=parseInt(g.slice(c,c),10));var k=g[c];c++;for(var l=0,m=[];(l0;)if(k==="d"&&h>="0".charCodeAt(0)&&h<="9".charCodeAt(0)||k==="x"&&(h>="0".charCodeAt(0)&&h<="9".charCodeAt(0)||h>="a".charCodeAt(0)&&h<="f".charCodeAt(0)||h>="A".charCodeAt(0)&&h<="F".charCodeAt(0))|| -k==="s")m.push(String.fromCharCode(h)),h=e(),l++;else break;if(m.length===0)return 0;l=m.join("");h=HEAP[a+f];f+=Runtime.getNativeFieldSize("void*");switch(k){case "d":HEAP[h]=parseInt(l,10);break;case "x":HEAP[h]=parseInt(l,16);break;case "s":k=intArrayFromString(l);for(l=0;ld?1:-1}return 0}function _strcasecmp(g,e){return _strncasecmp(g,e,TOTAL_MEMORY)} -function _strtok_r(g,e,b){var a,c,d,f=g!=0;a:do if(f)a=0;else{g=HEAP[b];if(g!=0){a=0;break a}c=0;a=3;break a}while(0);if(a==0){a:for(;;){d=HEAP[g];g+=1;a=e;var h=d,f=a;a=2;b:for(;;){j=a==5?j:0;a=HEAP[f+j];if(a!=0==0){a=9;break a}var j=j+1;if(h==a)break b;else a=5}a=2}if(a==9)if(h==0)c=HEAP[b]=0;else{c=g+-1;a:for(;;){d=HEAP[g];g+=1;a=e;h=d;j=a;a=10;b:for(;;){k=a==13?k:0;a=HEAP[j+k];if(a==h!=0)break a;var k=k+1;if(a!=0)a=13;else break b}}d==0?g=0:HEAP[g+-1]=0;HEAP[b]=g}else a==7&&(HEAP[b]=g,HEAP[g+ --1]=0,c=g+-1)}return c}function _isascii(g){return g>=0&&(g&128)==0}function _toascii(g){return g&127}var __toupper=_toupper,__tolower=_tolower;function _islower(g){return g>="a".charCodeAt(0)&&g<="z".charCodeAt(0)}function _isupper(g){return g>="A".charCodeAt(0)&&g<="Z".charCodeAt(0)}function _isalpha(g){return g>="a".charCodeAt(0)&&g<="z".charCodeAt(0)||g>="A".charCodeAt(0)&&g<="Z".charCodeAt(0)} -function _isxdigit(g){return g>="0".charCodeAt(0)&&g<="9".charCodeAt(0)||g>="a".charCodeAt(0)&&g<="f".charCodeAt(0)||g>="A".charCodeAt(0)&&g<="F".charCodeAt(0)}function _isalnum(g){return g>="0".charCodeAt(0)&&g<="9".charCodeAt(0)||g>="a".charCodeAt(0)&&g<="z".charCodeAt(0)||g>="A".charCodeAt(0)&&g<="Z".charCodeAt(0)} -function _ispunct(g){return g>="!".charCodeAt(0)&&g<="/".charCodeAt(0)||g>=":".charCodeAt(0)&&g<="@".charCodeAt(0)||g>="[".charCodeAt(0)&&g<="`".charCodeAt(0)||g>="{".charCodeAt(0)&&g<="~".charCodeAt(0)}function _isblank(g){return g==" ".charCodeAt(0)||g=="\t".charCodeAt(0)}function _iscntrl(g){return 0<=g&&g<=31||g===127}function _isprint(g){return 31>=8;for(b=g=0;b<4;b++)g<<=8,g+=e[b];return g}function ___assert_fail(g){ABORT=!0;throw"Assertion failed: "+Pointer_stringify(g);}function ___cxa_guard_acquire(){return 1}function ___cxa_guard_release(){return 1}function ___cxa_allocate_exception(g){return _malloc(g)}function ___cxa_throw(g,e,b){print("Compiled code throwing an exception, "+[g,e,b]+", at "+Error().stack);throw g;} -function _llvm_eh_exception(){return"code-generated exception: "+Error().stack}function _llvm_eh_selector(){return 0}function ___cxa_begin_catch(){}function ___cxa_end_catch(){}function ___cxa_call_unexpected(g){ABORT=!0;throw g;}function ___gxx_personality_v0(){}function _llvm_umul_with_overflow_i32(g,e){return{f0:g*e,f1:0}}function _llvm_stacksave(){var g=_llvm_stacksave;if(!g.LLVM_SAVEDSTACKS)g.LLVM_SAVEDSTACKS=[];g.LLVM_SAVEDSTACKS.push(STACKTOP);return g.LLVM_SAVEDSTACKS.length-1} -function _llvm_stackrestore(g){var e=_llvm_stacksave,b=e.LLVM_SAVEDSTACKS[g];e.LLVM_SAVEDSTACKS.splice(g,1);return b}function ___cxa_pure_virtual(){ABORT=!0;throw"Pure virtual function called!";}function __ZNSt8ios_base4InitC1Ev(){}var __ZNSt8ios_base4InitD1Ev=__ZNSt8ios_base4InitC1Ev,__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_=0;function __ZNSolsEd(){_putchar("\n".charCodeAt(0))}var __ZNSolsEPFRSoS_E=__ZNSolsEd; -function __ZNSolsEi(g,e){for(var b=String(e),a=0;a0?-Math.round(-g):Math.round(g)}var _rintf=_rint,_lrint=_rint,_lrintf=_rint,_llrint=_rint,_llrintf=_rint,_nearbyint=_rint,_nearbyintf=_rint;function _trunc(g){return g<0?Math.ceil(g):Math.floor(g)}var _truncf=_trunc;function _fdim(g,e){return g>e?g-e:0}var _fdimf=_fdim;function _fmax(g,e){return isNaN(g)?e:isNaN(e)?g:Math.max(g,e)}var _fmaxf=_fmax;function _fmin(g,e){return isNaN(g)?e:isNaN(e)?g:Math.max(g,e)}var _fminf=_fmin;function _fma(g,e,b){return g*e+b} -var _fmaf=_fma,_fmodf=_fmod,_remainder=_fmod,_remainderf=_fmod;function _log10(g){return Math.log(g)/Math.LN10}var _log10f=_log10;function _log1p(g){return Math.log(1+g)}var _log1pf=_log1p;function _log2(g){return Math.log(g)/Math.LN2}var _log2f=_log2;function _nan(){return NaN}var _nanf=_nan; -function _dlclose(g){if(DLFCN_DATA.loadedLibs[g]){var e=DLFCN_DATA.loadedLibs[g];e.refcount--==0&&(delete DLFCN_DATA.loadedLibNames[e.name],delete DLFCN_DATA.loadedLibs[g]);return 0}else return DLFCN_DATA.errorMsg="Tried to dlclose() unopened handle: "+g,1}function _difftime(g,e){return g-e}var ___tm_current=0,___tm_timezones={},___tm_formatted=0,_timelocal=_mktime; -function _gmtime_r(g,e){var b=new Date(HEAP[g]*1E3),a=___tm_struct_layout;HEAP[e+a.tm_sec]=b.getUTCSeconds();HEAP[e+a.tm_min]=b.getUTCMinutes();HEAP[e+a.tm_hour]=b.getUTCHours();HEAP[e+a.tm_mday]=b.getUTCDate();HEAP[e+a.tm_mon]=b.getUTCMonth();HEAP[e+a.tm_year]=b.getUTCFullYear()-1900;HEAP[e+a.tm_wday]=b.getUTCDay();HEAP[e+a.tm_gmtoff]=0;HEAP[e+a.tm_isdst]=0;var c=new Date(b.getFullYear(),0,1),b=Math.round((b.getTime()-c.getTime())/864E5);HEAP[e+a.tm_yday]=b;"GMT"in ___tm_timezones||(___tm_timezones.GMT= -allocate(intArrayFromString("GMT"),"i8",ALLOC_NORMAL));HEAP[e+a.tm_zone]=___tm_timezones.GMT;return e}function _gmtime(g){___tm_current||(___tm_current=_malloc(___tm_struct_layout.__size__));return _gmtime_r(g,___tm_current)}function _timegm(g){_tzset();var e=HEAP[_timezone],b=HEAP[_daylight];return _mktime(g)+e-(b==1?3600:0)} -function _localtime_r(g,e){_tzset();var b=___tm_struct_layout,a=new Date(HEAP[g]*1E3);HEAP[e+b.tm_sec]=a.getSeconds();HEAP[e+b.tm_min]=a.getMinutes();HEAP[e+b.tm_hour]=a.getHours();HEAP[e+b.tm_mday]=a.getDate();HEAP[e+b.tm_mon]=a.getMonth();HEAP[e+b.tm_year]=a.getFullYear()-1900;HEAP[e+b.tm_wday]=a.getDay();var c=new Date(a.getFullYear(),0,1),d=Math.floor((a.getTime()-c.getTime())/864E5);HEAP[e+b.tm_yday]=d;HEAP[e+b.tm_gmtoff]=c.getTimezoneOffset()*60;c=Number(c.getTimezoneOffset()!=a.getTimezoneOffset()); -HEAP[e+b.tm_isdst]=c;a=a.toString().match(/\(([A-Z]+)\)/)[1];a in ___tm_timezones||(___tm_timezones[a]=allocate(intArrayFromString(a),"i8",ALLOC_NORMAL));HEAP[e+b.tm_zone]=___tm_timezones[a];return e}function _localtime(g){___tm_current||(___tm_current=_malloc(___tm_struct_layout.__size__));return _localtime_r(g,___tm_current)} -function _asctime_r(g,e){var b=new Date(_mktime(g)*1E3),a=b.toString(),c=a.replace(/\d{4}.*/,"").replace(/ 0/," "),a=a.match(/\d{2}:\d{2}:\d{2}/)[0],a=c+a+" "+b.getFullYear()+"\n";a.split("").forEach(function(a,b){HEAP[e+b]=a.charCodeAt(0)});HEAP[e+25]=0;return e}function _asctime(g){___tm_formatted||(___tm_formatted=_malloc(26));return _asctime_r(g,___tm_formatted)}function _ctime(g){return _asctime(_localtime(g))}function _ctime_r(g,e){return _asctime_r(_localtime_r(g,___tm_current),e)} -function _dysize(g){return g%4==0&&(g%100!=0||g%400==0)?366:365}function _stime(){___setErrNo(ERRNO_CODES.EPERM);return-1}function _strftime(){return 0}function _strptime(){return 0}function _getdate(){return 0}function _gettimeofday(g){var e=Runtime.calculateStructAlignment({fields:["i32","i32"]}),b=Date.now();HEAP[g+e[0]]=Math.floor(b/1E3);HEAP[g+e[1]]=Math.floor((b-1E3*Math.floor(b/1E3))*1E3);return 0}function _setjmp(){return 0}var __setjmp=_setjmp;function _longjmp(){assert(0)} -var __longjmp=_longjmp,_waitid=_wait;function _pthread_mutex_init(){}function _pthread_mutex_destroy(){}function _pthread_mutex_lock(){}function _pthread_mutex_unlock(){}function _posix_memalign(g,e,b){e=_memalign(e,b);HEAP[g]=e;return 0}function _emscripten_run_script(g){eval(Pointer_stringify(g))}function __Z21emscripten_run_scriptPKc(g){eval(Pointer_stringify(g))} -var Browser={decodeImage:function(g,e){var b=new Image,a=document.createElement("canvas");b.src="data:image/"+e+";base64,"+function(a){for(var b="",c=0,e=0,g=0;g=6;){var l=c>>e-6&63;e-=6;b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[l]}}e==2?(b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(c&3)<<4],b+="=="):e==4&&(b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(c&15)<<2],b+="=");return b}(g); -var c=a.getContext("2d");c.drawImage(b,0,0);return c.getImageData(0,0,a.width,a.height)}},SDL={defaults:{width:320,height:200,copyScreenOnLock:!1},surfaces:{},events:[],keyCodes:{16:304,17:305,18:308,37:276,38:273,39:275,40:274,109:45},structs:{PixelFormat:{__size__:32,palette:0,BitsPerPixel:4,BytesPerPixel:5,Rloss:6,Gloss:7,Bloss:8,Aloss:9,Rshift:10,Gshift:11,Bshift:12,Ashift:13,Rmask:16,Gmask:20,Bmask:24,Amask:28},KeyboardEvent:{__size__:8,type:0,which:1,state:2,keysym:4},keysym:{__size__:16,scancode:0, -sym:4,mod:8,unicode:12},AudioSpec:{__size__:24,freq:0,format:4,channels:6,silence:7,samples:8,size:12,callback:16,userdata:20}},makeSurface:function(g,e,b){var a=_malloc(56),c=_malloc(g*e*4),d=_malloc(72);b|=1;HEAP[a+0]=b;HEAP[a+4]=d;HEAP[a+8]=g;HEAP[a+12]=e;HEAP[a+16]=g*4;HEAP[a+20]=c;HEAP[a+24]=0;HEAP[d+SDL.structs.PixelFormat.palette]=0;HEAP[d+SDL.structs.PixelFormat.BitsPerPixel]=32;HEAP[d+SDL.structs.PixelFormat.BytesPerPixel]=4;HEAP[d+SDL.structs.PixelFormat.Rmask]=255;HEAP[d+SDL.structs.PixelFormat.Gmask]= -255;HEAP[d+SDL.structs.PixelFormat.Bmask]=255;HEAP[d+SDL.structs.PixelFormat.Amask]=255;SDL.surfaces[a]={width:g,height:e,canvas:Module.canvas,ctx:Module.ctx2D,surf:a,buffer:c,pixelFormat:d,alpha:255};return a},freeSurface:function(g){_free(SDL.surfaces[g].buffer);_free(SDL.surfaces[g].pixelFormat);_free(g);delete SDL.surfaces[g]},receiveEvent:function(g){switch(g.type){case "keydown":case "keyup":SDL.events.push(g)}return!1},makeCEvent:function(g,e){if(typeof g==="number")_memcpy(e,g,SDL.structs.KeyboardEvent.__size__); -else switch(g.type){case "keydown":case "keyup":var b=g.type==="keydown",a=SDL.keyCodes[g.keyCode]||g.keyCode;a>=65&&a<=90&&(a=String.fromCharCode(a).toLowerCase().charCodeAt(0));HEAP[e+SDL.structs.KeyboardEvent.type]=b?2:3;HEAP[e+SDL.structs.KeyboardEvent.which]=1;HEAP[e+SDL.structs.KeyboardEvent.state]=b?1:0;HEAP[e+SDL.structs.KeyboardEvent.keysym+SDL.structs.keysym.scancode]=a;HEAP[e+SDL.structs.KeyboardEvent.keysym+SDL.structs.keysym.sym]=a;HEAP[e+SDL.structs.KeyboardEvent.keysym+SDL.structs.keysym.mod]= -0;break;case "keypress":break;default:throw"Unhandled SDL event: "+g.type;}}};function _SDL_Init(){SDL.startTime=Date.now();["keydown","keyup","keypress"].forEach(function(g){addEventListener(g,SDL.receiveEvent,!0)});return 0}function _SDL_WasInit(){return 0}function _SDL_GetVideoInfo(){var g=_malloc(20);HEAP[g+0]=0;HEAP[g+4]=0;HEAP[g+8]=0;HEAP[g+12]=SDL.defaults.width;HEAP[g+16]=SDL.defaults.height;return g}function _SDL_ListModes(){return-1}function _SDL_GL_SetAttribute(){} -function _SDL_SetVideoMode(g,e,b,a){return SDL.screen=SDL.makeSurface(g,e,a)}function _SDL_Quit(){var g=SDL.surfaces[SDL.screen];if(g){g.image=g.ctx.getImageData(0,0,g.width,g.height);for(var e=g.image.data.length,b=0;b=0?1:2;break;case 1:f=k;b=26;break;case 2:b=_PyErr_Occurred()!=0?3:7;break;case 3:b=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])==0?4:6;break;case 4:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?5:6;break;case 5:f=-1;b=26;break;case 6:_PyErr_Clear();b=7;break;case 7:b=HEAP[a+4]==_PyInstance_Type?8:9;break;case 8:f=c;b=26;break;case 9:j=__PyObject_LookupSpecial(a, -__str1,_hintstrobj_8403);b=j==0?10:13;break;case 10:b=_PyErr_Occurred()!=0?11:12;break;case 11:f=-1;b=26;break;case 12:f=c;b=26;break;case 13:h=_PyObject_CallFunctionObjArgs(j,allocate(4,"i8*",ALLOC_STACK));HEAP[j]-=1;b=HEAP[j]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=15;break;case 15:b=h==0?16:20;break;case 16:b=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])==0?17:19;break;case 17:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?18:19;break;case 18:f=-1;b=26;break; -case 19:_PyErr_Clear();f=c;b=26;break;case 20:b=(HEAP[HEAP[h+4]+84]&16777216)!=0?21:22;break;case 21:d=_PyLong_AsSsize_t(h);b=23;break;case 22:d=c;b=23;break;case 23:k=d;HEAP[h]-=1;b=HEAP[h]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=25;break;case 25:f=k;b=26;break;case 26:return b=f;default:assert(0,"bad label: "+b)}} -function _PyObject_GetItem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?2:1;break;case 1:b=c==0?2:3;break;case 2:d=_null_error();b=17;break;case 3:f=HEAP[HEAP[a+4]+56];b=f!=0?4:6;break;case 4:b=HEAP[f+4]!=0?5:6;break;case 5:d=FUNCTION_TABLE[HEAP[f+4]](a,c);b=17;break;case 6:b=HEAP[HEAP[a+4]+52]!=0?7:16;break;case 7:b=HEAP[HEAP[c+4]+48]==0?14:8;break;case 8:b=(HEAP[HEAP[c+4]+84]&131072)==0?14:9;break;case 9:b=HEAP[HEAP[HEAP[c+4]+48]+152]==0?14:10;break;case 10:h=_PyNumber_AsSsize_t(c, -HEAP[_PyExc_IndexError]);b=h==-1?11:13;break;case 11:b=_PyErr_Occurred()!=0?12:13;break;case 12:d=0;b=17;break;case 13:d=_PySequence_GetItem(a,h);b=17;break;case 14:b=HEAP[HEAP[HEAP[a+4]+52]+12]!=0?15:16;break;case 15:d=_type_error(__str2,c);b=17;break;case 16:d=_type_error(__str3,a);b=17;break;case 17:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_SetItem(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=c==0?3:1;break;case 1:a=d==0?3:2;break;case 2:a=f==0?3:4;break;case 3:_null_error();h=-1;a=18;break;case 4:j=HEAP[HEAP[c+4]+56];a=j!=0?5:7;break;case 5:a=HEAP[j+8]!=0?6:7;break;case 6:h=FUNCTION_TABLE[HEAP[j+8]](c,d,f);a=18;break;case 7:a=HEAP[HEAP[c+4]+52]!=0?8:17;break;case 8:a=HEAP[HEAP[d+4]+48]==0?15:9;break;case 9:a=(HEAP[HEAP[d+4]+84]&131072)==0?15:10;break;case 10:a=HEAP[HEAP[HEAP[d+4]+48]+152]== -0?15:11;break;case 11:k=_PyNumber_AsSsize_t(d,HEAP[_PyExc_IndexError]);a=k==-1?12:14;break;case 12:a=_PyErr_Occurred()!=0?13:14;break;case 13:h=-1;a=18;break;case 14:h=_PySequence_SetItem(c,k,f);a=18;break;case 15:a=HEAP[HEAP[HEAP[c+4]+52]+20]!=0?16:17;break;case 16:_type_error(__str2,d);h=-1;a=18;break;case 17:_type_error(__str4,c);h=-1;a=18;break;case 18:return g=h;default:assert(0,"bad label: "+a)}} -function _PyObject_DelItem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?2:1;break;case 1:b=c==0?2:3;break;case 2:_null_error();d=-1;b=17;break;case 3:f=HEAP[HEAP[a+4]+56];b=f!=0?4:6;break;case 4:b=HEAP[f+8]!=0?5:6;break;case 5:d=FUNCTION_TABLE[HEAP[f+8]](a,c,0);b=17;break;case 6:b=HEAP[HEAP[a+4]+52]!=0?7:16;break;case 7:b=HEAP[HEAP[c+4]+48]==0?14:8;break;case 8:b=(HEAP[HEAP[c+4]+84]&131072)==0?14:9;break;case 9:b=HEAP[HEAP[HEAP[c+4]+48]+152]==0?14:10;break;case 10:h=_PyNumber_AsSsize_t(c, -HEAP[_PyExc_IndexError]);b=h==-1?11:13;break;case 11:b=_PyErr_Occurred()!=0?12:13;break;case 12:d=-1;b=17;break;case 13:d=_PySequence_DelItem(a,h);b=17;break;case 14:b=HEAP[HEAP[HEAP[a+4]+52]+20]!=0?15:16;break;case 15:_type_error(__str2,c);d=-1;b=17;break;case 16:_type_error(__str5,a);d=-1;b=17;break;case 17:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_DelItemString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?2:1;break;case 1:b=c==0?2:3;break;case 2:_null_error();d=-1;b=8;break;case 3:f=_PyString_FromString(c);b=f==0?4:5;break;case 4:d=-1;b=8;break;case 5:h=_PyObject_DelItem(a,f);HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:d=h;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_AsCharBuffer(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m;d=g;f=e;h=b;c=d==0?3:1;break;case 1:c=f==0?3:2;break;case 2:c=h==0?3:4;break;case 3:_null_error();j=-1;c=13;break;case 4:k=HEAP[HEAP[d+4]+80];c=k==0?7:5;break;case 5:c=HEAP[k+12]==0?7:6;break;case 6:c=HEAP[k+8]==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str6);j=-1;c=13;break;case 8:c=FUNCTION_TABLE[HEAP[k+8]](d,0)!=1?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str7);j=-1;c=13;break;case 10:m=FUNCTION_TABLE[HEAP[k+12]](d,0,l);c=m<0?11:12;break;case 11:j=-1;c=13;break;case 12:HEAP[f]=HEAP[l];HEAP[h]=m;j=0;c=13;break;case 13:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyObject_CheckReadBuffer(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[HEAP[b+4]+80];e=c==0?4:1;break;case 1:e=HEAP[c]==0?4:2;break;case 2:e=HEAP[c+8]==0?4:3;break;case 3:e=FUNCTION_TABLE[HEAP[c+8]](b,0)!=1?4:5;break;case 4:a=0;e=6;break;case 5:a=1;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyObject_AsReadBuffer(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m;d=g;f=e;h=b;c=d==0?3:1;break;case 1:c=f==0?3:2;break;case 2:c=h==0?3:4;break;case 3:_null_error();j=-1;c=13;break;case 4:k=HEAP[HEAP[d+4]+80];c=k==0?7:5;break;case 5:c=HEAP[k]==0?7:6;break;case 6:c=HEAP[k+8]==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str8);j=-1;c=13;break;case 8:c=FUNCTION_TABLE[HEAP[k+8]](d,0)!=1?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str7);j=-1;c=13;break;case 10:m=FUNCTION_TABLE[HEAP[k]](d,0,l);c=m<0?11:12;break;case 11:j=-1;c=13;break;case 12:HEAP[f]=HEAP[l];HEAP[h]=m;j=0;c=13;break;case 13:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyObject_AsWriteBuffer(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m;d=g;f=e;h=b;c=d==0?3:1;break;case 1:c=f==0?3:2;break;case 2:c=h==0?3:4;break;case 3:_null_error();j=-1;c=13;break;case 4:k=HEAP[HEAP[d+4]+80];c=k==0?7:5;break;case 5:c=HEAP[k+4]==0?7:6;break;case 6:c=HEAP[k+8]==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str9);j=-1;c=13;break;case 8:c=FUNCTION_TABLE[HEAP[k+8]](d,0)!=1?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str7);j=-1;c=13;break;case 10:m=FUNCTION_TABLE[HEAP[k+4]](d,0,l);c=m<0?11:12;break;case 11:j=-1;c=13;break;case 12:HEAP[f]=HEAP[l];HEAP[h]=m;j=0;c=13;break;case 13:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyObject_GetBuffer(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=HEAP[HEAP[c+4]+80]==0?3:1;break;case 1:a=(HEAP[HEAP[c+4]+84]&2097152)==0?3:2;break;case 2:a=HEAP[HEAP[HEAP[c+4]+80]+16]==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_TypeError],__str10,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=-1;a=5;break;case 4:h=FUNCTION_TABLE[HEAP[HEAP[HEAP[c+4]+80]+16]](c,d,f);a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}} -function __IsFortranContiguous(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;e=HEAP[b+20]==0?1:2;break;case 1:c=1;e=18;break;case 2:var j=b;e=HEAP[b+32]==0?3:4;break;case 3:c=HEAP[j+20]==1;e=18;break;case 4:d=HEAP[j+12];e=HEAP[b+20]==1?5:10;break;case 5:e=HEAP[HEAP[b+28]]==1?7:6;break;case 6:e=HEAP[HEAP[b+32]]==d?7:8;break;case 7:a=1;e=9;break;case 8:a=0;e=9;break;case 9:c=a;e=18;break;case 10:h=0;e=16;break;case 11:f=HEAP[HEAP[b+28]+4*h];e=f==0?12:13;break;case 12:c=1;e=18;break;case 13:e= -HEAP[HEAP[b+32]+4*h]!=d?14:15;break;case 14:c=0;e=18;break;case 15:d*=f;h+=1;e=16;break;case 16:e=HEAP[b+20]>h?11:17;break;case 17:c=1;e=18;break;case 18:return g=c;default:assert(0,"bad label: "+e)}} -function __IsCContiguous(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j;a=g;e=HEAP[a+20]==0?1:2;break;case 1:d=1;e=18;break;case 2:e=HEAP[a+32]==0?3:4;break;case 3:d=1;e=18;break;case 4:f=HEAP[a+12];var k=a;e=HEAP[a+20]==1?5:10;break;case 5:e=HEAP[HEAP[k+28]]==1?7:6;break;case 6:e=HEAP[HEAP[a+32]]==f?7:8;break;case 7:c=1;e=9;break;case 8:c=0;e=9;break;case 9:d=c;e=18;break;case 10:var l=HEAP[k+20]-1;j=l;b=10;e=16;break;case 11:h=HEAP[HEAP[a+28]+4*j];e=h==0?12:13;break;case 12:d=1;e= -18;break;case 13:e=HEAP[HEAP[a+32]+4*j]!=f?14:15;break;case 14:d=0;e=18;break;case 15:f*=h;var m=j-1;j=m;b=15;e=16;break;case 16:e=(b==15?m:l)>=0?11:17;break;case 17:d=1;e=18;break;case 18:return g=d;default:assert(0,"bad label: "+e)}} -function _PyBuffer_IsContiguous(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[a+36]!=0?1:2;break;case 1:f=0;b=13;break;case 2:b=c==67?3:4;break;case 3:f=__IsCContiguous(a);b=13;break;case 4:b=c==70?5:6;break;case 5:f=__IsFortranContiguous(a);b=13;break;case 6:b=c==65?7:12;break;case 7:b=__IsCContiguous(a)!=0?9:8;break;case 8:b=__IsFortranContiguous(a)!=0?9:10;break;case 9:d=1;b=11;break;case 10:d=0;b=11;break;case 11:f=d;b=13;break;case 12:f=0;b=13;break;case 13:return b=f;default:assert(0, -"bad label: "+b)}}function _PyBuffer_GetPointer(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;d=HEAP[a];f=0;b=HEAP[a+20]>f?1:5;break;case 1:d+=HEAP[c+4*f]*HEAP[HEAP[a+32]+4*f];b=HEAP[a+36]!=0?2:4;break;case 2:b=HEAP[HEAP[a+36]+4*f]>=0?3:4;break;case 3:d=HEAP[d]+HEAP[HEAP[a+36]+4*f];b=4;break;case 4:f+=1;b=HEAP[a+20]>f?1:5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function __Py_add_one_to_index_F(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;h=0;a=4;break;case 1:var j=d+4*h;a=HEAP[d+4*h]=0?1:5;break;case 5:return;default:assert(0,"bad label: "+a)}} -function _PyBuffer_ToContiguous(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;j=a;c=HEAP[f+8]l?7:8;break;case 7:HEAP[n+4*l]=0;l+=1;c=HEAP[f+20]>l?7:8;break;case 8:c=j==70?9:10;break;case 9:m= -2;c=11;break;case 10:m=4;c=11;break;case 11:p=d;o=h/HEAP[f+12]|0;o=c=o-1;c=c!=-1?12:13;break;case 12:FUNCTION_TABLE[m](HEAP[f+20],n,HEAP[f+28]);c=_PyBuffer_GetPointer(f,n);_llvm_memcpy_p0i8_p0i8_i32(p,c,HEAP[f+12],1,0);p+=HEAP[f+12];o=c=o-1;c=c!=-1?12:13;break;case 13:_PyMem_Free(n);k=0;c=14;break;case 14:return g=k;default:assert(0,"bad label: "+c)}} -function _PyBuffer_FromContiguous(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;j=a;c=HEAP[d+8]l?7:8;break;case 7:HEAP[n+4*l]=0;l+=1;c=HEAP[d+20]>l?7:8;break;case 8:c=j==70?9:10;break;case 9:m= -2;c=11;break;case 10:m=4;c=11;break;case 11:p=f;o=h/HEAP[d+12]|0;o=c=o-1;c=c!=-1?12:13;break;case 12:FUNCTION_TABLE[m](HEAP[d+20],n,HEAP[d+28]);c=_PyBuffer_GetPointer(d,n);_llvm_memcpy_p0i8_p0i8_i32(c,p,HEAP[d+12],1,0);p+=HEAP[d+12];o=c=o-1;c=c!=-1?12:13;break;case 13:_PyMem_Free(n);k=0;c=14;break;case 14:return g=k;default:assert(0,"bad label: "+c)}} -function _PyObject_CopyData(g,e){var b=STACKTOP;STACKTOP+=104;_memset(b,0,104);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+52,k,l,m,n;c=g;d=e;a=HEAP[HEAP[c+4]+80]==0?6:1;break;case 1:a=(HEAP[HEAP[c+4]+84]&2097152)==0?6:2;break;case 2:a=HEAP[HEAP[HEAP[c+4]+80]+16]==0?6:3;break;case 3:a=HEAP[HEAP[d+4]+80]==0?6:4;break;case 4:a=(HEAP[HEAP[d+4]+84]&2097152)==0?6:5;break;case 5:a=HEAP[HEAP[HEAP[d+4]+80]+16]==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str11);f=-1;a=29;break;case 7:a= -_PyObject_GetBuffer(c,h,285)!=0?8:9;break;case 8:f=-1;a=29;break;case 9:a=_PyObject_GetBuffer(d,j,284)!=0?10:11;break;case 10:_PyBuffer_Release(h);f=-1;a=29;break;case 11:a=HEAP[h+8]k?21:22;break;case 21:HEAP[l+4*k]=0;k+=1;a=HEAP[o]>k?21:22;break;case 22:m=1;k=0;var p=j+20;a=HEAP[p]>k?23:25;break;case 23:var q=j+28;a=24;break;case 24:m*=HEAP[HEAP[q]+4*k];k+=1;a=HEAP[p]> -k?24:25;break;case 25:m=a=m-1;a=a!=-1?26:28;break;case 26:var r=j+28,u=j+20,s=j+12;a=27;break;case 27:__Py_add_one_to_index_C(HEAP[u],l,HEAP[r]);a=_PyBuffer_GetPointer(h,l);n=_PyBuffer_GetPointer(j,l);_llvm_memcpy_p0i8_p0i8_i32(a,n,HEAP[s],1,0);m=a=m-1;a=a!=-1?27:28;break;case 28:_PyMem_Free(l);_PyBuffer_Release(h);_PyBuffer_Release(j);f=0;a=29;break;case 29:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyBuffer_FillContiguousStrides(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l;f=g;h=e;j=b;k=a;d=c;d=d==70?1:3;break;case 1:l=0;d=l=0?4:5;break;case 4:HEAP[j+4*l]=k;k*=HEAP[h+4*l];l=d=l-1;d=d>=0?4:5;break;case 5:return;default:assert(0,"bad label: "+d)}} -function _PyBuffer_FillInfo(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o;h=g;j=e;k=b;l=a;m=c;n=d;f=h==0?1:2;break;case 1:o=0;f=14;break;case 2:f=(n&1)!=0?3:5;break;case 3:f=m==1?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_BufferError],__str13);o=-1;f=14;break;case 5:HEAP[h+4]=j;f=j!=0?6:7;break;case 6:HEAP[j]+=1;f=7;break;case 7:HEAP[h]=k;HEAP[h+8]=l;HEAP[h+16]=m;HEAP[h+12]=1;HEAP[h+24]=0;f=(n&4)!=0?8:9;break;case 8:HEAP[h+24]=__str14;f=9;break;case 9:HEAP[h+20]=1;HEAP[h+28]= -0;f=(n&8)!=0?10:11;break;case 10:HEAP[h+28]=h+8;f=11;break;case 11:HEAP[h+32]=0;f=(n&24)==24?12:13;break;case 12:HEAP[h+32]=h+12;f=13;break;case 13:HEAP[h+36]=0;o=HEAP[h+48]=0;f=14;break;case 14:return g=o;default:assert(0,"bad label: "+f)}} -function _PyBuffer_Release(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[b+4];e=a!=0?1:7;break;case 1:e=HEAP[HEAP[a+4]+80]!=0?2:4;break;case 2:e=HEAP[HEAP[HEAP[a+4]+80]+20]!=0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+4]+80]+20]](a,b);e=4;break;case 4:e=a!=0?5:7;break;case 5:HEAP[a]-=1;e=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=7;break;case 7:HEAP[b+4]=0;return;default:assert(0,"bad label: "+e)}} -function _PyObject_Format(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q;c=g;d=e;h=f=0;b=d==0?1:2;break;case 1:d=f=_PyString_FromStringAndSize(0,0);b=2;break;case 2:b=(HEAP[HEAP[d+4]+84]&268435456)!=0?3:4;break;case 3:j=1;b=7;break;case 4:b=(HEAP[HEAP[d+4]+84]&134217728)!=0?5:6;break;case 5:j=0;b=7;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str15,allocate([HEAP[HEAP[d+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=44;break;case 7:var r=c;b=HEAP[c+4]==_PyInstance_Type? -8:26;break;case 8:l=_PyObject_GetAttrString(r,__str16);b=l!=0?9:11;break;case 9:h=_PyObject_CallFunctionObjArgs(l,allocate([d,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[l]-=1;b=HEAP[l]==0?10:31;break;case 10:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=31;break;case 11:n=m=0;_PyErr_Clear();var u=d;b=j!=0?12:13;break;case 12:o=HEAP[u+8];var s=_PyObject_Unicode(c);m=s;a=12;b=14;break;case 13:o=HEAP[u+8];var t=_PyObject_Str(c);m=t;a=13;b=14;break;case 14:b=(a==13?t:s)== -0?19:15;break;case 15:b=o>0?16:17;break;case 16:b=_PyErr_WarnEx(HEAP[_PyExc_PendingDeprecationWarning],__str17,1)<0?19:17;break;case 17:n=b=_PyObject_GetAttrString(m,__str16);b=b==0?19:18;break;case 18:h=_PyObject_CallFunctionObjArgs(n,allocate([d,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=19;break;case 19:b=m!=0?20:22;break;case 20:HEAP[m]-=1;b=HEAP[m]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);b=22;break;case 22:b=n!=0?23:25;break;case 23:HEAP[n]-= -1;b=HEAP[n]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=25;break;case 25:b=h==0|h==0?44:32;break;case 26:p=__PyObject_LookupSpecial(r,__str16,_format_cache_9213);b=p==0?27:29;break;case 27:b=_PyErr_Occurred()==0?28:44;break;case 28:_PyErr_Format(HEAP[_PyExc_TypeError],__str18,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=44;break;case 29:h=_PyObject_CallFunctionObjArgs(p,allocate([d,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[p]-= -1;b=HEAP[p]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);b=31;break;case 31:b=h==0?44:32;break;case 32:b=(HEAP[HEAP[h+4]+84]&268435456)!=0?33:34;break;case 33:k=1;b=39;break;case 34:b=(HEAP[HEAP[h+4]+84]&134217728)!=0?35:36;break;case 35:k=0;b=39;break;case 36:_PyErr_Format(HEAP[_PyExc_TypeError],__str19,allocate([HEAP[HEAP[c+4]+12],0,0,0,HEAP[HEAP[h+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[h]-=1;b=HEAP[h]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h); -b=38;break;case 38:h=0;b=44;break;case 39:b=j!=0?40:44;break;case 40:b=k==0?41:44;break;case 41:q=_PyObject_Unicode(h);HEAP[h]-=1;b=HEAP[h]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=43;break;case 43:h=q;b=44;break;case 44:b=f!=0?45:47;break;case 45:HEAP[f]-=1;b=HEAP[f]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=47;break;case 47:return a=h;default:assert(0,"bad label: "+b)}} -function _PyNumber_Check(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?5:1;break;case 1:e=HEAP[HEAP[b+4]+48]==0?5:2;break;case 2:e=HEAP[HEAP[HEAP[b+4]+48]+72]!=0?4:3;break;case 3:e=HEAP[HEAP[HEAP[b+4]+48]+80]!=0?4:5;break;case 4:a=1;e=6;break;case 5:a=0;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _binary_op1(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c,d=null;for(c=-1;;)switch(c){case -1:var f=a,h=a+4,j,k,l,m,n,o,p,q;HEAP[f]=g;HEAP[h]=e;j=b;n=m=0;c=HEAP[HEAP[HEAP[f]+4]+48]!=0?1:3;break;case 1:c=(HEAP[HEAP[HEAP[f]+4]+84]&16)!=0?2:3;break;case 2:m=HEAP[HEAP[HEAP[HEAP[f]+4]+48]+j];c=3;break;case 3:c=HEAP[HEAP[h]+4]!=HEAP[HEAP[f]+4]?4:8;break;case 4:c=HEAP[HEAP[HEAP[h]+4]+48]!=0?5:8;break;case 5:c=(HEAP[HEAP[HEAP[h]+4]+84]&16)!=0?6:8;break;case 6:n=HEAP[HEAP[HEAP[HEAP[h]+4]+ -48]+j];var r=m;n==r?(d=6,c=7):(d=6,c=9);break;case 7:n=0;c=8;break;case 8:var u=m,d=8;c=9;break;case 9:c=(d==8?u:r)!=0?10:21;break;case 10:c=n!=0?11:17;break;case 11:c=_PyType_IsSubtype(HEAP[HEAP[h]+4],HEAP[HEAP[f]+4])!=0?12:17;break;case 12:var s=l=FUNCTION_TABLE[n](HEAP[f],HEAP[h]);c=l!=__Py_NotImplementedStruct?13:14;break;case 13:k=s;c=43;break;case 14:HEAP[l]=HEAP[s]-1;c=HEAP[l]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=16;break;case 16:n=0;c=17;break;case 17:var t=l=c=FUNCTION_TABLE[m](HEAP[f], -HEAP[h]);c=c!=__Py_NotImplementedStruct?18:19;break;case 18:k=t;c=43;break;case 19:HEAP[l]=HEAP[t]-1;c=HEAP[l]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=21;break;case 21:c=n!=0?22:26;break;case 22:var v=l=FUNCTION_TABLE[n](HEAP[f],HEAP[h]);c=l!=__Py_NotImplementedStruct?23:24;break;case 23:k=v;c=43;break;case 24:HEAP[l]=HEAP[v]-1;c=HEAP[l]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=26;break;case 26:c=(HEAP[HEAP[HEAP[f]+4]+84]&16)==0?28:27;break;case 27:c=(HEAP[HEAP[HEAP[h]+ -4]+84]&16)==0?28:42;break;case 28:o=c=_PyNumber_CoerceEx(f,h);c=c<0?29:30;break;case 29:k=0;c=43;break;case 30:c=o==0?31:42;break;case 31:p=HEAP[HEAP[HEAP[f]+4]+48];c=p!=0?32:38;break;case 32:q=HEAP[p+j];c=q!=0?33:38;break;case 33:l=FUNCTION_TABLE[q](HEAP[f],HEAP[h]);c=HEAP[f];HEAP[c]-=1;c=HEAP[c]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);c=35;break;case 35:c=HEAP[h];HEAP[c]-=1;c=HEAP[c]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);c=37;break; -case 37:k=l;c=43;break;case 38:c=HEAP[f];HEAP[c]-=1;c=HEAP[c]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);c=40;break;case 40:c=HEAP[h];HEAP[c]-=1;c=HEAP[c]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);c=42;break;case 42:HEAP[__Py_NotImplementedStruct]+=1;k=__Py_NotImplementedStruct;c=43;break;case 43:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _binop_type_error(g,e,b){_PyErr_Format(HEAP[_PyExc_TypeError],__str20,allocate([b,0,0,0,HEAP[HEAP[g+4]+12],0,0,0,HEAP[HEAP[e+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));return 0} -function _binary_op(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;f=e;c=b;h=a;var l=k=_binary_op1(d,f,c);c=k==__Py_NotImplementedStruct?1:4;break;case 1:HEAP[k]=HEAP[l]-1;c=HEAP[k]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);c=3;break;case 3:j=_binop_type_error(d,f,h);c=5;break;case 4:j=l;c=5;break;case 5:return g=j;default:assert(0,"bad label: "+c)}} -function _ternary_op(g,e,b,a){var c=STACKTOP;STACKTOP+=24;_memset(c,0,24);var d,f=null;for(d=-1;;)switch(d){case -1:var h=c,j=c+4,k,l,m,n,o,p,q,r,u,s,t=c+8,v=c+12,w=c+16,x=c+20,y;HEAP[h]=g;HEAP[j]=e;k=b;l=a;s=u=r=q=0;n=HEAP[HEAP[HEAP[h]+4]+48];o=HEAP[HEAP[HEAP[j]+4]+48];d=n!=0?1:3;break;case 1:d=(HEAP[HEAP[HEAP[h]+4]+84]&16)!=0?2:3;break;case 2:r=HEAP[n+l];d=3;break;case 3:d=HEAP[HEAP[j]+4]!=HEAP[HEAP[h]+4]?4:8;break;case 4:d=o!=0?5:8;break;case 5:d=(HEAP[HEAP[HEAP[j]+4]+84]&16)!=0?6:8;break;case 6:u= -HEAP[o+l];var z=r;u==z?(f=6,d=7):(f=6,d=9);break;case 7:u=0;d=8;break;case 8:var C=r,f=8;d=9;break;case 9:d=(f==8?C:z)!=0?10:21;break;case 10:d=u!=0?11:17;break;case 11:d=_PyType_IsSubtype(HEAP[HEAP[j]+4],HEAP[HEAP[h]+4])!=0?12:17;break;case 12:var A=q=FUNCTION_TABLE[u](HEAP[h],HEAP[j],k);d=q!=__Py_NotImplementedStruct?13:14;break;case 13:m=A;d=73;break;case 14:HEAP[q]=HEAP[A]-1;d=HEAP[q]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=16;break;case 16:u=0;d=17;break;case 17:var G= -q=d=FUNCTION_TABLE[r](HEAP[h],HEAP[j],k);d=d!=__Py_NotImplementedStruct?18:19;break;case 18:m=G;d=73;break;case 19:HEAP[q]=HEAP[G]-1;d=HEAP[q]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=21;break;case 21:d=u!=0?22:26;break;case 22:var E=q=FUNCTION_TABLE[u](HEAP[h],HEAP[j],k);d=q!=__Py_NotImplementedStruct?23:24;break;case 23:m=E;d=73;break;case 24:HEAP[q]=HEAP[E]-1;d=HEAP[q]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=26;break;case 26:p=HEAP[HEAP[k+4]+48];d=HEAP[HEAP[k+ -4]+48]!=0?27:36;break;case 27:d=(HEAP[HEAP[k+4]+84]&16)!=0?28:36;break;case 28:s=HEAP[p+l];d=s==r?30:29;break;case 29:var D=s;d=D==u?30:31;break;case 30:s=0;d=36;break;case 31:d=D!=0?32:36;break;case 32:var R=q=FUNCTION_TABLE[s](HEAP[h],HEAP[j],k);d=q!=__Py_NotImplementedStruct?33:34;break;case 33:m=R;d=73;break;case 34:HEAP[q]=HEAP[R]-1;d=HEAP[q]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=36;break;case 36:d=(HEAP[HEAP[HEAP[h]+4]+84]&16)==0?40:37;break;case 37:d=(HEAP[HEAP[HEAP[j]+ -4]+84]&16)==0?40:38;break;case 38:d=k==__Py_NoneStruct?70:39;break;case 39:d=(HEAP[HEAP[k+4]+84]&16)==0?40:69;break;case 40:var M=_PyNumber_Coerce(h,j);y=M;M!=0?(f=40,d=67):(f=40,d=41);break;case 41:var L=HEAP[h];d=k==__Py_NoneStruct?42:47;break;case 42:d=HEAP[HEAP[L+4]+48]!=0?43:46;break;case 43:s=HEAP[HEAP[HEAP[HEAP[h]+4]+48]+l];d=s!=0?44:45;break;case 44:q=FUNCTION_TABLE[s](HEAP[h],HEAP[j],k);d=62;break;case 45:y=-1;d=62;break;case 46:y=-1;d=62;break;case 47:HEAP[t]=L;HEAP[v]=k;y=_PyNumber_Coerce(t, -v);d=y!=0?62:48;break;case 48:HEAP[w]=HEAP[j];HEAP[x]=HEAP[v];y=_PyNumber_Coerce(w,x);d=y!=0?58:49;break;case 49:d=HEAP[HEAP[HEAP[t]+4]+48]!=0?50:53;break;case 50:r=HEAP[HEAP[HEAP[HEAP[t]+4]+48]+l];d=r!=0?51:52;break;case 51:q=FUNCTION_TABLE[r](HEAP[t],HEAP[w],HEAP[x]);d=54;break;case 52:y=-1;d=54;break;case 53:y=-1;d=54;break;case 54:d=HEAP[w];HEAP[d]-=1;d=HEAP[d]==0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[HEAP[w]+4]+24]](HEAP[w]);d=56;break;case 56:d=HEAP[x];HEAP[d]-=1;d=HEAP[d]==0?57:58;break; -case 57:FUNCTION_TABLE[HEAP[HEAP[HEAP[x]+4]+24]](HEAP[x]);d=58;break;case 58:d=HEAP[t];HEAP[d]-=1;d=HEAP[d]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[HEAP[t]+4]+24]](HEAP[t]);d=60;break;case 60:d=HEAP[v];HEAP[d]-=1;d=HEAP[d]==0?61:62;break;case 61:FUNCTION_TABLE[HEAP[HEAP[HEAP[v]+4]+24]](HEAP[v]);d=62;break;case 62:d=HEAP[h];HEAP[d]-=1;d=HEAP[d]==0?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);d=64;break;case 64:d=HEAP[j];HEAP[d]-=1;d=HEAP[d]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+ -4]+24]](HEAP[j]);d=66;break;case 66:var I=y,f=66;d=67;break;case 67:d=(f==66?I:M)>=0?68:69;break;case 68:m=q;d=73;break;case 69:d=k==__Py_NoneStruct?70:71;break;case 70:_PyErr_Format(HEAP[_PyExc_TypeError],__str21,allocate([HEAP[HEAP[HEAP[h]+4]+12],0,0,0,HEAP[HEAP[HEAP[j]+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=72;break;case 71:_PyErr_Format(HEAP[_PyExc_TypeError],__str22,allocate([HEAP[HEAP[HEAP[h]+4]+12],0,0,0,HEAP[HEAP[HEAP[j]+4]+12],0,0,0,HEAP[HEAP[k+4]+12],0,0,0],["i8*",0,0,0, -"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=72;break;case 72:m=0;d=73;break;case 73:return g=m,STACKTOP=c,g;default:assert(0,"bad label: "+d)}}function _PyNumber_Or(g,e){return _binary_op(g,e,64,__str23)}function _PyNumber_Xor(g,e){return _binary_op(g,e,60,__str24)}function _PyNumber_And(g,e){return _binary_op(g,e,56,__str25)}function _PyNumber_Lshift(g,e){return _binary_op(g,e,48,__str26)}function _PyNumber_Rshift(g,e){return _binary_op(g,e,52,__str27)} -function _PyNumber_Subtract(g,e){return _binary_op(g,e,4,__str28)}function _PyNumber_Divide(g,e){return _binary_op(g,e,12,__str29)}function _PyNumber_Divmod(g,e){return _binary_op(g,e,20,__str30)} -function _PyNumber_Add(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=_binary_op1(a,c,0);b=f==__Py_NotImplementedStruct?1:7;break;case 1:h=HEAP[HEAP[a+4]+52];HEAP[f]-=1;b=HEAP[f]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=3;break;case 3:b=h!=0?4:6;break;case 4:b=HEAP[h+4]!=0?5:6;break;case 5:d=FUNCTION_TABLE[HEAP[h+4]](a,c);b=8;break;case 6:f=_binop_type_error(a,c,__str31);b=7;break;case 7:d=f;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _sequence_repeat(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[HEAP[f+4]+48]==0?7:1;break;case 1:a=(HEAP[HEAP[f+4]+84]&131072)==0?7:2;break;case 2:a=HEAP[HEAP[HEAP[f+4]+48]+152]==0?7:3;break;case 3:j=_PyNumber_AsSsize_t(f,HEAP[_PyExc_OverflowError]);a=j==-1?4:6;break;case 4:a=_PyErr_Occurred()!=0?5:6;break;case 5:h=0;a=8;break;case 6:h=FUNCTION_TABLE[c](d,j);a=8;break;case 7:h=_type_error(__str32,f);a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _PyNumber_Multiply(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=_binary_op1(a,c,8);b=f==__Py_NotImplementedStruct?1:10;break;case 1:h=HEAP[HEAP[a+4]+52];j=HEAP[HEAP[c+4]+52];HEAP[f]-=1;b=HEAP[f]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=3;break;case 3:b=h==0?6:4;break;case 4:b=HEAP[h+8]==0?6:5;break;case 5:d=_sequence_repeat(HEAP[h+8],a,c);b=11;break;case 6:b=j!=0?7:9;break;case 7:b=HEAP[j+8]!=0?8:9;break;case 8:d=_sequence_repeat(HEAP[j+8],c,a);b=11; -break;case 9:f=_binop_type_error(a,c,__str33);b=10;break;case 10:d=f;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}}function _PyNumber_FloorDivide(g,e){return _binary_op(g,e,136,__str34)}function _PyNumber_TrueDivide(g,e){return _binary_op(g,e,140,__str29)}function _PyNumber_Remainder(g,e){return _binary_op(g,e,16,__str35)}function _PyNumber_Power(g,e,b){return _ternary_op(g,e,b,24,__str36)} -function _binary_iop1(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;l=HEAP[HEAP[d+4]+48];c=l!=0?1:7;break;case 1:c=(HEAP[HEAP[d+4]+84]&8)!=0?2:7;break;case 2:m=HEAP[l+h];c=m!=0?3:7;break;case 3:var o=n=FUNCTION_TABLE[m](d,f);c=n!=__Py_NotImplementedStruct?4:5;break;case 4:k=o;c=8;break;case 5:HEAP[n]=HEAP[o]-1;c=HEAP[n]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=7;break;case 7:k=_binary_op1(d,f,j);c=8;break;case 8:return g=k;default:assert(0,"bad label: "+ -c)}}function _binary_iop(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l;f=g;h=e;d=b;j=a;k=c;var m=j=_binary_iop1(f,h,d,j);d=j==__Py_NotImplementedStruct?1:4;break;case 1:HEAP[j]=HEAP[m]-1;d=HEAP[j]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);d=3;break;case 3:l=_binop_type_error(f,h,k);d=5;break;case 4:l=m;d=5;break;case 5:return g=l;default:assert(0,"bad label: "+d)}}function _PyNumber_InPlaceOr(g,e){return _binary_iop(g,e,132,64,__str37)} -function _PyNumber_InPlaceXor(g,e){return _binary_iop(g,e,128,60,__str38)}function _PyNumber_InPlaceAnd(g,e){return _binary_iop(g,e,124,56,__str39)}function _PyNumber_InPlaceLshift(g,e){return _binary_iop(g,e,116,48,__str40)}function _PyNumber_InPlaceRshift(g,e){return _binary_iop(g,e,120,52,__str41)}function _PyNumber_InPlaceSubtract(g,e){return _binary_iop(g,e,96,4,__str42)}function _PyNumber_InPlaceDivide(g,e){return _binary_iop(g,e,104,12,__str43)} -function _PyNumber_InPlaceFloorDivide(g,e){return _binary_iop(g,e,144,136,__str44)}function _PyNumber_InPlaceTrueDivide(g,e){return _binary_iop(g,e,148,140,__str43)} -function _PyNumber_InPlaceAdd(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;h=_binary_iop1(c,d,92,0);b=h==__Py_NotImplementedStruct?1:13;break;case 1:j=HEAP[HEAP[c+4]+52];HEAP[h]-=1;b=HEAP[h]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=3;break;case 3:b=j!=0?4:12;break;case 4:k=0;b=(HEAP[HEAP[c+4]+84]&8)!=0?5:6;break;case 5:var l=HEAP[j+32];k=l;a=5;b=7;break;case 6:var m=k,a=6;b=7;break;case 7:b=(a==6?m:l)==0?8:9;break;case 8:var n=HEAP[j+4];k=n;a=8;b=10;break; -case 9:var o=k,a=9;b=10;break;case 10:b=(a==9?o:n)!=0?11:12;break;case 11:f=FUNCTION_TABLE[k](c,d);b=14;break;case 12:h=_binop_type_error(c,d,__str45);b=13;break;case 13:f=h;b=14;break;case 14:return b=f;default:assert(0,"bad label: "+b)}} -function _PyNumber_InPlaceMultiply(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;h=_binary_iop1(c,d,100,8);b=h==__Py_NotImplementedStruct?1:16;break;case 1:j=0;k=HEAP[HEAP[c+4]+52];l=HEAP[HEAP[d+4]+52];HEAP[h]-=1;b=HEAP[h]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=3;break;case 3:b=k!=0?4:12;break;case 4:b=(HEAP[HEAP[c+4]+84]&8)!=0?5:6;break;case 5:var m=HEAP[k+36];j=m;a=5;b=7;break;case 6:var n=j,a=6;b=7;break;case 7:b=(a==6?n:m)==0?8:9;break;case 8:var o= -HEAP[k+8];j=o;a=8;b=10;break;case 9:var p=j,a=9;b=10;break;case 10:b=(a==9?p:o)!=0?11:15;break;case 11:f=_sequence_repeat(j,c,d);b=17;break;case 12:b=l!=0?13:15;break;case 13:b=HEAP[l+8]!=0?14:15;break;case 14:f=_sequence_repeat(HEAP[l+8],d,c);b=17;break;case 15:h=_binop_type_error(c,d,__str46);b=16;break;case 16:f=h;b=17;break;case 17:return b=f;default:assert(0,"bad label: "+b)}}function _PyNumber_InPlaceRemainder(g,e){return _binary_iop(g,e,108,16,__str47)} -function _PyNumber_InPlacePower(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&8)==0?4:1;break;case 1:a=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:a=HEAP[HEAP[HEAP[c+4]+48]+112]==0?4:3;break;case 3:h=_ternary_op(c,d,f,112,__str48);a=5;break;case 4:h=_ternary_op(c,d,f,24,__str48);a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}} -function _PyNumber_Negative(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:a=_null_error();e=6;break;case 2:c=HEAP[HEAP[b+4]+48];e=c!=0?3:5;break;case 3:e=HEAP[c+28]!=0?4:5;break;case 4:a=FUNCTION_TABLE[HEAP[c+28]](b);e=6;break;case 5:a=_type_error(__str49,b);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyNumber_Positive(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:a=_null_error();e=6;break;case 2:c=HEAP[HEAP[b+4]+48];e=c!=0?3:5;break;case 3:e=HEAP[c+32]!=0?4:5;break;case 4:a=FUNCTION_TABLE[HEAP[c+32]](b);e=6;break;case 5:a=_type_error(__str50,b);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyNumber_Invert(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:a=_null_error();e=6;break;case 2:c=HEAP[HEAP[b+4]+48];e=c!=0?3:5;break;case 3:e=HEAP[c+44]!=0?4:5;break;case 4:a=FUNCTION_TABLE[HEAP[c+44]](b);e=6;break;case 5:a=_type_error(__str51,b);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyNumber_Absolute(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:a=_null_error();e=6;break;case 2:c=HEAP[HEAP[b+4]+48];e=c!=0?3:5;break;case 3:e=HEAP[c+36]!=0?4:5;break;case 4:a=FUNCTION_TABLE[HEAP[c+36]](b);e=6;break;case 5:a=_type_error(__str52,b);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _int_from_string(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j;c=g;d=e;j=_PyInt_FromString(c,h,10);a=j==0?1:2;break;case 1:f=0;a=7;break;case 2:a=c+d!=HEAP[h]?3:6;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str53);HEAP[j]-=1;a=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=5;break;case 5:f=0;a=7;break;case 6:f=j;a=7;break;case 7:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _PyNumber_Index(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=0;e=b==0?1:2;break;case 1:a=_null_error();e=16;break;case 2:e=(HEAP[HEAP[b+4]+84]&8388608)!=0?4:3;break;case 3:e=(HEAP[HEAP[b+4]+84]&16777216)!=0?4:5;break;case 4:HEAP[b]+=1;a=b;e=16;break;case 5:e=HEAP[HEAP[b+4]+48]==0?14:6;break;case 6:e=(HEAP[HEAP[b+4]+84]&131072)==0?14:7;break;case 7:e=HEAP[HEAP[HEAP[b+4]+48]+152]==0?14:8;break;case 8:c=FUNCTION_TABLE[HEAP[HEAP[HEAP[b+4]+48]+152]](b);e=c!=0?9:15;break;case 9:e=(HEAP[HEAP[c+ -4]+84]&8388608)==0?10:15;break;case 10:e=(HEAP[HEAP[c+4]+84]&16777216)==0?11:15;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError],__str54,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[c]-=1;e=HEAP[c]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=13;break;case 13:a=0;e=16;break;case 14:_PyErr_Format(HEAP[_PyExc_TypeError],__str55,allocate([HEAP[HEAP[b+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));e=15;break;case 15:a=c;e=16;break;case 16:return g=a;default:assert(0, -"bad label: "+e)}} -function _PyNumber_AsSsize_t(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;j=_PyNumber_Index(a);b=j==0?1:2;break;case 1:d=-1;b=13;break;case 2:f=_PyInt_AsSsize_t(j);b=f!=-1?10:3;break;case 3:h=_PyErr_Occurred();b=h==0?10:4;break;case 4:b=_PyErr_GivenExceptionMatches(h,HEAP[_PyExc_OverflowError])==0?10:5;break;case 5:_PyErr_Clear();b=c==0?6:9;break;case 6:b=__PyLong_Sign(j)<0?7:8;break;case 7:f=-2147483648;b=10;break;case 8:f=2147483647;b=10;break;case 9:_PyErr_Format(c,__str56,allocate([HEAP[HEAP[a+ -4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=10;break;case 10:HEAP[j]-=1;b=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=12;break;case 12:d=f;b=13;break;case 13:return b=d;default:assert(0,"bad label: "+b)}} -function __PyNumber_ConvertIntegralToInt(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j;c=g;d=e;HEAP[_int_name_10455]==0?(a=-1,b=1):(a=-1,b=4);break;case 1:b=_PyString_InternFromString(__str57);HEAP[_int_name_10455]=b;b=HEAP[_int_name_10455]==0?2:3;break;case 2:f=0;b=23;break;case 3:var k=c,a=3;b=4;break;case 4:b=(a==3?k:g)!=0?5:16;break;case 5:b=(HEAP[HEAP[c+4]+84]&8388608)==0?6:16;break;case 6:b=(HEAP[HEAP[c+4]+84]&16777216)==0?7:16;break;case 7:j=_PyObject_GetAttr(c,HEAP[_int_name_10455]); -b=j==0?8:9;break;case 8:_PyErr_Clear();b=17;break;case 9:HEAP[c]-=1;b=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=11;break;case 11:c=_PyEval_CallObjectWithKeywords(j,0,0);HEAP[j]-=1;b=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=13;break;case 13:b=c!=0?14:16;break;case 14:b=(HEAP[HEAP[c+4]+84]&8388608)==0?15:16;break;case 15:b=(HEAP[HEAP[c+4]+84]&16777216)==0?17:16;break;case 16:f=c;b=23;break;case 17:var l=c;b=HEAP[c+4]==_PyInstance_Type?18:19; -break;case 18:h=HEAP[HEAP[l+8]+16]+20;b=20;break;case 19:h=HEAP[HEAP[l+4]+12];b=20;break;case 20:_PyErr_Format(HEAP[_PyExc_TypeError],d,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[c]-=1;b=HEAP[c]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=22;break;case 22:f=0;b=23;break;case 23:return a=f;default:assert(0,"bad label: "+b)}} -function _PyNumber_Int(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j=e,k=e+4,l,m;c=g;HEAP[_trunc_name_10530]==0?(a=-1,b=1):(a=-1,b=4);break;case 1:b=_PyString_InternFromString(__str58);HEAP[_trunc_name_10530]=b;b=HEAP[_trunc_name_10530]==0?2:3;break;case 2:d=0;b=30;break;case 3:var n=c,a=3;b=4;break;case 4:b=(a==3?n:g)==0?5:6;break;case 5:d=_null_error();b=30;break;case 6:var o=c;b=HEAP[c+4]==_PyInt_Type?7:8;break;case 7:HEAP[c]=HEAP[o]+1;d=c; -b=30;break;case 8:f=HEAP[HEAP[o+4]+48];b=f!=0?9:17;break;case 9:b=HEAP[f+72]!=0?10:17;break;case 10:l=FUNCTION_TABLE[HEAP[f+72]](c);b=l!=0?11:16;break;case 11:b=(HEAP[HEAP[l+4]+84]&8388608)==0?12:16;break;case 12:b=(HEAP[HEAP[l+4]+84]&16777216)==0?13:16;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str59,allocate([HEAP[HEAP[l+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[l]-=1;b=HEAP[l]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=15;break;case 15:d=0;b=30;break;case 16:d= -l;b=30;break;case 17:b=(HEAP[HEAP[c+4]+84]&8388608)!=0?18:19;break;case 18:d=c;d=_PyInt_FromLong(HEAP[d+8]);b=30;break;case 19:h=_PyObject_GetAttr(c,HEAP[_trunc_name_10530]);b=h!=0?20:23;break;case 20:m=_PyEval_CallObjectWithKeywords(h,0,0);HEAP[h]-=1;b=HEAP[h]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=22;break;case 22:d=__PyNumber_ConvertIntegralToInt(m,__str60);b=30;break;case 23:_PyErr_Clear();var p=c;b=(HEAP[HEAP[c+4]+84]&134217728)!=0?24:25;break;case 24:d=_int_from_string(c+ -20,HEAP[p+8]);b=30;break;case 25:var q=c;b=(HEAP[HEAP[p+4]+84]&268435456)!=0?26:27;break;case 26:d=_PyInt_FromUnicode(HEAP[c+12],HEAP[q+8],10);b=30;break;case 27:b=_PyObject_AsCharBuffer(q,j,k)==0?28:29;break;case 28:d=_int_from_string(HEAP[j],HEAP[k]);b=30;break;case 29:d=_type_error(__str61,c);b=30;break;case 30:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _long_from_string(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j;c=g;d=e;j=_PyLong_FromString(c,h,10);a=j==0?1:2;break;case 1:f=0;a=7;break;case 2:a=c+d!=HEAP[h]?3:6;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str62);HEAP[j]-=1;a=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=5;break;case 5:f=0;a=7;break;case 6:f=j;a=7;break;case 7:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _PyNumber_Long(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j=e,k=e+4,l,m,n,o,p;c=g;HEAP[_trunc_name_10659]==0?(a=-1,b=1):(a=-1,b=4);break;case 1:b=_PyString_InternFromString(__str58);HEAP[_trunc_name_10659]=b;b=HEAP[_trunc_name_10659]==0?2:3;break;case 2:d=0;b=37;break;case 3:var q=c,a=3;b=4;break;case 4:b=(a==3?q:g)==0?5:6;break;case 5:d=_null_error();b=37;break;case 6:f=HEAP[HEAP[c+4]+48];b=f!=0?7:19;break;case 7:b=HEAP[f+76]!=0?8: -19;break;case 8:l=FUNCTION_TABLE[HEAP[f+76]](c);b=l==0?9:10;break;case 9:d=0;b=37;break;case 10:var r=l;b=(HEAP[HEAP[l+4]+84]&8388608)!=0?11:14;break;case 11:m=HEAP[r+8];HEAP[l]-=1;b=HEAP[l]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=13;break;case 13:d=_PyLong_FromLong(m);b=37;break;case 14:var u=l;b=(HEAP[HEAP[r+4]+84]&16777216)==0?15:18;break;case 15:_PyErr_Format(HEAP[_PyExc_TypeError],__str63,allocate([HEAP[HEAP[u+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[l]-=1;b=HEAP[l]== -0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=17;break;case 17:d=0;b=37;break;case 18:d=u;b=37;break;case 19:b=(HEAP[HEAP[c+4]+84]&16777216)!=0?20:21;break;case 20:d=__PyLong_Copy(c);b=37;break;case 21:h=_PyObject_GetAttr(c,HEAP[_trunc_name_10659]);b=h!=0?22:30;break;case 22:n=_PyEval_CallObjectWithKeywords(h,0,0);HEAP[h]-=1;b=HEAP[h]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=24;break;case 24:o=b=__PyNumber_ConvertIntegralToInt(n,__str60);b=b!=0?25:29;break;case 25:b= -(HEAP[HEAP[o+4]+84]&8388608)!=0?26:29;break;case 26:p=HEAP[o+8];HEAP[o]-=1;b=HEAP[o]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);b=28;break;case 28:d=_PyLong_FromLong(p);b=37;break;case 29:d=o;b=37;break;case 30:_PyErr_Clear();var s=c;b=(HEAP[HEAP[c+4]+84]&134217728)!=0?31:32;break;case 31:d=_long_from_string(c+20,HEAP[s+8]);b=37;break;case 32:var t=c;b=(HEAP[HEAP[s+4]+84]&268435456)!=0?33:34;break;case 33:d=_PyLong_FromUnicode(HEAP[c+12],HEAP[t+8],10);b=37;break;case 34:b=_PyObject_AsCharBuffer(t, -j,k)==0?35:36;break;case 35:d=_long_from_string(HEAP[j],HEAP[k]);b=37;break;case 36:d=_type_error(__str64,c);b=37;break;case 37:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyNumber_Float(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=b==0?1:2;break;case 1:a=_null_error();e=15;break;case 2:c=HEAP[HEAP[b+4]+48];e=c!=0?3:11;break;case 3:e=HEAP[c+80]!=0?4:11;break;case 4:d=FUNCTION_TABLE[HEAP[c+80]](b);e=d!=0?5:10;break;case 5:e=HEAP[d+4]!=_PyFloat_Type?6:10;break;case 6:e=_PyType_IsSubtype(HEAP[d+4],_PyFloat_Type)==0?7:10;break;case 7:_PyErr_Format(HEAP[_PyExc_TypeError],__str65,allocate([HEAP[HEAP[d+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[d]-= -1;e=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=9;break;case 9:a=0;e=15;break;case 10:a=d;e=15;break;case 11:e=HEAP[b+4]==_PyFloat_Type?13:12;break;case 12:e=_PyType_IsSubtype(HEAP[b+4],_PyFloat_Type)!=0?13:14;break;case 13:e=b;a=_PyFloat_FromDouble(HEAP[e+8]);e=15;break;case 14:a=_PyFloat_FromString(b,0);e=15;break;case 15:return g=a;default:assert(0,"bad label: "+e)}} -function _PyNumber_ToBase(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;d=0;f=_PyNumber_Index(b);b=f==0?1:2;break;case 1:c=0;b=10;break;case 2:var h=f;b=(HEAP[HEAP[f+4]+84]&16777216)!=0?3:4;break;case 3:d=__PyLong_Format(h,a,0,1);b=7;break;case 4:b=(HEAP[HEAP[h+4]+84]&8388608)!=0?5:6;break;case 5:d=__PyInt_Format(f,a,1);b=7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError],__str66);b=7;break;case 7:HEAP[f]-=1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b= -9;break;case 9:c=d;b=10;break;case 10:return a=c;default:assert(0,"bad label: "+b)}} -function _PySequence_Check(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:c=0;e=11;break;case 2:var d=b;e=HEAP[b+4]==_PyInstance_Type?3:4;break;case 3:c=_PyObject_HasAttrString(d,__str67);e=11;break;case 4:e=(HEAP[HEAP[d+4]+84]&536870912)!=0?5:6;break;case 5:c=0;e=11;break;case 6:e=HEAP[HEAP[b+4]+52]==0?9:7;break;case 7:e=HEAP[HEAP[HEAP[b+4]+52]+12]==0?9:8;break;case 8:a=1;e=10;break;case 9:a=0;e=10;break;case 10:c=a;e=11;break;case 11:return g=c;default:assert(0,"bad label: "+ -e)}}function _PySequence_Size(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:_null_error();a=-1;e=6;break;case 2:c=HEAP[HEAP[b+4]+52];e=c!=0?3:5;break;case 3:e=HEAP[c]!=0?4:5;break;case 4:a=FUNCTION_TABLE[HEAP[c]](b);e=6;break;case 5:_type_error(__str68,b);a=-1;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}}function _PySequence_Length(g){return _PySequence_Size(g)} -function _PySequence_Concat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?2:1;break;case 1:b=c==0?2:3;break;case 2:d=_null_error();b=13;break;case 3:f=HEAP[HEAP[a+4]+52];b=f!=0?4:6;break;case 4:b=HEAP[f+4]!=0?5:6;break;case 5:d=FUNCTION_TABLE[HEAP[f+4]](a,c);b=13;break;case 6:b=_PySequence_Check(a)!=0?7:12;break;case 7:b=_PySequence_Check(c)!=0?8:12;break;case 8:var j=h=_binary_op1(a,c,0);b=h!=__Py_NotImplementedStruct?9:10;break;case 9:d=j;b=13;break;case 10:HEAP[h]=HEAP[j]- -1;b=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=12;break;case 12:d=_type_error(__str69,a);b=13;break;case 13:return b=d;default:assert(0,"bad label: "+b)}} -function _PySequence_Repeat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=a==0?1:2;break;case 1:d=_null_error();b=15;break;case 2:f=HEAP[HEAP[a+4]+52];b=f!=0?3:5;break;case 3:b=HEAP[f+8]!=0?4:5;break;case 4:d=FUNCTION_TABLE[HEAP[f+8]](a,c);b=15;break;case 5:b=_PySequence_Check(a)!=0?6:14;break;case 6:h=_PyInt_FromSsize_t(c);b=h==0?7:8;break;case 7:d=0;b=15;break;case 8:j=_binary_op1(a,h,8);HEAP[h]-=1;b=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=10;break; -case 10:var k=j;b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=15;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:d=_type_error(__str70,a);b=15;break;case 15:return b=d;default:assert(0,"bad label: "+b)}} -function _PySequence_InPlaceConcat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?2:1;break;case 1:b=c==0?2:3;break;case 2:d=_null_error();b=17;break;case 3:f=HEAP[HEAP[a+4]+52];b=f!=0?4:10;break;case 4:var j=f;b=(HEAP[HEAP[a+4]+84]&8)!=0?5:7;break;case 5:b=HEAP[j+32]!=0?6:7;break;case 6:d=FUNCTION_TABLE[HEAP[f+32]](a,c);b=17;break;case 7:b=j!=0?8:10;break;case 8:b=HEAP[f+4]!=0?9:10;break;case 9:d=FUNCTION_TABLE[HEAP[f+4]](a,c);b=17;break;case 10:b=_PySequence_Check(a)!=0?11: -16;break;case 11:b=_PySequence_Check(c)!=0?12:16;break;case 12:var k=h=_binary_iop1(a,c,92,0);b=h!=__Py_NotImplementedStruct?13:14;break;case 13:d=k;b=17;break;case 14:HEAP[h]=HEAP[k]-1;b=HEAP[h]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=16;break;case 16:d=_type_error(__str69,a);b=17;break;case 17:return b=d;default:assert(0,"bad label: "+b)}} -function _PySequence_InPlaceRepeat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=a==0?1:2;break;case 1:d=_null_error();b=19;break;case 2:f=HEAP[HEAP[a+4]+52];b=f!=0?3:9;break;case 3:var k=f;b=(HEAP[HEAP[a+4]+84]&8)!=0?4:6;break;case 4:b=HEAP[k+36]!=0?5:6;break;case 5:d=FUNCTION_TABLE[HEAP[f+36]](a,c);b=19;break;case 6:b=k!=0?7:9;break;case 7:b=HEAP[f+8]!=0?8:9;break;case 8:d=FUNCTION_TABLE[HEAP[f+8]](a,c);b=19;break;case 9:b=_PySequence_Check(a)!=0?10:18;break;case 10:h=_PyInt_FromSsize_t(c); -b=h==0?11:12;break;case 11:d=0;b=19;break;case 12:j=_binary_iop1(a,h,100,8);HEAP[h]-=1;b=HEAP[h]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=14;break;case 14:var l=j;b=j!=__Py_NotImplementedStruct?15:16;break;case 15:d=l;b=19;break;case 16:HEAP[j]=HEAP[l]-1;b=HEAP[j]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=18;break;case 18:d=_type_error(__str70,a);b=19;break;case 19:return b=d;default:assert(0,"bad label: "+b)}} -function _PySequence_GetItem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?1:2;break;case 1:d=_null_error();b=11;break;case 2:f=HEAP[HEAP[a+4]+52];b=f!=0?3:10;break;case 3:b=HEAP[f+12]!=0?4:10;break;case 4:b=c<0?5:9;break;case 5:b=HEAP[f]!=0?6:9;break;case 6:h=FUNCTION_TABLE[HEAP[f]](a);b=h<0?7:8;break;case 7:d=0;b=11;break;case 8:c=h+c;b=9;break;case 9:d=FUNCTION_TABLE[HEAP[f+12]](a,c);b=11;break;case 10:d=_type_error(__str71,a);b=11;break;case 11:return b=d;default:assert(0, -"bad label: "+b)}} -function _PySequence_GetSlice(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;a=c==0?1:2;break;case 1:h=_null_error();a=22;break;case 2:j=HEAP[HEAP[c+4]+52];a=j==0?14:3;break;case 3:a=HEAP[j+16]==0?14:4;break;case 4:a=d<0?6:5;break;case 5:a=f<0?6:13;break;case 6:a=HEAP[j]!=0?7:13;break;case 7:l=FUNCTION_TABLE[HEAP[j]](c);a=l<0?8:9;break;case 8:h=0;a=22;break;case 9:a=d<0?10:11;break;case 10:d=l+d;a=11;break;case 11:a=f<0?12:13;break;case 12:f=l+f;a=13;break;case 13:h=FUNCTION_TABLE[HEAP[j+ -16]](c,d,f);a=22;break;case 14:k=HEAP[HEAP[c+4]+56];a=HEAP[HEAP[c+4]+56]!=0?15:21;break;case 15:a=HEAP[k+4]!=0?16:21;break;case 16:n=__PySlice_FromIndices(d,f);a=n==0?17:18;break;case 17:h=0;a=22;break;case 18:m=FUNCTION_TABLE[HEAP[k+4]](c,n);HEAP[n]-=1;a=HEAP[n]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=20;break;case 20:h=m;a=22;break;case 21:h=_type_error(__str72,c);a=22;break;case 22:return g=h;default:assert(0,"bad label: "+a)}} -function _PySequence_SetItem(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=c==0?1:2;break;case 1:_null_error();h=-1;a=11;break;case 2:j=HEAP[HEAP[c+4]+52];a=j!=0?3:10;break;case 3:a=HEAP[j+20]!=0?4:10;break;case 4:a=d<0?5:9;break;case 5:a=HEAP[j]!=0?6:9;break;case 6:k=FUNCTION_TABLE[HEAP[j]](c);a=k<0?7:8;break;case 7:h=-1;a=11;break;case 8:d=k+d;a=9;break;case 9:h=FUNCTION_TABLE[HEAP[j+20]](c,d,f);a=11;break;case 10:_type_error(__str4,c);h=-1;a=11;break;case 11:return g= -h;default:assert(0,"bad label: "+a)}} -function _PySequence_DelItem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?1:2;break;case 1:_null_error();d=-1;b=11;break;case 2:f=HEAP[HEAP[a+4]+52];b=f!=0?3:10;break;case 3:b=HEAP[f+20]!=0?4:10;break;case 4:b=c<0?5:9;break;case 5:b=HEAP[f]!=0?6:9;break;case 6:h=FUNCTION_TABLE[HEAP[f]](a);b=h<0?7:8;break;case 7:d=-1;b=11;break;case 8:c=h+c;b=9;break;case 9:d=FUNCTION_TABLE[HEAP[f+20]](a,c,0);b=11;break;case 10:_type_error(__str73,a);d=-1;b=11;break;case 11:return b=d;default:assert(0, -"bad label: "+b)}} -function _PySequence_SetSlice(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;j=a;c=d==0?1:2;break;case 1:_null_error();k=-1;c=22;break;case 2:l=HEAP[HEAP[d+4]+52];c=l==0?14:3;break;case 3:c=HEAP[l+24]==0?14:4;break;case 4:c=f<0?6:5;break;case 5:c=h<0?6:13;break;case 6:c=HEAP[l]!=0?7:13;break;case 7:n=FUNCTION_TABLE[HEAP[l]](d);c=n<0?8:9;break;case 8:k=-1;c=22;break;case 9:c=f<0?10:11;break;case 10:f=n+f;c=11;break;case 11:c=h<0?12:13;break;case 12:h=n+h;c=13;break; -case 13:k=FUNCTION_TABLE[HEAP[l+24]](d,f,h,j);c=22;break;case 14:m=HEAP[HEAP[d+4]+56];c=HEAP[HEAP[d+4]+56]!=0?15:21;break;case 15:c=HEAP[m+8]!=0?16:21;break;case 16:p=__PySlice_FromIndices(f,h);c=p==0?17:18;break;case 17:k=-1;c=22;break;case 18:o=FUNCTION_TABLE[HEAP[m+8]](d,p,j);HEAP[p]-=1;c=HEAP[p]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=20;break;case 20:k=o;c=22;break;case 21:_type_error(__str74,d);k=-1;c=22;break;case 22:return g=k;default:assert(0,"bad label: "+c)}} -function _PySequence_DelSlice(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=c==0?1:2;break;case 1:_null_error();h=-1;a=15;break;case 2:j=HEAP[HEAP[c+4]+52];a=j!=0?3:14;break;case 3:a=HEAP[j+24]!=0?4:14;break;case 4:a=d<0?6:5;break;case 5:a=f<0?6:13;break;case 6:a=HEAP[j]!=0?7:13;break;case 7:k=FUNCTION_TABLE[HEAP[j]](c);a=k<0?8:9;break;case 8:h=-1;a=15;break;case 9:a=d<0?10:11;break;case 10:d=k+d;a=11;break;case 11:a=f<0?12:13;break;case 12:f=k+f;a=13;break;case 13:h=FUNCTION_TABLE[HEAP[j+ -24]](c,d,f,0);a=15;break;case 14:_type_error(__str75,c);h=-1;a=15;break;case 15:return g=h;default:assert(0,"bad label: "+a)}} -function _PySequence_Tuple(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=e,j,k;a=g;HEAP[h]=0;b=a==0?1:2;break;case 1:c=_null_error();b=32;break;case 2:var l=a;b=HEAP[a+4]==_PyTuple_Type?3:4;break;case 3:HEAP[a]=HEAP[l]+1;c=a;b=32;break;case 4:var m=a;b=(HEAP[HEAP[l+4]+84]&33554432)!=0?5:6;break;case 5:c=_PyList_AsTuple(m);b=32;break;case 6:d=_PyObject_GetIter(m);b=d==0?7:8;break;case 7:c=0;b=32;break;case 8:f=__PyObject_LengthHint(a,10);b=f==-1?26:9; -break;case 9:b=_PyTuple_New(f);HEAP[h]=b;b=HEAP[h]==0?29:10;break;case 10:j=0;b=11;break;case 11:k=b=_PyIter_Next(d);b=b==0?12:14;break;case 12:b=_PyErr_Occurred()!=0?26:13;break;case 13:b=j=f?15:21;break;case 15:b=f;f+=10;f=(f>>2)+f;b=f0?13:20;break;case 13:var p=h;p==1?(c=13,a=14):p==2?(c=13,a=17):p==3?(c=13,a=19):(c=13,a=21);break;case 14:a=k==2147483647?15:16;break;case 15:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str77);a=26;break;case 16:k+=1;a=20;break;case 17:a=l!=0?18:27;break;case 18:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str78);a=26;break;case 19:k=1;a=27;break;case 20:var q=h,c=20;a=21;break;case 21:a=(c==20?q:p)==2?22:6;break;case 22:a=k==2147483647? -23:24;break;case 23:l=1;a=24;break;case 24:k+=1;a=6;break;case 25:_PyErr_SetString(HEAP[_PyExc_ValueError],__str79);a=26;break;case 26:k=-1;a=27;break;case 27:HEAP[m]-=1;a=HEAP[m]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=29;break;case 29:j=k;a=30;break;case 30:return g=j;default:assert(0,"bad label: "+a)}}function _PySequence_Count(g,e){return __PySequence_IterSearch(g,e,1)} -function _PySequence_Contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&2)!=0?1:4;break;case 1:f=HEAP[HEAP[a+4]+52];b=f!=0?2:4;break;case 2:b=HEAP[f+28]!=0?3:4;break;case 3:d=FUNCTION_TABLE[HEAP[f+28]](a,c);b=5;break;case 4:d=b=__PySequence_IterSearch(a,c,3);b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}}function _PySequence_In(g,e){return _PySequence_Contains(g,e)}function _PySequence_Index(g,e){return __PySequence_IterSearch(g,e,2)} -function _PyMapping_Check(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b!=0?1:9;break;case 1:var d=b;e=HEAP[d+4]==_PyInstance_Type?2:3;break;case 2:c=_PyObject_HasAttrString(b,__str67);e=11;break;case 3:e=d==0?9:4;break;case 4:e=HEAP[HEAP[b+4]+56]==0?9:5;break;case 5:e=HEAP[HEAP[HEAP[b+4]+56]+4]==0?9:6;break;case 6:e=HEAP[HEAP[b+4]+52]==0?8:7;break;case 7:e=HEAP[HEAP[HEAP[b+4]+52]+16]==0?8:9;break;case 8:a=1;e=10;break;case 9:a=0;e=10;break;case 10:c=a;e=11;break;case 11:return g=c;default:assert(0, -"bad label: "+e)}}function _PyMapping_Size(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:_null_error();a=-1;e=6;break;case 2:c=HEAP[HEAP[b+4]+56];e=c!=0?3:5;break;case 3:e=HEAP[c]!=0?4:5;break;case 4:a=FUNCTION_TABLE[HEAP[c]](b);e=6;break;case 5:_type_error(__str68,b);a=-1;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}}function _PyMapping_Length(g){return _PyMapping_Size(g)} -function _PyMapping_GetItemString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=c==0?1:2;break;case 1:d=_null_error();b=7;break;case 2:f=_PyString_FromString(c);b=f==0?3:4;break;case 3:d=0;b=7;break;case 4:h=_PyObject_GetItem(a,f);HEAP[f]-=1;b=HEAP[f]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=6;break;case 6:d=h;b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function _PyMapping_SetItemString(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=d==0?1:2;break;case 1:_null_error();h=-1;a=7;break;case 2:j=_PyString_FromString(d);a=j==0?3:4;break;case 3:h=-1;a=7;break;case 4:k=_PyObject_SetItem(c,j,f);HEAP[j]-=1;a=HEAP[j]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=6;break;case 6:h=k;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _PyMapping_HasKeyString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyMapping_GetItemString(g,e);b=c!=0?1:4;break;case 1:HEAP[c]-=1;b=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=3;break;case 3:a=1;b=5;break;case 4:_PyErr_Clear();a=0;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _PyMapping_HasKey(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyObject_GetItem(g,e);b=c!=0?1:4;break;case 1:HEAP[c]-=1;b=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=3;break;case 3:a=1;b=5;break;case 4:_PyErr_Clear();a=0;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}}function _PyObject_CallObject(g,e){return _PyEval_CallObjectWithKeywords(g,e,0)} -function _PyObject_Call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[HEAP[c+4]+64];a=j!=0?1:8;break;case 1:a=HEAP[__PyThreadState_Current];HEAP[a+12]+=1;a=HEAP[a+12]>HEAP[__Py_CheckRecursionLimit]?2:4;break;case 2:a=__Py_CheckRecursiveCall(__str80)!=0?3:4;break;case 3:h=0;a=9;break;case 4:k=FUNCTION_TABLE[j](c,d,f);HEAP[HEAP[__PyThreadState_Current]+12]-=1;a=k==0?5:7;break;case 5:a=_PyErr_Occurred()==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_SystemError],__str81); -a=7;break;case 7:h=k;a=9;break;case 8:_PyErr_Format(HEAP[_PyExc_TypeError],__str82,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function _call_function_tail(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=c==0?1:2;break;case 1:d=0;b=11;break;case 2:b=(HEAP[HEAP[c+4]+84]&67108864)==0?3:8;break;case 3:h=_PyTuple_New(1);b=h==0?4:7;break;case 4:HEAP[c]-=1;b=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=6;break;case 6:d=0;b=11;break;case 7:HEAP[h+12]=c;c=h;b=8;break;case 8:f=_PyObject_Call(a,c,0);HEAP[c]-=1;b=HEAP[c]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=10;break;case 10:d= -f;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_CallFunction(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j;c=g;d=e;a=c==0?1:2;break;case 1:f=_null_error();a=7;break;case 2:a=d==0?5:3;break;case 3:a=HEAP[d]==0?5:4;break;case 4:HEAP[h]=arguments[_PyObject_CallFunction.length];j=_Py_VaBuildValue(d,HEAP[h]);a=6;break;case 5:j=_PyTuple_New(0);a=6;break;case 6:f=_call_function_tail(c,j);a=7;break;case 7:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function __PyObject_CallFunction_SizeT(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j;c=g;d=e;a=c==0?1:2;break;case 1:f=_null_error();a=7;break;case 2:a=d==0?5:3;break;case 3:a=HEAP[d]==0?5:4;break;case 4:HEAP[h]=arguments[__PyObject_CallFunction_SizeT.length];j=__Py_VaBuildValue_SizeT(d,HEAP[h]);a=6;break;case 5:j=_PyTuple_New(0);a=6;break;case 6:f=_call_function_tail(c,j);a=7;break;case 7:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _PyObject_CallMethod(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l,m,n;d=g;f=e;h=b;n=m=0;c=d==0?2:1;break;case 1:c=f==0?2:3;break;case 2:j=_null_error();c=16;break;case 3:m=_PyObject_GetAttrString(d,f);c=m==0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_AttributeError],f);j=0;c=16;break;case 5:c=_PyCallable_Check(m)==0?6:7;break;case 6:_type_error(__str83,m);c=12;break;case 7:c=h==0?10:8;break;case 8:c=HEAP[h]==0?10:9;break;case 9:HEAP[k]= -arguments[_PyObject_CallMethod.length];l=_Py_VaBuildValue(h,HEAP[k]);c=11;break;case 10:l=_PyTuple_New(0);c=11;break;case 11:n=_call_function_tail(m,l);c=12;break;case 12:c=m!=0?13:15;break;case 13:HEAP[m]-=1;c=HEAP[m]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=15;break;case 15:j=n;c=16;break;case 16:return c=j,STACKTOP=a,c;default:assert(0,"bad label: "+c)}} -function __PyObject_CallMethod_SizeT(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l,m,n;d=g;f=e;h=b;n=m=0;c=d==0?2:1;break;case 1:c=f==0?2:3;break;case 2:j=_null_error();c=16;break;case 3:m=_PyObject_GetAttrString(d,f);c=m==0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_AttributeError],f);j=0;c=16;break;case 5:c=_PyCallable_Check(m)==0?6:7;break;case 6:_type_error(__str83,m);c=12;break;case 7:c=h==0?10:8;break;case 8:c=HEAP[h]==0?10:9;break; -case 9:HEAP[k]=arguments[__PyObject_CallMethod_SizeT.length];l=__Py_VaBuildValue_SizeT(h,HEAP[k]);c=11;break;case 10:l=_PyTuple_New(0);c=11;break;case 11:n=_call_function_tail(m,l);c=12;break;case 12:c=m!=0?13:15;break;case 13:HEAP[m]-=1;c=HEAP[m]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=15;break;case 15:j=n;c=16;break;case 16:return c=j,STACKTOP=a,c;default:assert(0,"bad label: "+c)}} -function _objargs_mktuple(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h=e,j,k=e+4;c=g;f=0;HEAP[k]=c;_llvm_va_copy(h,k);a=HEAP[h];HEAP[h]=a+4;k=f;HEAP[a]!=0?(a=-1,b=1):(a=-1,b=2);break;case 1:f=(a==1?l:k)+1;a=HEAP[h];HEAP[h]=a+4;var l=f;HEAP[a]!=0?b=a=1:(a=1,b=2);break;case 2:j=b=_PyTuple_New(a==-1?k:l);b=b!=0?3:6;break;case 3:b=f>0?4:6;break;case 4:d=0;b=dHEAP[__Py_CheckRecursionLimit]?4:6;break;case 4:b=__Py_CheckRecursiveCall(__str87)!=0?5:6;break;case 5:d=-1;b=28;break;case 6:h=HEAP[c+8];f=0;b=9;break;case 7:j=HEAP[c+12+f*4];j=_PyObject_IsInstance(a,j);b=j!=0?10:8;break;case 8:f+= -1;b=9;break;case 9:b=fHEAP[__Py_CheckRecursionLimit]?15:19;break;case 15:b=__Py_CheckRecursiveCall(__str87)!=0?16:19;break;case 16:HEAP[k]-=1;b=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);b=18;break;case 18:d=m;b=28;break;case 19:l=_PyObject_CallFunctionObjArgs(k,allocate([a,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[HEAP[__PyThreadState_Current]+12]-=1;HEAP[k]-=1;b=HEAP[k]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=21;break;case 21:b=l!=0?22:24;break;case 22:m=_PyObject_IsTrue(l);HEAP[l]-=1;b=HEAP[l]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=24;break;case 24:d=m;b=28;break;case 25:b=_PyErr_Occurred()!= -0?26:27;break;case 26:d=-1;b=28;break;case 27:d=_recursive_isinstance(a,c);b=28;break;case 28:return a=d;default:assert(0,"bad label: "+b)}} -function _recursive_issubclass(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[HEAP[c+4]+84]<0?1:3;break;case 1:b=HEAP[HEAP[a+4]+84]<0?2:3;break;case 2:d=_PyType_IsSubtype(a,c);b=13;break;case 3:b=HEAP[a+4]!=_PyClass_Type?5:4;break;case 4:b=HEAP[c+4]!=_PyClass_Type?5:10;break;case 5:b=_check_class(a,__str89)==0?6:7;break;case 6:d=-1;b=13;break;case 7:b=_check_class(c,__str90)==0?8:9;break;case 8:d=-1;b=13;break;case 9:f=_abstract_issubclass(a,c);b=12;break;case 10:f=a==c;b=f==0? -11:12;break;case 11:f=_PyClass_IsSubclass(a,c);b=12;break;case 12:d=f;b=13;break;case 13:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_IsSubclass(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;b=(HEAP[HEAP[c+4]+84]&67108864)!=0?1:9;break;case 1:j=0;b=HEAP[__PyThreadState_Current];HEAP[b+12]+=1;b=HEAP[b+12]>HEAP[__Py_CheckRecursionLimit]?2:4;break;case 2:b=__Py_CheckRecursiveCall(__str91)!=0?3:4;break;case 3:d=-1;b=26;break;case 4:h=HEAP[c+8];f=0;b=7;break;case 5:j=HEAP[c+12+f*4];j=_PyObject_IsSubclass(a,j);b=j!=0?8:6;break;case 6:f+=1;b=7;break;case 7:b=fHEAP[__Py_CheckRecursionLimit]?13:17;break;case 13:b=__Py_CheckRecursiveCall(__str91)!=0?14:17;break;case 14:HEAP[k]-=1;b=HEAP[k]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=16;break;case 16:d=m;b=26;break;case 17:l= -_PyObject_CallFunctionObjArgs(k,allocate([a,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[HEAP[__PyThreadState_Current]+12]-=1;HEAP[k]-=1;b=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=19;break;case 19:b=l!=0?20:22;break;case 20:m=_PyObject_IsTrue(l);HEAP[l]-=1;b=HEAP[l]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=22;break;case 22:d=m;b=26;break;case 23:b=_PyErr_Occurred()!=0?24:25;break;case 24:d=-1;b=26;break;case 25:d= -_recursive_issubclass(a,c);b=26;break;case 26:return a=d;default:assert(0,"bad label: "+b)}}function __PyObject_RealIsInstance(g,e){return _recursive_isinstance(g,e)}function __PyObject_RealIsSubclass(g,e){return _recursive_issubclass(g,e)} -function _PyObject_GetIter(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h;a=g;d=HEAP[a+4];f=0;e=(HEAP[d+84]&128)!=0?1:2;break;case 1:var j=HEAP[d+108];f=j;b=1;e=3;break;case 2:var k=f,b=2;e=3;break;case 3:e=(b==2?k:j)==0?4:7;break;case 4:e=_PySequence_Check(a);var l=a;e=e!=0?5:6;break;case 5:c=_PySeqIter_New(l);e=15;break;case 6:c=_type_error(__str93,l);e=15;break;case 7:h=FUNCTION_TABLE[f](a);e=h!=0?8:14;break;case 8:e=(HEAP[HEAP[h+4]+84]&128)==0?11:9;break;case 9:e=HEAP[HEAP[h+4]+112]== -0?11:10;break;case 10:e=HEAP[HEAP[h+4]+112]==6?11:14;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError],__str94,allocate([HEAP[HEAP[h+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[h]-=1;e=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=13;break;case 13:h=0;e=14;break;case 14:c=h;e=15;break;case 15:return g=c;default:assert(0,"bad label: "+e)}} -function _PyIter_Next(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;b=FUNCTION_TABLE[HEAP[HEAP[e+4]+112]](e);e=b==0?1:4;break;case 1:e=_PyErr_Occurred()!=0?2:4;break;case 2:e=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?3:4;break;case 3:_PyErr_Clear();e=4;break;case 4:return g=b;default:assert(0,"bad label: "+e)}} -function _PyGrammar_AddAccelerators(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d;a=g;c=HEAP[a+4];d=HEAP[a];d=e=d-1;var f=a;e>=0?(b=-1,e=1):(b=-1,e=2);break;case 1:_fixdfa(b==1?h:f,c);c+=24;d=e=d-1;var h=a;e>=0?e=b=1:(b=1,e=2);break;case 2:HEAP[(b==-1?f:h)+20]=1;return;default:assert(0,"bad label: "+e)}} -function _PyGrammar_RemoveAccelerators(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;HEAP[b+20]=0;a=HEAP[b+4];b=HEAP[b];b=e=b-1;e=e>=0?1:6;break;case 1:c=HEAP[a+16];d=0;e=HEAP[a+12]>d?2:5;break;case 2:e=HEAP[c+16]!=0?3:4;break;case 3:_free(HEAP[c+16]);e=4;break;case 4:HEAP[c+16]=0;d+=1;c+=24;e=HEAP[a+12]>d?2:5;break;case 5:a+=24;b=e=b-1;e=e>=0?1:6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _fixdfa(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;d=HEAP[c+16];f=0;b=HEAP[c+12]>f?1:2;break;case 1:_fixstate(a,d);f+=1;d+=24;b=HEAP[c+12]>f?1:2;break;case 2:return;default:assert(0,"bad label: "+b)}} -function _fixstate(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u;c=g;d=e;n=HEAP[c+8];HEAP[d+20]=0;b=n*4>=0?1:4;break;case 1:b=n*4!=0?2:3;break;case 2:j=n*4;b=5;break;case 3:j=1;b=5;break;case 4:m=0;b=6;break;case 5:m=b=_malloc(j);b=b==0?6:7;break;case 6:throw _fwrite(__str95,1,36,HEAP[_stderr]),_exit(1),"Reached an unreachable!";case 7:l=0;b=l=0?10:28;break;case 10:o=HEAP[k]; -p=HEAP[c+8+4]+8*o;p=HEAP[p];b=HEAP[k+2]>127?11:12;break;case 11:_puts(__str196);b=26;break;case 12:b=p>255?13:21;break;case 13:q=_PyGrammar_FindDFA(c,p);b=p-256>127?14:15;break;case 14:_puts(__str297);b=26;break;case 15:r=0;b=HEAP[c+8]>r?16:26;break;case 16:b=(HEAP[HEAP[q+20]+Math.floor(r/8)]>>(r&7)&1)!=0?17:20;break;case 17:b=HEAP[m+4*r]!=-1?18:19;break;case 18:_puts(__str398);b=19;break;case 19:HEAP[m+4*r]=p-256<<8|HEAP[k+2]|128;b=20;break;case 20:r+=1;b=HEAP[c+8]>r?16:26;break;case 21:b=o==0?22: -23;break;case 22:HEAP[d+20]=1;b=26;break;case 23:b=o>=0?24:26;break;case 24:b=o=0?10:28;break;case 27:var s=n-1;n=s;a=27;b=29;break;case 28:var t=n,a=28;b=29;break;case 29:b=(a==28?t:s)<=0?31:30;break;case 30:b=HEAP[m+4*(n-1)]==-1?27:31;break;case 31:l=0;b=33;break;case 32:l+=1;b=33;break;case 33:b=l>=n?35:34;break;case 34:b=HEAP[m+4*l]==-1?32:35;break;case 35:b=l=0?37:41;break;case 37:b= -(n-l)*4!=0?38:39;break;case 38:f=(n-l)*4;b=40;break;case 39:f=1;b=40;break;case 40:h=_malloc(f);b=42;break;case 41:h=0;b=42;break;case 42:HEAP[d+16]=h;b=HEAP[d+16]==0?43:44;break;case 43:throw _fwrite(__str499,1,34,HEAP[_stderr]),_exit(1),"Reached an unreachable!";case 44:HEAP[d+8]=l;HEAP[d+12]=n;u=0;b=l1073741823?6:7;break;case 6:_PyErr_NoMemory();d=0;b=12;break;case 7:b=j>4294967287?8:9;break;case 8:_PyErr_NoMemory();d=0;b=12;break;case 9:j+=8;h=_PyArena_Malloc(c,j);b=h==0?10:11;break;case 10:_PyErr_NoMemory();d=0;b=12;break;case 11:_llvm_memset_p0i8_i32(h,0,j,1,0); -HEAP[h]=a;d=h;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}} -function _asdl_int_seq_new(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=0;b=a!=0?1:2;break;case 1:f=a*4+-4;b=3;break;case 2:f=0;b=3;break;case 3:j=f;b=a<0|a==-2147483648?6:4;break;case 4:b=a==0?7:5;break;case 5:b=a-1>1073741823?6:7;break;case 6:_PyErr_NoMemory();d=0;b=12;break;case 7:b=j>4294967287?8:9;break;case 8:_PyErr_NoMemory();d=0;b=12;break;case 9:j+=8;h=_PyArena_Malloc(c,j);b=h==0?10:11;break;case 10:_PyErr_NoMemory();d=0;b=12;break;case 11:_llvm_memset_p0i8_i32(h,0,j, -1,0);HEAP[h]=a;d=h;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}}function _new_identifier(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;c=_PyString_InternFromString(b);b=c!=0?1:2;break;case 1:_PyArena_AddPyObject(a,c);b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}} -function _ast_error(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_Py_BuildValue(__str100,allocate([e,0,0,0,HEAP[g+8],0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));b=c==0?1:2;break;case 1:a=0;b=5;break;case 2:_PyErr_SetObject(HEAP[_PyExc_SyntaxError],c);HEAP[c]-=1;b=HEAP[c]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=4;break;case 4:a=0;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _ast_error_finish(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c=e,d=e+4,f=e+8,h,j,k,l;a=g;b=_PyErr_ExceptionMatches(HEAP[_PyExc_SyntaxError])==0?20:1;break;case 1:_PyErr_Fetch(c,d,f);h=_PyTuple_GetItem(HEAP[d],0);b=h==0?20:2;break;case 2:HEAP[h]+=1;l=_PyTuple_GetItem(HEAP[d],1);l=_PyInt_AsLong(l);b=l==-1?3:5;break;case 3:HEAP[h]-=1;b=HEAP[h]==0?4:20;break;case 4:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=20;break;case 5:b=HEAP[d];HEAP[b]-=1;b=HEAP[b]== -0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);b=7;break;case 7:j=b=_PyErr_ProgramText(a,l);b=b==0?8:9;break;case 8:HEAP[__Py_NoneStruct]+=1;j=__Py_NoneStruct;b=9;break;case 9:k=_Py_BuildValue(__str1101,allocate([a,0,0,0,l,0,0,0,__Py_NoneStruct,0,0,0,j,0,0,0],["i8*",0,0,0,"i32",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[j]-=1;b=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=11;break;case 11:var m=h;b=k==0?12: -14;break;case 12:HEAP[h]=HEAP[m]-1;b=HEAP[h]==0?13:20;break;case 13:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=20;break;case 14:b=_PyTuple_Pack(2,allocate([m,0,0,0,k,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[d]=b;HEAP[h]-=1;b=HEAP[h]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=16;break;case 16:HEAP[k]-=1;b=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=18;break;case 18:b=HEAP[d]==0?20:19;break;case 19:_PyErr_Restore(HEAP[c], -HEAP[d],HEAP[f]);b=20;break;case 20:STACKTOP=e;return;default:assert(0,"bad label: "+b)}} -function _ast_warn(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;a=g;c=e;d=b;a=_PyErr_WarnExplicit(HEAP[_PyExc_SyntaxWarning],d,HEAP[a+12],HEAP[c+8],0,0)<0?1:5;break;case 1:a=_PyErr_Occurred()!=0?2:4;break;case 2:a=_PyErr_ExceptionMatches(HEAP[_PyExc_SyntaxWarning])!=0?3:4;break;case 3:_ast_error(c,d);a=4;break;case 4:f=0;a=6;break;case 5:f=1;a=6;break;case 6:return g=f;default:assert(0,"bad label: "+a)}} -function _forbidden_check(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=_strcmp(f,__str2102)==0?1:2;break;case 1:h=_ast_error(d,__str3103);a=13;break;case 2:a=_strcmp(f,__str4104)==0?3:4;break;case 3:h=_ast_error(d,__str5105);a=13;break;case 4:a=HEAP[_Py_Py3kWarningFlag]!=0?5:12;break;case 5:a=_strcmp(f,__str6106)==0?7:6;break;case 6:a=_strcmp(f,__str7107)==0?7:9;break;case 7:a=_ast_warn(c,d,__str8108)==0?8:9;break;case 8:h=0;a=13;break;case 9:a=_strcmp(f,__str9109)==0?10:12; -break;case 10:a=_ast_warn(c,d,__str10110)==0?11:12;break;case 11:h=0;a=13;break;case 12:h=1;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function _num_stmts(g){var e=STACKTOP;STACKTOP+=128;_memset(e,0,128);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j=e;a=g;b=HEAP[a];b=b==256?1:b==257?4:b==267?9:b==268?11:b==292?10:b==300?12:17;break;case 1:b=HEAP[HEAP[a+20]]==4?2:3;break;case 2:c=0;b=18;break;case 3:c=_num_stmts(HEAP[a+20]);b=18;break;case 4:d=f=0;b=HEAP[a+16]>d?5:8;break;case 5:h=HEAP[a+20]+24*d;b=HEAP[h]==267?6:7;break;case 6:b=_num_stmts(h);f+=b;b=7;break;case 7:d+=1;b=HEAP[a+16]>d?5:8;break;case 8:c=f;b=18;break;case 9:c= -_num_stmts(HEAP[a+20]);b=18;break;case 10:c=1;b=18;break;case 11:c=HEAP[a+16]/2|0;b=18;break;case 12:b=HEAP[a+16]==1?13:14;break;case 13:c=_num_stmts(HEAP[a+20]);b=18;break;case 14:f=0;d=2;b=HEAP[a+16]-1>d?15:16;break;case 15:b=_num_stmts(HEAP[a+20]+24*d);f+=b;d+=1;b=HEAP[a+16]-1>d?15:16;break;case 16:c=f;b=18;break;case 17:throw _sprintf(j,__str11111,allocate([HEAP[a],0,0,0,HEAP[a+16],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK)),_Py_FatalError(j),"Reached an unreachable!";case 18:return g=c,STACKTOP= -e,g;default:assert(0,"bad label: "+b)}} -function _PyAST_FromNode(g,e,b,a){var c=STACKTOP;STACKTOP+=16;_memset(c,0,16);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t=c,v;f=g;h=e;j=b;k=a;r=0;d=h==0?4:1;break;case 1:d=(HEAP[h]&256)==0?4:2;break;case 2:HEAP[t]=__str12112;d=HEAP[f]==339?3:7;break;case 3:_ast_error(f,__str13113);d=43;break;case 4:d=HEAP[f]==339?5:6;break;case 5:HEAP[t]=HEAP[f+4];f=HEAP[f+20];d=7;break;case 6:HEAP[t]=0;d=7;break;case 7:d=h==0?10:8;break;case 8:d=(HEAP[h]&131072)==0?10:9;break;case 9:m=1;d= -11;break;case 10:m=0;d=11;break;case 11:HEAP[t+4]=m;HEAP[t+8]=k;HEAP[t+12]=j;p=0;d=HEAP[f];d=d==256?28:d==257?12:d==258?26:42;break;case 12:r=_num_stmts(f);r=_asdl_seq_new(r,k);d=r==0?13:14;break;case 13:l=0;d=44;break;case 14:n=0;d=24;break;case 15:s=HEAP[f+20]+24*n;d=HEAP[s]==4?23:16;break;case 16:q=_num_stmts(s);var w=s;d=q==1?17:19;break;case 17:u=_ast_for_stmt(t,w);d=u==0?43:18;break;case 18:HEAP[r+4+p*4]=u;p+=1;d=23;break;case 19:s=HEAP[w+20];o=0;d=22;break;case 20:u=_ast_for_stmt(t,HEAP[s+ -20]+o*48);d=u==0?43:21;break;case 21:HEAP[r+4+p*4]=u;p+=1;o+=1;d=22;break;case 22:d=on?15:25;break;case 25:l=__Py_Module(r,k);d=44;break;case 26:v=_ast_for_testlist(t,HEAP[f+20]);d=v==0?43:27;break;case 27:l=__Py_Expression(v,k);d=44;break;case 28:d=HEAP[HEAP[f+20]]==4?29:32;break;case 29:r=_asdl_seq_new(1,k);d=r==0?43:30;break;case 30:d=__Py_Pass(HEAP[f+8],HEAP[f+12],k);HEAP[r+4]=d;d=HEAP[r+4]==0?43:31;break;case 31:l=__Py_Interactive(r, -k);d=44;break;case 32:f=HEAP[f+20];q=_num_stmts(f);r=_asdl_seq_new(q,k);d=r==0?43:33;break;case 33:d=q==1?34:36;break;case 34:u=_ast_for_stmt(t,f);d=u==0?43:35;break;case 35:HEAP[r+4]=u;d=41;break;case 36:n=0;d=40;break;case 37:d=HEAP[HEAP[f+20]+24*n]==4?41:38;break;case 38:u=_ast_for_stmt(t,HEAP[f+20]+24*n);d=u==0?43:39;break;case 39:HEAP[r+4+(n/2|0)*4]=u;n+=2;d=40;break;case 40:d=HEAP[f+16]>n?37:41;break;case 41:l=__Py_Interactive(r,k);d=44;break;case 42:_PyErr_Format(HEAP[_PyExc_SystemError],__str14114, -allocate([HEAP[f],0,0,0],["i32",0,0,0],ALLOC_STACK));d=43;break;case 43:_ast_error_finish(j);l=0;d=44;break;case 44:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _get_operator(g){var e;for(e=-1;;)switch(e){case -1:var b;e=HEAP[g];e=e==14?6:e==15?7:e==16?8:e==17?9:e==18?1:e==19?3:e==24?11:e==33?2:e==34?4:e==35?5:e==48?10:12;break;case 1:b=9;e=13;break;case 2:b=10;e=13;break;case 3:b=11;e=13;break;case 4:b=7;e=13;break;case 5:b=8;e=13;break;case 6:b=1;e=13;break;case 7:b=2;e=13;break;case 8:b=3;e=13;break;case 9:b=4;e=13;break;case 10:b=12;e=13;break;case 11:b=5;e=13;break;case 12:b=0;e=13;break;case 13:return g=b;default:assert(0,"bad label: "+e)}} -function _set_context(g,e,b,a){var c=STACKTOP;STACKTOP+=300;_memset(c,0,300);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q=c,r;f=g;h=e;j=b;k=a;p=o=0;d=HEAP[h];d=d==1?17:d==2?17:d==3?17:d==4?15:d==5?26:d==6?23:d==7?23:d==8?20:d==9?21:d==10?22:d==11?18:d==12?19:d==13?24:d==14?16:d==15?25:d==16?23:d==17?23:d==18?1:d==19?5:d==20?6:d==21?10:d==22?11:27;break;case 1:d=j==2?2:4;break;case 2:d=_forbidden_check(f,k,HEAP[h+4+4]+20)==0?3:4;break;case 3:n=0;d=43;break;case 4:HEAP[h+4+8]=j;d=28;break; -case 5:HEAP[h+4+8]=j;d=28;break;case 6:d=j==2?7:9;break;case 7:d=_forbidden_check(f,k,HEAP[h+4]+20)==0?8:9;break;case 8:n=0;d=43;break;case 9:HEAP[h+4+4]=j;d=28;break;case 10:HEAP[h+4+4]=j;o=HEAP[h+4];d=28;break;case 11:d=HEAP[h+4]==0?14:12;break;case 12:d=HEAP[HEAP[h+4]]==0?14:13;break;case 13:HEAP[h+4+4]=j;o=HEAP[h+4];d=28;break;case 14:p=__str15115;d=29;break;case 15:p=__str16116;d=29;break;case 16:p=__str17117;d=29;break;case 17:p=__str18118;d=29;break;case 18:p=__str19119;d=29;break;case 19:p= -__str20120;d=29;break;case 20:p=__str21121;d=29;break;case 21:p=__str22122;d=29;break;case 22:p=__str23123;d=29;break;case 23:p=__str24124;d=29;break;case 24:p=__str25125;d=29;break;case 25:p=__str26126;d=29;break;case 26:p=__str27127;d=29;break;case 27:_PyErr_Format(HEAP[_PyExc_SystemError],__str28128,allocate([HEAP[h],0,0,0,HEAP[h+24],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));n=0;d=43;break;case 28:d=p!=0?29:33;break;case 29:d=j==2?30:31;break;case 30:m=__str29129;d=32;break;case 31:m=__str30130; -d=32;break;case 32:_PyOS_snprintf(q,300,__str31131,allocate([m,0,0,0,p,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));n=_ast_error(k,q);d=43;break;case 33:d=o!=0?34:42;break;case 34:r=0;d=38;break;case 35:d=_set_context(f,HEAP[o+4+r*4],j,k)==0?36:37;break;case 36:n=0;d=43;break;case 37:r+=1;d=38;break;case 38:d=o!=0?39:40;break;case 39:l=HEAP[o];d=41;break;case 40:l=0;d=41;break;case 41:d=l>r?35:42;break;case 42:n=1;d=43;break;case 43:return g=n,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _ast_for_augassign(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=e;a=HEAP[a+20];b=HEAP[HEAP[a+4]];b=b==37?6:b==38?9:b==42?12:b==43?1:b==45?2:b==47?3:b==60?7:b==62?8:b==94?10:b==124?11:15;break;case 1:c=1;b=16;break;case 2:c=2;b=16;break;case 3:b=HEAP[HEAP[a+4]+1]==47?4:5;break;case 4:c=12;b=16;break;case 5:c=4;b=16;break;case 6:c=5;b=16;break;case 7:c=7;b=16;break;case 8:c=8;b=16;break;case 9:c=11;b=16;break;case 10:c=10;b=16;break;case 11:c=9;b=16;break;case 12:b=HEAP[HEAP[a+4]+1]== -42?13:14;break;case 13:c=6;b=16;break;case 14:c=3;b=16;break;case 15:_PyErr_Format(HEAP[_PyExc_SystemError],__str32132,allocate([HEAP[a+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;b=16;break;case 16:return a=c;default:assert(0,"bad label: "+b)}} -function _ast_for_comp_op(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d=a=e;b=HEAP[a+16]==1?1:13;break;case 1:a=HEAP[d+20];b=HEAP[a];b=b==1?8:b==20?2:b==21?3:b==28?4:b==29?7:b==30?5:b==31?6:12;break;case 2:c=3;b=21;break;case 3:c=5;b=21;break;case 4:c=1;b=21;break;case 5:c=4;b=21;break;case 6:c=6;b=21;break;case 7:c=2;b=21;break;case 8:b=_strcmp(HEAP[a+4],__str33133)==0?9:10;break;case 9:c=9;b=21;break;case 10:b=_strcmp(HEAP[a+4],__str34134)==0?11:12;break;case 11:c=7;b=21;break;case 12:_PyErr_Format(HEAP[_PyExc_SystemError], -__str35135,allocate([HEAP[a+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;b=21;break;case 13:var f=a;b=HEAP[d+16]==2?14:20;break;case 14:b=HEAP[HEAP[f+20]]==1?15:19;break;case 15:b=_strcmp(HEAP[HEAP[a+20]+24+4],__str33133)==0?16:17;break;case 16:c=10;b=21;break;case 17:b=_strcmp(HEAP[HEAP[a+20]+4],__str34134)==0?18:19;break;case 18:c=8;b=21;break;case 19:_PyErr_Format(HEAP[_PyExc_SystemError],__str36136,allocate([HEAP[HEAP[a+20]+4],0,0,0,HEAP[HEAP[a+20]+24+4],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK)); -c=0;b=21;break;case 20:_PyErr_Format(HEAP[_PyExc_SystemError],__str37137,allocate([HEAP[f+16],0,0,0],["i32",0,0,0],ALLOC_STACK));c=0;b=21;break;case 21:return a=c;default:assert(0,"bad label: "+b)}} -function _seq_for_testlist(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=_asdl_seq_new((HEAP[c+16]+1)/2|0,HEAP[a+8]);b=f==0?1:2;break;case 1:d=0;b=8;break;case 2:j=0;b=6;break;case 3:h=_ast_for_expr(a,HEAP[c+20]+24*j);b=h==0?4:5;break;case 4:d=0;b=8;break;case 5:HEAP[f+4+(j/2|0)*4]=h;j+=2;b=6;break;case 6:b=HEAP[c+16]>j?3:7;break;case 7:d=f;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _compiler_complex_args(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o;a=g;c=e;h=(HEAP[c+16]+1)/2|0;k=_asdl_seq_new(h,HEAP[a+8]);b=k==0?1:2;break;case 1:d=0;b=18;break;case 2:f=0;b=14;break;case 3:m=HEAP[c+20]+f*48;b=4;break;case 4:n=HEAP[m+20];b=HEAP[n]==1?5:10;break;case 5:b=_forbidden_check(a,c,HEAP[n+4])==0?6:7;break;case 6:d=0;b=18;break;case 7:l=_new_identifier(HEAP[n+4],HEAP[a+8]);b=l==0?8:9;break;case 8:d=0;b=18;break;case 9:o=__Py_Name(l,2,HEAP[n+8],HEAP[n+12], -HEAP[a+8]);b=13;break;case 10:n=HEAP[m+20]+24;b=HEAP[n+16]==1?11:12;break;case 11:m=HEAP[n+20];b=4;break;case 12:o=_compiler_complex_args(a,n);b=13;break;case 13:HEAP[k+4+f*4]=o;f+=1;b=14;break;case 14:b=ff?5:10;break;case 5:r=HEAP[c+20]+24*f;b=HEAP[r]==265?6:7;break;case 6:k+=1;b=7;break;case 7:b=HEAP[r]==22?8:9;break;case 8:l+=1;b=9;break;case 9:f+=1;b=HEAP[c+16]>f?5:10;break;case 10:b=k!=0?12:11;break; -case 11:n=0;b=k!=0?13:14;break;case 12:n=b=_asdl_seq_new(k,HEAP[a+8]);b=b==0&k!=0?13:14;break;case 13:d=0;b=63;break;case 14:b=l!=0?16:15;break;case 15:o=0;b=l!=0?17:18;break;case 16:o=b=_asdl_seq_new(l,HEAP[a+8]);b=b==0&l!=0?17:18;break;case 17:d=0;b=63;break;case 18:j=h=f=0;b=61;break;case 19:r=HEAP[c+20]+24*f;b=HEAP[r];b=b==16?50:b==36?55:b==265?20:60;break;case 20:s=u=0;b=21;break;case 21:b=f+1>=HEAP[c+16]?26:22;break;case 22:b=HEAP[HEAP[c+20]+24*(f+1)]!=22?26:23;break;case 23:t=_ast_for_expr(a, -HEAP[c+20]+24*(f+2));b=t==0?24:25;break;case 24:d=0;b=63;break;case 25:HEAP[o+4+h*4]=t;h+=1;f+=2;m=1;b=31;break;case 26:b=m!=0?27:31;break;case 27:b=s!=0?28:30;break;case 28:b=u==0?29:30;break;case 29:_ast_error(c,__str38138);d=0;b=63;break;case 30:_ast_error(c,__str39139);d=0;b=63;break;case 31:b=HEAP[r+16]==3?32:39;break;case 32:r=HEAP[r+20]+24;b=HEAP[r+16]!=1?33:38;break;case 33:b=HEAP[_Py_Py3kWarningFlag]!=0?34:36;break;case 34:b=_ast_warn(a,r,__str40140)==0?35:36;break;case 35:d=0;b=63;break; -case 36:u=1;b=j;var x=_compiler_complex_args(a,r);HEAP[n+4+b*4]=x;j+=1;b=HEAP[n+4+(j-1)*4]==0?37:39;break;case 37:d=0;b=63;break;case 38:s=1;r=HEAP[r+20];b=21;break;case 39:b=HEAP[HEAP[r+20]]==1?40:47;break;case 40:b=_forbidden_check(a,c,HEAP[HEAP[r+20]+4])==0?41:42;break;case 41:d=0;b=63;break;case 42:v=_new_identifier(HEAP[HEAP[r+20]+4],HEAP[a+8]);b=v==0?43:44;break;case 43:d=0;b=63;break;case 44:w=__Py_Name(v,6,HEAP[r+8],HEAP[r+12],HEAP[a+8]);b=w==0?45:46;break;case 45:d=0;b=63;break;case 46:HEAP[n+ -4+j*4]=w;j+=1;b=47;break;case 47:f+=2;b=s!=0&HEAP[_Py_Py3kWarningFlag]!=0?48:61;break;case 48:b=_ast_warn(a,r,__str41141)==0?49:61;break;case 49:d=0;b=63;break;case 50:b=_forbidden_check(a,HEAP[c+20]+24*(f+1),HEAP[HEAP[c+20]+24*(f+1)+4])==0?51:52;break;case 51:d=0;b=63;break;case 52:p=_new_identifier(HEAP[HEAP[c+20]+24*(f+1)+4],HEAP[a+8]);b=p==0?53:54;break;case 53:d=0;b=63;break;case 54:f+=3;b=61;break;case 55:b=_forbidden_check(a,HEAP[c+20]+24*(f+1),HEAP[HEAP[c+20]+24*(f+1)+4])==0?56:57;break;case 56:d= -0;b=63;break;case 57:q=_new_identifier(HEAP[HEAP[c+20]+24*(f+1)+4],HEAP[a+8]);b=q==0?58:59;break;case 58:d=0;b=63;break;case 59:f+=3;b=61;break;case 60:_PyErr_Format(HEAP[_PyExc_SystemError],__str42142,allocate([HEAP[r],0,0,0,f,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));d=0;b=63;break;case 61:b=HEAP[c+16]>f?19:62;break;case 62:d=__Py_arguments(n,p,q,o,HEAP[a+8]);b=63;break;case 63:return a=d;default:assert(0,"bad label: "+b)}} -function _ast_for_dotted_name(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;j=HEAP[c+8];k=HEAP[c+12];h=_new_identifier(HEAP[HEAP[c+20]+4],HEAP[a+8]);b=h==0?1:2;break;case 1:d=0;b=12;break;case 2:f=__Py_Name(h,1,j,k,HEAP[a+8]);b=f==0?3:4;break;case 3:d=0;b=12;break;case 4:l=2;b=10;break;case 5:h=_new_identifier(HEAP[HEAP[c+20]+24*l+4],HEAP[a+8]);b=h==0?6:7;break;case 6:d=0;b=12;break;case 7:f=__Py_Attribute(f,h,1,j,k,HEAP[a+8]);b=f==0?8:9;break;case 8:d=0;b=12;break;case 9:l+= -2;b=10;break;case 10:b=HEAP[c+16]>l?5:11;break;case 11:d=f;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_decorator(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=0;h=_ast_for_dotted_name(a,HEAP[c+20]+24);b=h==0?1:2;break;case 1:d=0;b=12;break;case 2:b=HEAP[c+16]==3?3:4;break;case 3:f=h;h=0;b=11;break;case 4:b=HEAP[c+16]==5?5:8;break;case 5:f=__Py_Call(h,0,0,0,0,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=f==0?6:7;break;case 6:d=0;b=12;break;case 7:h=0;b=11;break;case 8:f=_ast_for_call(a,HEAP[c+20]+72,h);b=f==0?9:10;break;case 9:d=0;b=12;break;case 10:h=0;b=11;break;case 11:d= -f;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}}function _ast_for_decorators(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=_asdl_seq_new(HEAP[c+16],HEAP[a+8]);b=f==0?1:2;break;case 1:d=0;b=8;break;case 2:j=0;b=6;break;case 3:h=_ast_for_decorator(a,HEAP[c+20]+24*j);b=h==0?4:5;break;case 4:d=0;b=8;break;case 5:HEAP[f+4+j*4]=h;j+=1;b=6;break;case 6:b=HEAP[c+16]>j?3:7;break;case 7:d=f;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_funcdef(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;m=1;j=_new_identifier(HEAP[HEAP[d+20]+24*m+4],HEAP[c+8]);a=j==0?1:2;break;case 1:h=0;a=9;break;case 2:a=_forbidden_check(c,HEAP[d+20]+24*m,HEAP[HEAP[d+20]+24*m+4])==0?3:4;break;case 3:h=0;a=9;break;case 4:k=_ast_for_arguments(c,HEAP[d+20]+24*(m+1));a=k==0?5:6;break;case 5:h=0;a=9;break;case 6:l=_ast_for_suite(c,HEAP[d+20]+24*(m+3));a=l==0?7:8;break;case 7:h=0;a=9;break;case 8:h=__Py_FunctionDef(j,k, -l,f,HEAP[d+8],HEAP[d+12],HEAP[c+8]);a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function _ast_for_decorated(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j;c=g;d=e;h=0;j=_ast_for_decorators(c,HEAP[d+20]);b=j==0?1:2;break;case 1:f=0;b=10;break;case 2:var k=HEAP[d+20]+24;b=HEAP[HEAP[d+20]+24]==262?3:4;break;case 3:var l=_ast_for_funcdef(c,k,j);h=l;a=3;b=7;break;case 4:b=HEAP[k]==329?5:6;break;case 5:var m=_ast_for_classdef(c,HEAP[d+20]+24,j);h=m;a=5;b=7;break;case 6:var n=h,a=6;b=7;break;case 7:b=(a==6?n:a==5?m:l)!=0?8:9;break;case 8:HEAP[h+20]=HEAP[d+8];HEAP[h+24]= -HEAP[d+12];b=9;break;case 9:f=h;b=10;break;case 10:return b=f;default:assert(0,"bad label: "+b)}} -function _ast_for_lambdef(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[c+16]==3?1:5;break;case 1:f=__Py_arguments(0,0,0,0,HEAP[a+8]);b=f==0?2:3;break;case 2:d=0;b=10;break;case 3:h=_ast_for_expr(a,HEAP[c+20]+48);b=h==0?4:9;break;case 4:d=0;b=10;break;case 5:f=_ast_for_arguments(a,HEAP[c+20]+24);b=f==0?6:7;break;case 6:d=0;b=10;break;case 7:h=_ast_for_expr(a,HEAP[c+20]+72);b=h==0?8:9;break;case 8:d=0;b=10;break;case 9:d=__Py_Lambda(f,h,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=10;break; -case 10:return b=d;default:assert(0,"bad label: "+b)}}function _ast_for_ifexpr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=_ast_for_expr(a,HEAP[c+20]);b=h==0?1:2;break;case 1:d=0;b=7;break;case 2:f=_ast_for_expr(a,HEAP[c+20]+48);b=f==0?3:4;break;case 3:d=0;b=7;break;case 4:j=_ast_for_expr(a,HEAP[c+20]+96);b=j==0?5:6;break;case 5:d=0;b=7;break;case 6:d=__Py_IfExp(f,h,j,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function _count_list_fors(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=e;c=0;d=HEAP[b+20]+24;b=1;break;case 1:c+=1;b=HEAP[d+16]==5?2:3;break;case 2:d=HEAP[d+20]+96;b=4;break;case 3:a=c;b=10;break;case 4:d=HEAP[d+20];b=HEAP[d]==333?1:5;break;case 5:b=HEAP[d]==334?6:9;break;case 6:b=HEAP[d+16]==3?7:8;break;case 7:d=HEAP[d+20]+48;b=4;break;case 8:a=c;b=10;break;case 9:_PyErr_SetString(HEAP[_PyExc_SystemError],__str43143);a=-1;b=10;break;case 10:return a;default:assert(0,"bad label: "+b)}} -function _count_list_ifs(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=e;d=0;b=1;break;case 1:b=HEAP[HEAP[a+20]]==333?2:3;break;case 2:c=d;b=6;break;case 3:a=HEAP[a+20];d+=1;b=HEAP[a+16]==2?4:5;break;case 4:c=d;b=6;break;case 5:a=HEAP[a+20]+48;b=1;break;case 6:return b=c;default:assert(0,"bad label: "+b)}} -function _ast_for_listcomp(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;c=g;d=e;h=_ast_for_expr(c,HEAP[d+20]);b=h==0?1:2;break;case 1:f=0;b=34;break;case 2:m=_count_list_fors(c,d);b=m==-1?3:4;break;case 3:f=0;b=34;break;case 4:k=_asdl_seq_new(m,HEAP[c+8]);b=k==0?5:6;break;case 5:f=0;b=34;break;case 6:n=HEAP[d+20]+24;l=0;b=32;break;case 7:r=HEAP[n+20]+24;p=_ast_for_exprlist(c,r,2);b=p==0?8:9;break;case 8:f=0;b=34;break;case 9:q=_ast_for_testlist(c,HEAP[n+20]+ -72);b=q==0?10:11;break;case 10:f=0;b=34;break;case 11:j=HEAP[p+4];var w=HEAP[c+8];b=HEAP[r+16]==1?12:13;break;case 12:var x=__Py_comprehension(j,q,0,w);o=x;a=12;b=14;break;case 13:b=__Py_Tuple(p,2,HEAP[j+24],HEAP[j+28],HEAP[c+8]);var y=__Py_comprehension(b,q,0,w);o=y;a=13;b=14;break;case 14:b=(a==13?y:x)==0?15:16;break;case 15:f=0;b=34;break;case 16:b=HEAP[n+16]==5?17:31;break;case 17:n=HEAP[n+20]+96;s=_count_list_ifs(c,n);b=s==-1?18:19;break;case 18:f=0;b=34;break;case 19:t=_asdl_seq_new(s,HEAP[c+ -8]);b=t==0?20:21;break;case 20:f=0;b=34;break;case 21:u=0;b=27;break;case 22:n=HEAP[z+20];v=_ast_for_expr(c,HEAP[n+20]+24);b=v==0?23:24;break;case 23:f=0;b=34;break;case 24:HEAP[t+4+u*4]=v;b=HEAP[n+16]==3?25:26;break;case 25:n=HEAP[n+20]+48;b=26;break;case 26:u+=1;b=27;break;case 27:var z=n;b=uu?42:46;break;case 46:f=__Py_Set(w,HEAP[d+8],HEAP[d+12],HEAP[c+8]);a=71;break;case 47:a=HEAP[HEAP[h+20]+24]==336?48:49;break;case 48:f=_ast_for_setcomp(c,h);a=71;break;case 49:a=HEAP[h+16]<=3?52:50;break;case 50:a=HEAP[HEAP[h+20]+72]!=336?52:51;break;case 51:f=_ast_for_dictcomp(c,h);a=71;break;case 52:s=(HEAP[h+16]+1)/4|0;t=a=_asdl_seq_new(s,HEAP[c+8]);a=a==0?53:54;break;case 53:f= -0;a=71;break;case 54:v=_asdl_seq_new(s,HEAP[c+8]);a=v==0?55:56;break;case 55:f=0;a=71;break;case 56:u=0;a=62;break;case 57:y=_ast_for_expr(c,HEAP[h+20]+24*u);a=y==0?58:59;break;case 58:f=0;a=71;break;case 59:HEAP[t+4+(u/4|0)*4]=y;y=_ast_for_expr(c,HEAP[h+20]+24*(u+2));a=y==0?60:61;break;case 60:f=0;a=71;break;case 61:HEAP[v+4+(u/4|0)*4]=y;u+=4;a=62;break;case 62:a=HEAP[h+16]>u?57:63;break;case 63:f=__Py_Dict(t,v,HEAP[d+8],HEAP[d+12],HEAP[c+8]);a=71;break;case 64:a=HEAP[_Py_Py3kWarningFlag]!=0?65: -67;break;case 65:a=_ast_warn(c,d,__str48148)==0?66:67;break;case 66:f=0;a=71;break;case 67:z=a=_ast_for_testlist(c,HEAP[d+20]+24);a=a==0?68:69;break;case 68:f=0;a=71;break;case 69:f=__Py_Repr(z,HEAP[d+8],HEAP[d+12],HEAP[c+8]);a=71;break;case 70:_PyErr_Format(HEAP[_PyExc_SystemError],__str49149,allocate([HEAP[h],0,0,0],["i32",0,0,0],ALLOC_STACK));f=0;a=71;break;case 71:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _ast_for_slice(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;k=j=h=0;f=HEAP[c+20];b=HEAP[f]==23?1:2;break;case 1:d=__Py_Ellipsis(HEAP[a+8]);b=29;break;case 2:b=HEAP[c+16]==1?3:7;break;case 3:b=HEAP[f]==304?4:7;break;case 4:k=_ast_for_expr(a,f);b=k==0?5:6;break;case 5:d=0;b=29;break;case 6:d=__Py_Index(k,HEAP[a+8]);b=29;break;case 7:b=HEAP[f]==304?8:10;break;case 8:h=_ast_for_expr(a,f);b=h==0?9:10;break;case 9:d=0;b=29;break;case 10:var o=HEAP[c+16];b=HEAP[f]==11? -11:15;break;case 11:b=o>1?12:19;break;case 12:l=HEAP[c+20]+24;b=HEAP[l]==304?13:19;break;case 13:j=_ast_for_expr(a,l);b=j==0?14:19;break;case 14:d=0;b=29;break;case 15:b=o>2?16:19;break;case 16:m=HEAP[c+20]+48;b=HEAP[m]==304?17:19;break;case 17:j=_ast_for_expr(a,m);b=j==0?18:19;break;case 18:d=0;b=29;break;case 19:f=HEAP[c+20]+24*(HEAP[c+16]-1);b=HEAP[f]==325?20:28;break;case 20:b=HEAP[f+16]==1?21:25;break;case 21:n=_new_identifier(__str2102,HEAP[a+8]);b=n==0?22:23;break;case 22:d=0;b=29;break;case 23:f= -HEAP[f+20];k=__Py_Name(n,1,HEAP[f+8],HEAP[f+12],HEAP[a+8]);b=k==0?24:28;break;case 24:d=0;b=29;break;case 25:f=HEAP[f+20]+24;b=HEAP[f]==304?26:28;break;case 26:k=_ast_for_expr(a,f);b=k==0?27:28;break;case 27:d=0;b=29;break;case 28:d=__Py_Slice(h,j,k,HEAP[a+8]);b=29;break;case 29:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_binop(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p;a=g;c=e;j=_ast_for_expr(a,HEAP[c+20]);b=j==0?1:2;break;case 1:d=0;b=18;break;case 2:k=_ast_for_expr(a,HEAP[c+20]+48);b=k==0?3:4;break;case 3:d=0;b=18;break;case 4:m=_get_operator(HEAP[c+20]+24);b=m==0?5:6;break;case 5:d=0;b=18;break;case 6:l=__Py_BinOp(j,m,k,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=l==0?7:8;break;case 7:d=0;b=18;break;case 8:h=(HEAP[c+16]-1)/2|0;f=1;b=16;break;case 9:p=HEAP[c+20]+24*(f*2+1);m=_get_operator(p); -b=m==0?10:11;break;case 10:d=0;b=18;break;case 11:o=_ast_for_expr(a,HEAP[c+20]+(f+1)*48);b=o==0?12:13;break;case 12:d=0;b=18;break;case 13:n=__Py_BinOp(l,m,o,HEAP[p+8],HEAP[p+12],HEAP[a+8]);b=n==0?14:15;break;case 14:d=0;b=18;break;case 15:l=n;f+=1;b=16;break;case 16:b=fn?15:21;break;case 21:var t=HEAP[c+8];a=q==0?22:23;break;case 22:k=HEAP[d+12];a=HEAP[d+8];var v=__Py_ExtSlice(r,HEAP[c+8]);k=__Py_Subscript(f,v,1,a,k,t);a=37;break;case 23:a=r!=0?24:25;break;case 24:j=HEAP[r];a=26;break;case 25:j=0;a=26;break;case 26:u=a=_asdl_seq_new(j,t);a=a==0?27:28;break;case 27:k=0;a=37;break;case 28:n=0;a=30;break;case 29:o=HEAP[r+4+n*4];HEAP[u+4+n*4]=HEAP[o+4];n+=1;a=30;break;case 30:a=r!=0?31:32;break;case 31:h=HEAP[r];a=33; -break;case 32:h=0;a=33;break;case 33:a=h>n?29:34;break;case 34:p=__Py_Tuple(u,1,HEAP[d+8],HEAP[d+12],HEAP[c+8]);a=p==0?35:36;break;case 35:k=0;a=37;break;case 36:k=HEAP[c+8];a=HEAP[d+12];var v=HEAP[d+8],w=__Py_Index(p,HEAP[c+8]);k=__Py_Subscript(f,w,1,v,a,k);a=37;break;case 37:return g=k;default:assert(0,"bad label: "+a)}} -function _ast_for_factor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;b=HEAP[HEAP[c+20]]==15?1:16;break;case 1:b=HEAP[c+16]==2?2:16;break;case 2:h=HEAP[c+20]+24;b=HEAP[h]==316?3:16;break;case 3:b=HEAP[h+16]==1?4:16;break;case 4:j=HEAP[h+20];b=HEAP[j]==317?5:16;break;case 5:b=HEAP[j+16]==1?6:16;break;case 6:k=HEAP[j+20];b=HEAP[k]==318?7:16;break;case 7:l=HEAP[k+20];b=HEAP[l]==2?8:16;break;case 8:b=_strlen(HEAP[l+4])+2>=0?9:12;break;case 9:b=_strlen(HEAP[l+4])!=-2?10:11;break; -case 10:f=_strlen(HEAP[l+4])+2;b=13;break;case 11:f=1;b=13;break;case 12:n=0;b=14;break;case 13:n=b=_malloc(f);b=b==0?14:15;break;case 14:d=0;b=23;break;case 15:HEAP[n]=45;_strcpy(n+1,HEAP[l+4]);_free(HEAP[l+4]);HEAP[l+4]=n;d=_ast_for_atom(a,k);b=23;break;case 16:m=b=_ast_for_expr(a,HEAP[c+20]+24);b=b==0?17:18;break;case 17:d=0;b=23;break;case 18:b=HEAP[HEAP[c+20]];b=b==14?19:b==15?20:b==32?21:22;break;case 19:d=__Py_UnaryOp(3,m,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=23;break;case 20:d=__Py_UnaryOp(4, -m,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=23;break;case 21:d=__Py_UnaryOp(1,m,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=23;break;case 22:_PyErr_Format(HEAP[_PyExc_SystemError],__str50150,allocate([HEAP[HEAP[c+20]],0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _ast_for_power(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;h=_ast_for_atom(a,HEAP[c+20]);b=h==0?1:2;break;case 1:d=0;b=17;break;case 2:b=HEAP[c+16]==1?3:4;break;case 3:d=h;b=17;break;case 4:f=1;b=9;break;case 5:k=HEAP[c+20]+24*f;b=HEAP[k]!=322?10:6;break;case 6:j=_ast_for_trailer(a,k,h);b=j==0?7:8;break;case 7:d=0;b=17;break;case 8:HEAP[j+24]=HEAP[h+24];HEAP[j+28]=HEAP[h+28];h=j;f+=1;b=9;break;case 9:b=HEAP[c+16]>f?5:10;break;case 10:b=HEAP[HEAP[c+20]+24*(HEAP[c+16]- -1)]==316?11:16;break;case 11:l=_ast_for_expr(a,HEAP[c+20]+24*(HEAP[c+16]-1));b=l==0?12:13;break;case 12:d=0;b=17;break;case 13:j=__Py_BinOp(h,6,l,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=j==0?14:15;break;case 14:d=0;b=17;break;case 15:h=j;b=16;break;case 16:d=h;b=17;break;case 17:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_expr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p;a=g;c=e;b=1;break;case 1:b=HEAP[c];b=b==302?2:b==304?2:b==305?7:b==306?7:b==307?19:b==308?24:b==310?40:b==311?40:b==312?40:b==313?40:b==314?40:b==315?40:b==316?47:b==317?50:b==340?43:51;break;case 2:b=HEAP[HEAP[c+20]]==321?4:3;break;case 3:b=HEAP[HEAP[c+20]]==303?4:5;break;case 4:d=_ast_for_lambdef(a,HEAP[c+20]);b=52;break;case 5:b=HEAP[c+16]>1?6:7;break;case 6:d=_ast_for_ifexpr(a,c);b=52;break;case 7:b=HEAP[c+ -16]==1?8:9;break;case 8:c=HEAP[c+20];b=1;break;case 9:f=_asdl_seq_new((HEAP[c+16]+1)/2|0,HEAP[a+8]);b=f==0?10:11;break;case 10:d=0;b=52;break;case 11:h=0;b=15;break;case 12:j=_ast_for_expr(a,q+24*h);b=j==0?13:14;break;case 13:d=0;b=52;break;case 14:HEAP[f+4+(h/2|0)*4]=j;h+=2;b=15;break;case 15:var q=HEAP[c+20];b=HEAP[c+16]>h?12:16;break;case 16:b=_strcmp(HEAP[q+24+4],__str51151);var r=HEAP[a+8],u=HEAP[c+12],s=HEAP[c+8],t=f;b=b==0?17:18;break;case 17:d=__Py_BoolOp(1,t,s,u,r);b=52;break;case 18:d=__Py_BoolOp(2, -t,s,u,r);b=52;break;case 19:var v=HEAP[c+20];b=HEAP[c+16]==1?20:21;break;case 20:c=v;b=1;break;case 21:k=_ast_for_expr(a,v+24);b=k==0?22:23;break;case 22:d=0;b=52;break;case 23:d=__Py_UnaryOp(2,k,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=52;break;case 24:b=HEAP[c+16]==1?25:26;break;case 25:c=HEAP[c+20];b=1;break;case 26:m=_asdl_int_seq_new(HEAP[c+16]/2|0,HEAP[a+8]);b=m==0?27:28;break;case 27:d=0;b=52;break;case 28:n=_asdl_seq_new(HEAP[c+16]/2|0,HEAP[a+8]);b=n==0?29:30;break;case 29:d=0;b=52;break;case 30:h= -1;b=36;break;case 31:o=_ast_for_comp_op(a,w+24*h);b=o==0?32:33;break;case 32:d=0;b=52;break;case 33:l=_ast_for_expr(a,HEAP[c+20]+24*(h+1));b=l==0?34:35;break;case 34:d=0;b=52;break;case 35:HEAP[m+4+(h/2|0)*4]=o;HEAP[n+4+(h/2|0)*4]=l;h+=2;b=36;break;case 36:var w=HEAP[c+20];b=HEAP[c+16]>h?31:37;break;case 37:l=_ast_for_expr(a,w);b=l==0?38:39;break;case 38:d=0;b=52;break;case 39:d=__Py_Compare(l,m,n,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=52;break;case 40:b=HEAP[c+16]==1?41:42;break;case 41:c=HEAP[c+20]; -b=1;break;case 42:d=_ast_for_binop(a,c);b=52;break;case 43:p=0;b=HEAP[c+16]==2?44:46;break;case 44:p=_ast_for_testlist(a,HEAP[c+20]+24);b=p==0?45:46;break;case 45:d=0;b=52;break;case 46:d=__Py_Yield(p,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=52;break;case 47:b=HEAP[c+16]==1?48:49;break;case 48:c=HEAP[c+20];b=1;break;case 49:d=_ast_for_factor(a,c);b=52;break;case 50:d=_ast_for_power(a,c);b=52;break;case 51:_PyErr_Format(HEAP[_PyExc_SystemError],__str52152,allocate([HEAP[c],0,0,0],["i32",0,0,0],ALLOC_STACK)); -d=0;b=52;break;case 52:return a=d;default:assert(0,"bad label: "+b)}} -function _ast_for_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w;c=g;d=e;f=b;j=m=l=k=q=p=0;a=HEAP[d+16]>j?1:8;break;case 1:r=HEAP[d+20]+24*j;a=HEAP[r]==331?2:7;break;case 2:a=HEAP[r+16]==1?3:4;break;case 3:k+=1;a=7;break;case 4:a=HEAP[HEAP[r+20]+24]==336?5:6;break;case 5:m+=1;a=7;break;case 6:l+=1;a=7;break;case 7:j+=1;a=HEAP[d+16]>j?1:8;break;case 8:a=m>1?12:9;break;case 9:a=m==0?13:10;break;case 10:a=k!=0?12:11;break;case 11:a=l!=0?12:13;break;case 12:_ast_error(d, -__str53153);h=0;a=62;break;case 13:a=l+k+m>255?14:15;break;case 14:_ast_error(d,__str54154);h=0;a=62;break;case 15:n=_asdl_seq_new(m+k,HEAP[c+8]);a=n==0?16:17;break;case 16:h=0;a=62;break;case 17:o=_asdl_seq_new(l,HEAP[c+8]);a=o==0?18:19;break;case 18:h=0;a=62;break;case 19:j=l=k=0;a=60;break;case 20:var x=u=HEAP[d+20]+24*j;a=HEAP[u]==331?21:51;break;case 21:a=HEAP[x+16]==1?22:29;break;case 22:a=l!=0?23:24;break;case 23:_ast_error(HEAP[u+20],__str55155);h=0;a=62;break;case 24:var y=HEAP[u+20];a=p!= -0?25:26;break;case 25:_ast_error(y,__str56156);h=0;a=62;break;case 26:s=_ast_for_expr(c,y);a=s==0?27:28;break;case 27:h=0;a=62;break;case 28:HEAP[n+4+k*4]=s;k+=1;a=59;break;case 29:a=HEAP[HEAP[u+20]+24]==336?30:33;break;case 30:s=_ast_for_genexp(c,u);a=s==0?31:32;break;case 31:h=0;a=62;break;case 32:HEAP[n+4+k*4]=s;k+=1;a=59;break;case 33:s=_ast_for_expr(c,HEAP[u+20]);a=s==0?34:35;break;case 34:h=0;a=62;break;case 35:a=HEAP[s]==4?36:37;break;case 36:_ast_error(HEAP[u+20],__str57157);h=0;a=62;break; -case 37:a=HEAP[s]!=20?38:39;break;case 38:_ast_error(HEAP[u+20],__str58158);h=0;a=62;break;case 39:v=HEAP[s+4];a=_forbidden_check(c,HEAP[u+20],v+20)==0?40:41;break;case 40:h=0;a=62;break;case 41:w=0;a=45;break;case 42:a=HEAP[HEAP[o+4+w*4]]+20;a=_strcmp(a,v+20)==0?43:44;break;case 43:_ast_error(HEAP[u+20],__str59159);h=0;a=62;break;case 44:w+=1;a=45;break;case 45:a=wj?20:61;break;case 61:h=__Py_Call(f,n,o,p,q,HEAP[f+24],HEAP[f+28],HEAP[c+8]);a=62; -break;case 62:return g=h;default:assert(0,"bad label: "+a)}}function _ast_for_testlist(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[c+16]==1?1:2;break;case 1:d=_ast_for_expr(a,HEAP[c+20]);b=5;break;case 2:f=_seq_for_testlist(a,c);b=f==0?3:4;break;case 3:d=0;b=5;break;case 4:d=__Py_Tuple(f,1,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_testlist_comp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[c+16]>1?1:3;break;case 1:b=HEAP[HEAP[c+20]+24]==336?2:3;break;case 2:d=_ast_for_genexp(a,c);b=4;break;case 3:d=_ast_for_testlist(a,c);b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_class_bases(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;var j=a;b=HEAP[c+16]==1?1:6;break;case 1:h=_asdl_seq_new(1,HEAP[j+8]);b=h==0?2:3;break;case 2:d=0;b=7;break;case 3:f=_ast_for_expr(a,HEAP[c+20]);b=f==0?4:5;break;case 4:d=0;b=7;break;case 5:HEAP[h+4]=f;d=h;b=7;break;case 6:d=_seq_for_testlist(j,c);b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_expr_stmt(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r;c=g;d=e;var u=HEAP[d+20];b=HEAP[d+16]==1?1:4;break;case 1:h=_ast_for_testlist(c,u);b=h==0?2:3;break;case 2:f=0;b=36;break;case 3:f=__Py_Expr(h,HEAP[d+8],HEAP[d+12],HEAP[c+8]);b=36;break;case 4:b=HEAP[u+24]==271?5:19;break;case 5:m=HEAP[d+20];j=_ast_for_testlist(c,m);b=j==0?6:7;break;case 6:f=0;b=36;break;case 7:b=_set_context(c,j,2,m)==0?8:9;break;case 8:f=0;b=36;break;case 9:b=HEAP[j]+-18<3?10: -11;break;case 10:m=HEAP[d+20]+48;var s=c,t=m;b=HEAP[m]==327?12:13;break;case 11:_ast_error(m,__str60160);f=0;b=36;break;case 12:var v=_ast_for_testlist(s,t);k=v;a=12;b=14;break;case 13:var w=_ast_for_expr(s,t);k=w;a=13;b=14;break;case 14:b=(a==13?w:v)==0?15:16;break;case 15:f=0;b=36;break;case 16:l=_ast_for_augassign(c,HEAP[d+20]+24);b=l==0?17:18;break;case 17:f=0;b=36;break;case 18:f=__Py_AugAssign(j,l,k,HEAP[d+8],HEAP[d+12],HEAP[c+8]);b=36;break;case 19:o=_asdl_seq_new(HEAP[d+16]/2|0,HEAP[c+8]); -b=o==0?20:21;break;case 20:f=0;b=36;break;case 21:n=0;b=29;break;case 22:r=x+24*n;b=HEAP[r]==340?23:24;break;case 23:_ast_error(r,__str61161);f=0;b=36;break;case 24:q=_ast_for_testlist(c,r);b=q==0?25:26;break;case 25:f=0;b=36;break;case 26:b=_set_context(c,q,2,HEAP[d+20]+24*n)==0?27:28;break;case 27:f=0;b=36;break;case 28:HEAP[o+4+(n/2|0)*4]=q;n+=2;b=29;break;case 29:var x=HEAP[d+20];b=HEAP[d+16]-2>n?22:30;break;case 30:b=x+24*(HEAP[d+16]-1);var y=c,z=b;b=HEAP[b]==327?31:32;break;case 31:var C=_ast_for_testlist(y, -z);p=C;a=31;b=33;break;case 32:var A=_ast_for_expr(y,z);p=A;a=32;b=33;break;case 33:b=(a==32?A:C)==0?34:35;break;case 34:f=0;b=36;break;case 35:f=__Py_Assign(o,p,HEAP[d+8],HEAP[d+12],HEAP[c+8]);b=36;break;case 36:return a=f;default:assert(0,"bad label: "+b)}} -function _ast_for_print_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;j=f=0;n=1;b=HEAP[c+16]>1?1:5;break;case 1:b=HEAP[HEAP[c+20]+24]==35?2:5;break;case 2:f=_ast_for_expr(a,HEAP[c+20]+48);b=f==0?3:4;break;case 3:d=0;b=14;break;case 4:n=4;b=5;break;case 5:m=(HEAP[c+16]+1+(0-n))/2|0;b=((HEAP[c+16]+1+(0-n))/2|0)!=0?6:13;break;case 6:j=_asdl_seq_new(m,HEAP[a+8]);b=j==0?7:8;break;case 7:d=0;b=14;break;case 8:k=n;l=0;b=12;break;case 9:h=_ast_for_expr(a,HEAP[c+20]+24*k);b= -h==0?10:11;break;case 10:d=0;b=14;break;case 11:HEAP[j+4+l*4]=h;k+=2;l+=1;b=12;break;case 12:b=HEAP[c+16]>k?9:13;break;case 13:b=HEAP[HEAP[c+20]+24*(HEAP[c+16]-1)]!=12;d=__Py_Print(f,j,b,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=14;break;case 14:return a=d;default:assert(0,"bad label: "+b)}} -function _ast_for_exprlist(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;j=_asdl_seq_new((HEAP[d+16]+1)/2|0,HEAP[c+8]);a=j==0?1:2;break;case 1:h=0;a=11;break;case 2:k=0;a=9;break;case 3:l=_ast_for_expr(c,HEAP[d+20]+24*k);a=l==0?4:5;break;case 4:h=0;a=11;break;case 5:HEAP[j+4+(k/2|0)*4]=l;a=f!=0?6:8;break;case 6:a=_set_context(c,l,f,HEAP[d+20]+24*k)==0?7:8;break;case 7:h=0;a=11;break;case 8:k+=2;a=9;break;case 9:a=HEAP[d+16]>k?3:10;break;case 10:h=j;a=11;break;case 11:return g= -h;default:assert(0,"bad label: "+a)}}function _ast_for_del_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=_ast_for_exprlist(a,HEAP[c+20]+24,3);b=f==0?1:2;break;case 1:d=0;b=3;break;case 2:d=__Py_Delete(f,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=3;break;case 3:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_flow_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p;a=g;c=e;f=HEAP[c+20];b=HEAP[f];b=b==276?1:b==277?2:b==278?6:b==279?3:b==280?11:31;break;case 1:d=__Py_Break(HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 2:d=__Py_Continue(HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 3:h=_ast_for_expr(a,HEAP[f+20]);b=h==0?4:5;break;case 4:d=0;b=32;break;case 5:d=__Py_Expr(h,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 6:b=HEAP[f+16]==1?7:8;break;case 7:d=__Py_Return(0, -HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 8:j=_ast_for_testlist(a,HEAP[f+20]+24);b=j==0?9:10;break;case 9:d=0;b=32;break;case 10:d=__Py_Return(j,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 11:b=HEAP[f+16]==1?12:13;break;case 12:d=__Py_Raise(0,0,0,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 13:var q=f;b=HEAP[f+16]==2?14:17;break;case 14:k=_ast_for_expr(a,HEAP[q+20]+24);b=k==0?15:16;break;case 15:d=0;b=32;break;case 16:d=__Py_Raise(k,0,0,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 17:var r= -f;b=HEAP[q+16]==4?18:23;break;case 18:l=_ast_for_expr(a,HEAP[r+20]+24);b=l==0?19:20;break;case 19:d=0;b=32;break;case 20:m=_ast_for_expr(a,HEAP[f+20]+72);b=m==0?21:22;break;case 21:d=0;b=32;break;case 22:d=__Py_Raise(l,m,0,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 23:b=HEAP[r+16]==6?24:31;break;case 24:n=_ast_for_expr(a,HEAP[f+20]+24);b=n==0?25:26;break;case 25:d=0;b=32;break;case 26:o=_ast_for_expr(a,HEAP[f+20]+72);b=o==0?27:28;break;case 27:d=0;b=32;break;case 28:p=_ast_for_expr(a,HEAP[f+ -20]+120);b=p==0?29:30;break;case 29:d=0;b=32;break;case 30:d=__Py_Raise(n,o,p,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=32;break;case 31:_PyErr_Format(HEAP[_PyExc_SystemError],__str62162,allocate([HEAP[f],0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=32;break;case 32:return a=d;default:assert(0,"bad label: "+b)}} -function _alias_for_import_name(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l,m,n,o,p,q,r,u,s;d=g;f=e;h=b;c=1;break;case 1:c=HEAP[f];c=c==16?38:c==284?2:c==285?13:c==288?22:39;break;case 2:m=HEAP[f+20];HEAP[k]=0;c=HEAP[f+16]==3?3:8;break;case 3:n=HEAP[f+20]+48;c=h!=0?4:6;break;case 4:c=_forbidden_check(d,n,HEAP[n+4])==0?5:6;break;case 5:j=0;c=40;break;case 6:c=_new_identifier(HEAP[n+4],HEAP[d+8]);HEAP[k]=c;c=c==0?7:10;break;case 7:j=0;c=40;break; -case 8:c=_forbidden_check(d,m,HEAP[m+4])==0?9:10;break;case 9:j=0;c=40;break;case 10:l=c=_new_identifier(HEAP[m+4],HEAP[d+8]);c=c==0?11:12;break;case 11:j=0;c=40;break;case 12:j=__Py_alias(l,HEAP[k],HEAP[d+8]);c=40;break;case 13:var t=HEAP[f+20];c=HEAP[f+16]==1?14:15;break;case 14:f=t;c=1;break;case 15:o=t+48;p=_alias_for_import_name(d,HEAP[f+20],0);c=p==0?16:17;break;case 16:j=0;c=40;break;case 17:c=_forbidden_check(d,o,HEAP[o+4])==0?18:19;break;case 18:j=0;c=40;break;case 19:c=_new_identifier(HEAP[o+ -4],HEAP[d+8]);HEAP[p+4]=c;c=HEAP[p+4]==0?20:21;break;case 20:j=0;c=40;break;case 21:j=p;c=40;break;case 22:c=HEAP[f+16]==1?23:29;break;case 23:q=HEAP[f+20];c=h!=0?24:26;break;case 24:c=_forbidden_check(d,q,HEAP[q+4])==0?25:26;break;case 25:j=0;c=40;break;case 26:l=c=_new_identifier(HEAP[q+4],HEAP[d+8]);c=c==0?27:28;break;case 27:j=0;c=40;break;case 28:j=__Py_alias(l,0,HEAP[d+8]);c=40;break;case 29:r=u=0;c=HEAP[f+16]>r?30:31;break;case 30:u=_strlen(HEAP[HEAP[f+20]+24*r+4])+1+u;r+=2;c=HEAP[f+16]>r? -30:31;break;case 31:u-=1;c=_PyString_FromStringAndSize(0,u);HEAP[k]=c;c=c==0?32:33;break;case 32:j=0;c=40;break;case 33:s=HEAP[k]+20;c=s==0?34:35;break;case 34:j=0;c=40;break;case 35:r=0;c=HEAP[f+16]>r?36:37;break;case 36:c=HEAP[HEAP[f+20]+24*r+4];_strcpy(s,HEAP[HEAP[f+20]+24*r+4]);c=_strlen(c);s+=c;HEAP[s]=46;s+=1;r+=2;c=HEAP[f+16]>r?36:37;break;case 37:s+=-1;HEAP[s]=0;_PyString_InternInPlace(k);_PyArena_AddPyObject(HEAP[d+8],HEAP[k]);j=__Py_alias(HEAP[k],0,HEAP[d+8]);c=40;break;case 38:j=_PyString_InternFromString(__str33); -HEAP[k]=j;_PyArena_AddPyObject(HEAP[d+8],HEAP[k]);j=__Py_alias(HEAP[k],0,HEAP[d+8]);c=40;break;case 39:_PyErr_Format(HEAP[_PyExc_SystemError],__str64164,allocate([HEAP[f],0,0,0],["i32",0,0,0],ALLOC_STACK));j=0;c=40;break;case 40:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _ast_for_import_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u;a=g;c=e;f=HEAP[c+8];h=HEAP[c+12];var s=c=HEAP[c+20];b=HEAP[c]==282?1:9;break;case 1:c=HEAP[s+20]+24;k=_asdl_seq_new((HEAP[c+16]+1)/2|0,HEAP[a+8]);b=k==0?2:3;break;case 2:d=0;b=39;break;case 3:j=0;b=7;break;case 4:l=_alias_for_import_name(a,HEAP[c+20]+24*j,1);b=l==0?5:6;break;case 5:d=0;b=39;break;case 6:HEAP[k+4+(j/2|0)*4]=l;j+=2;b=7;break;case 7:b=HEAP[c+16]>j?4:8;break;case 8:d=__Py_Import(k, -f,h,HEAP[a+8]);b=39;break;case 9:b=HEAP[s]==283?10:38;break;case 10:q=p=o=0;n=1;b=17;break;case 11:var t=HEAP[c+20]+24*n;b=HEAP[HEAP[c+20]+24*n]==288?12:15;break;case 12:p=_alias_for_import_name(a,t,0);b=p==0?13:14;break;case 13:d=0;b=39;break;case 14:n+=1;b=18;break;case 15:b=HEAP[t]!=23?18:16;break;case 16:o+=1;n+=1;b=17;break;case 17:b=HEAP[c+16]>n?11:18;break;case 18:n+=1;b=HEAP[HEAP[c+20]+24*n];b=b==7?20:b==16?19:b==286?21:23;break;case 19:c=HEAP[c+20]+24*n;m=1;b=24;break;case 20:c=HEAP[c+20]+ -24*(n+1);m=HEAP[c+16];b=24;break;case 21:c=HEAP[c+20]+24*n;m=HEAP[c+16];b=(m&1)==0?22:24;break;case 22:_ast_error(c,__str65165);d=0;b=39;break;case 23:_ast_error(c,__str66166);d=0;b=39;break;case 24:k=b=_asdl_seq_new((m+1)/2|0,HEAP[a+8]);b=b==0?25:26;break;case 25:d=0;b=39;break;case 26:b=HEAP[c]==16?27:30;break;case 27:r=_alias_for_import_name(a,c,1);b=r==0?28:29;break;case 28:d=0;b=39;break;case 29:HEAP[k+4]=r;b=35;break;case 30:j=0;b=34;break;case 31:u=_alias_for_import_name(a,HEAP[c+20]+24*j, -1);b=u==0?32:33;break;case 32:d=0;b=39;break;case 33:HEAP[k+4+(j/2|0)*4]=u;j+=2;b=34;break;case 34:b=HEAP[c+16]>j?31:35;break;case 35:b=p!=0?36:37;break;case 36:q=HEAP[p];b=37;break;case 37:d=__Py_ImportFrom(q,k,o,f,h,HEAP[a+8]);b=39;break;case 38:_PyErr_Format(HEAP[_PyExc_SystemError],__str67167,allocate([HEAP[HEAP[c+20]+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;b=39;break;case 39:return a=d;default:assert(0,"bad label: "+b)}} -function _ast_for_global_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=_asdl_seq_new(HEAP[c+16]/2|0,HEAP[a+8]);b=h==0?1:2;break;case 1:d=0;b=8;break;case 2:j=1;b=6;break;case 3:f=_new_identifier(HEAP[HEAP[l+20]+24*j+4],k);b=f==0?4:5;break;case 4:d=0;b=8;break;case 5:HEAP[h+4+(j/2|0)*4]=f;j+=2;b=6;break;case 6:var k=HEAP[a+8],l=c;b=HEAP[c+16]>j?3:7;break;case 7:d=__Py_Global(h,HEAP[c+8],HEAP[l+12],k);b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_exec_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;j=h=0;k=HEAP[c+16];b=k!=2&k!=4&k!=6?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_SystemError],__str68168,allocate([k,0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=11;break;case 2:f=_ast_for_expr(a,HEAP[c+20]+24);b=f==0?3:4;break;case 3:d=0;b=11;break;case 4:b=k>3?5:10;break;case 5:h=_ast_for_expr(a,HEAP[c+20]+72);b=h==0?6:7;break;case 6:d=0;b=11;break;case 7:b=k==6?8:10;break;case 8:j=_ast_for_expr(a,HEAP[c+20]+ -120);b=j==0?9:10;break;case 9:d=0;b=11;break;case 10:d=__Py_Exec(f,h,j,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_assert_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;var k=c=e;b=HEAP[c+16]==2?1:4;break;case 1:f=_ast_for_expr(a,HEAP[k+20]+24);b=f==0?2:3;break;case 2:d=0;b=11;break;case 3:d=__Py_Assert(f,0,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=11;break;case 4:var l=c;b=HEAP[k+16]==4?5:10;break;case 5:h=_ast_for_expr(a,HEAP[l+20]+24);b=h==0?6:7;break;case 6:d=0;b=11;break;case 7:j=_ast_for_expr(a,HEAP[c+20]+72);b=j==0?8:9;break;case 8:d=0;b=11;break;case 9:d=__Py_Assert(h,j,HEAP[c+ -8],HEAP[c+12],HEAP[a+8]);b=11;break;case 10:_PyErr_Format(HEAP[_PyExc_SystemError],__str69169,allocate([HEAP[l+16],0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}} -function _ast_for_suite(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;l=0;f=_num_stmts(c);f=_asdl_seq_new(f,HEAP[a+8]);b=f==0?1:2;break;case 1:d=0;b=24;break;case 2:b=HEAP[HEAP[c+20]]==268?3:10;break;case 3:c=HEAP[c+20];k=HEAP[c+16]-1;b=HEAP[HEAP[c+20]+24*(k-1)]==13?4:5;break;case 4:k-=1;b=5;break;case 5:j=0;b=9;break;case 6:m=HEAP[c+20]+24*j;h=_ast_for_stmt(a,m);b=h==0?7:8;break;case 7:d=0;b=24;break;case 8:HEAP[f+4+l*4]=h;l+=1;j+=2;b=9;break;case 9:b=jn?16:21;break;case 21:j+=1;b=22;break;case 22:b=HEAP[c+16]-1>j?11:23;break;case 23:d= -f;b=24;break;case 24:return a=d;default:assert(0,"bad label: "+b)}} -function _ast_for_if_stmt(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;a=g;c=e;var w=HEAP[c+20];b=HEAP[c+16]==4?1:6;break;case 1:h=_ast_for_expr(a,w+24);b=h==0?2:3;break;case 2:d=0;b=43;break;case 3:j=_ast_for_suite(a,HEAP[c+20]+72);b=j==0?4:5;break;case 4:d=0;b=43;break;case 5:d=__Py_If(h,j,0,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=43;break;case 6:f=HEAP[w+96+4];b=HEAP[f+2]==115?7:14;break;case 7:k=_ast_for_expr(a,HEAP[c+20]+24);b=k==0?8:9;break;case 8:d=0;b=43;break; -case 9:l=_ast_for_suite(a,HEAP[c+20]+72);b=l==0?10:11;break;case 10:d=0;b=43;break;case 11:m=_ast_for_suite(a,HEAP[c+20]+144);b=m==0?12:13;break;case 12:d=0;b=43;break;case 13:d=__Py_If(k,l,m,HEAP[c+8],HEAP[c+12],HEAP[a+8]);b=43;break;case 14:b=HEAP[f+2]==105?15:42;break;case 15:u=p=0;o=HEAP[c+16]-4;b=HEAP[HEAP[c+20]+24*(o+1)]==1?16:18;break;case 16:b=HEAP[HEAP[HEAP[c+20]+24*(o+1)+4]+2]==115?17:18;break;case 17:p=1;o-=3;o=o/4|0;b=19;break;case 18:o=o/4|0;b=p!=0?19:28;break;case 19:u=b=_asdl_seq_new(1, -HEAP[a+8]);b=b==0?20:21;break;case 20:d=0;b=43;break;case 21:q=_ast_for_expr(a,HEAP[c+20]+24*(HEAP[c+16]-6));b=q==0?22:23;break;case 22:d=0;b=43;break;case 23:r=_ast_for_suite(a,HEAP[c+20]+24*(HEAP[c+16]-4));b=r==0?24:25;break;case 24:d=0;b=43;break;case 25:s=_ast_for_suite(a,HEAP[c+20]+24*(HEAP[c+16]-1));b=s==0?26:27;break;case 26:d=0;b=43;break;case 27:b=__Py_If(q,r,s,HEAP[HEAP[c+20]+24*(HEAP[c+16]-6)+8],HEAP[HEAP[c+20]+24*(HEAP[c+16]-6)+12],HEAP[a+8]);HEAP[u+4]=b;o-=1;b=28;break;case 28:n=0;b= -36;break;case 29:t=(o-n)*4+1;v=_asdl_seq_new(1,HEAP[a+8]);b=v==0?30:31;break;case 30:d=0;b=43;break;case 31:q=_ast_for_expr(a,HEAP[c+20]+24*t);b=q==0?32:33;break;case 32:d=0;b=43;break;case 33:r=_ast_for_suite(a,HEAP[c+20]+24*(t+2));b=r==0?34:35;break;case 34:d=0;b=43;break;case 35:u=__Py_If(q,r,u,HEAP[HEAP[c+20]+24*t+8],HEAP[HEAP[c+20]+24*t+12],HEAP[a+8]);HEAP[v+4]=u;u=v;n+=1;b=36;break;case 36:b=n8?5:9;break;case 5:b=HEAP[HEAP[d+20]+24*(h-6)]==1?6:9;break;case 6:l=_ast_for_suite(c,HEAP[d+20]+24*(h-4));b=l==0?7:8;break;case 7:f=0;b=32;break;case 8:j-= -1;b=9;break;case 9:m=b=_ast_for_suite(c,HEAP[d+20]+24*(h-1));b=b==0?10:11;break;case 10:f=0;b=32;break;case 11:var u=j-1;j=u;a=11;b=18;break;case 12:l=_ast_for_suite(c,HEAP[d+20]+24*(h-1));b=l==0?13:14;break;case 13:f=0;b=32;break;case 14:var s=j-1;j=s;a=14;b=18;break;case 15:b=HEAP[r]!=299?16:17;break;case 16:_ast_error(d,__str74174);f=0;b=32;break;case 17:var t=j,a=17;b=18;break;case 18:b=(a==17?t:a==11?u:s)>0?19:31;break;case 19:p=_asdl_seq_new(j,HEAP[c+8]);b=p==0?20:21;break;case 20:f=0;b=32; -break;case 21:n=0;b=25;break;case 22:q=_ast_for_except_clause(c,HEAP[d+20]+(n+1)*72,HEAP[d+20]+24*(n*3+5));b=q==0?23:24;break;case 23:f=0;b=32;break;case 24:HEAP[p+4+n*4]=q;n+=1;b=25;break;case 25:b=n=c?4:3;break;case 3:g=HEAP[k]<0?1:4;break;case 4:HEAP[a]=k;h=g=_PyUnicodeUCS2_DecodeUTF8(l,k-l,0);g=g==0?5:6;break;case 5:f=0;g=9;break;case 6:j=_PyUnicodeUCS2_AsEncodedString(h,d,0);HEAP[h]-=1;g=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);g=8;break;case 8:f=j;g=9;break;case 9:return e=f;default:assert(0,"bad label: "+g)}} -function _decode_unicode(g,e,b,a,c){var d=STACKTOP;STACKTOP+=4;_memset(d,0,4);var f,h=null;for(f=-1;;)switch(f){case -1:var j,k=d,l,m,n,o,p,q,r,u,s,t,v,w,x;j=g;HEAP[k]=e;l=b;m=a;n=c;q=0;n!=0?(h=-1,f=1):(h=-1,f=23);break;case 1:f=_strcmp(n,__str76176)!=0?2:22;break;case 2:f=l>715827882?3:4;break;case 3:o=0;f=30;break;case 4:q=_PyString_FromStringAndSize(0,l*6);f=q==0?5:6;break;case 5:o=0;f=30;break;case 6:u=r=_PyString_AsString(q);s=HEAP[k]+l;f=20;break;case 7:f=HEAP[HEAP[k]]==92?8:10;break;case 8:f= -HEAP[k];HEAP[u]=HEAP[f];u+=1;HEAP[k]=f+1;f=HEAP[HEAP[k]]<0?9:10;break;case 9:_llvm_memcpy_p0i8_p0i8_i32(u,__str77177,6,1,0);u+=5;f=10;break;case 10:f=HEAP[HEAP[k]]<0?11:19;break;case 11:t=_decode_utf8(j,k,s);f=t==0?12:15;break;case 12:HEAP[q]-=1;f=HEAP[q]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=14;break;case 14:o=0;f=30;break;case 15:v=_PyString_AsString(t);w=_PyString_Size(t);x=0;f=x3?15:20;break;case 15:b=HEAP[d]==l?16:20;break;case 16:b=HEAP[d+1]==l?17:20;break;case 17:d+=2;k-=2;k-=1;b=HEAP[d+k]!=l?19:18;break;case 18:k-=1;b=HEAP[d+k]!=l?19:20;break;case 19:__PyErr_BadInternalCall(__str80180,3483);j=0;b=40;break;case 20:var r=HEAP[c]; -b=o!=0|HEAP[_Py_UnicodeFlag]!=0?21:22;break;case 21:j=_decode_unicode(c,d,k,m,r);b=40;break;case 22:b=r==0?26:23;break;case 23:b=_strcmp(HEAP[c],__str12112)==0?26:24;break;case 24:b=_strcmp(HEAP[c],__str76176)==0?26:25;break;case 25:h=1;b=27;break;case 26:h=0;b=27;break;case 27:var u=h;n=u;m!=0?(a=27,b=29):(a=27,b=28);break;case 28:var a=_strchr(d,92),s=n;a==0?(a=28,b=29):(a=28,b=36);break;case 29:var t=k,v=d;b=(a==27?u:s)!=0?30:35;break;case 30:q=_PyUnicodeUCS2_DecodeUTF8(v,t,0);b=q==0?31:32;break; -case 31:j=0;b=40;break;case 32:p=_PyUnicodeUCS2_AsEncodedString(q,HEAP[c],0);HEAP[q]-=1;b=HEAP[q]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);b=34;break;case 34:j=p;b=40;break;case 35:j=_PyString_FromStringAndSize(v,t);b=40;break;case 36:b=s!=0?37:38;break;case 37:f=HEAP[c];b=39;break;case 38:f=0;b=39;break;case 39:j=_PyString_DecodeEscape(d,k,0,o,f);b=40;break;case 40:return c=j;default:assert(0,"bad label: "+b)}} -function _parsestrplus(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j,k,l;c=g;d=e;a=_parsestr(c,HEAP[HEAP[d+20]+4]);HEAP[h]=a;a=HEAP[h]!=0?1:13;break;case 1:j=1;a=12;break;case 2:k=_parsestr(c,HEAP[HEAP[d+20]+24*j+4]);var m=HEAP[h];a=k==0?14:3;break;case 3:a=(HEAP[HEAP[m+4]+84]&134217728)==0?6:4;break;case 4:a=(HEAP[HEAP[k+4]+84]&134217728)==0?6:5;break;case 5:_PyString_ConcatAndDel(h,k);a=HEAP[h]==0?17:11;break;case 6:l=_PyUnicodeUCS2_Concat(HEAP[h], -k);HEAP[k]-=1;a=HEAP[k]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=8;break;case 8:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=10;break;case 10:HEAP[h]=l;a=l==0?17:11;break;case 11:j+=1;a=12;break;case 12:a=HEAP[d+16]>j?2:13;break;case 13:f=HEAP[h];a=18;break;case 14:a=m!=0?15:17;break;case 15:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=17;break;case 17:f=0;a=18; -break;case 18:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __Py_newbitset(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d;c=Math.floor((g+7)/8);e=c>=0?1:4;break;case 1:e=c!=0?2:3;break;case 2:a=c;e=5;break;case 3:a=1;e=5;break;case 4:d=0;e=6;break;case 5:d=e=_malloc(a);e=e==0?6:7;break;case 6:throw _Py_FatalError(__str182),"Reached an unreachable!";case 7:d+=c;c=b=c-1;var f=d;b>=0?(b=7,e=8):(b=7,e=9);break;case 8:d=(b==8?h:f)+-1;HEAP[d]=0;c=b=c-1;var h=d;b>=0?e=b=8:(b=8,e=9);break;case 9:return g=b==7?f:h;default:assert(0,"bad label: "+e)}} -function __Py_delbitset(g){_free(g)}function __Py_addbit(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;b=e;d=Math.floor(b/8);f=1<<(b&7)&255;b=(f&HEAP[a+d])!=0?1:2;break;case 1:c=0;b=3;break;case 2:HEAP[a+d]|=f;c=1;b=3;break;case 3:return a=c;default:assert(0,"bad label: "+b)}} -function __Py_samebitset(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;h=Math.floor((b+7)/8);a=3;break;case 1:a=HEAP[c]!=HEAP[d];c+=1;d+=1;a=a!=0?2:3;break;case 2:f=0;a=5;break;case 3:h=a=h-1;a=a>=0?1:4;break;case 4:f=1;a=5;break;case 5:return g=f;default:assert(0,"bad label: "+a)}} -function __Py_mergebitset(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;d=e;f=Math.floor((b+7)/8);f=a=f-1;a=a>=0?1:2;break;case 1:a=c;HEAP[a]|=HEAP[d];c+=1;d+=1;f=a=f-1;a=a>=0?1:2;break;case 2:return;default:assert(0,"bad label: "+a)}} -function _builtin___import__(g,e,b){g=STACKTOP;STACKTOP+=20;_memset(g,0,20);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4,j=g+8,k=g+12,l=g+16;a=e;c=b;HEAP[h]=0;HEAP[j]=0;HEAP[k]=0;HEAP[l]=-1;a=_PyArg_ParseTupleAndKeywords(a,c,__str183,_kwlist_9045,allocate([f,0,0,0,h,0,0,0,j,0,0,0,k,0,0,0,l,0,0,0],["i8**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyImport_ImportModuleLevel(HEAP[f], -HEAP[h],HEAP[j],HEAP[k],HEAP[l]);a=3;break;case 3:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _builtin_abs(g,e){return _PyNumber_Absolute(e)} -function _builtin_all(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;c=_PyObject_GetIter(e);b=c==0?1:2;break;case 1:a=0;b=21;break;case 2:f=HEAP[HEAP[c+4]+112];b=3;break;case 3:d=b=FUNCTION_TABLE[f](c);b=b==0?14:4;break;case 4:h=_PyObject_IsTrue(d);HEAP[d]-=1;b=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=6;break;case 6:b=h<0?7:10;break;case 7:HEAP[c]-=1;b=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=9;break;case 9:a=0;b=21;break;case 10:b=h==0? -11:3;break;case 11:HEAP[c]-=1;b=HEAP[c]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=13;break;case 13:HEAP[__Py_ZeroStruct]+=1;a=__Py_ZeroStruct;b=21;break;case 14:HEAP[c]-=1;b=HEAP[c]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=16;break;case 16:b=_PyErr_Occurred()!=0?17:20;break;case 17:b=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?18:19;break;case 18:_PyErr_Clear();b=20;break;case 19:a=0;b=21;break;case 20:HEAP[__Py_TrueStruct]+=1;a=__Py_TrueStruct; -b=21;break;case 21:return a;default:assert(0,"bad label: "+b)}} -function _builtin_any(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;c=_PyObject_GetIter(e);b=c==0?1:2;break;case 1:a=0;b=21;break;case 2:f=HEAP[HEAP[c+4]+112];b=3;break;case 3:d=b=FUNCTION_TABLE[f](c);b=b==0?14:4;break;case 4:h=_PyObject_IsTrue(d);HEAP[d]-=1;b=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=6;break;case 6:b=h<0?7:10;break;case 7:HEAP[c]-=1;b=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=9;break;case 9:a=0;b=21;break;case 10:b=h==1? -11:3;break;case 11:HEAP[c]-=1;b=HEAP[c]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=13;break;case 13:HEAP[__Py_TrueStruct]+=1;a=__Py_TrueStruct;b=21;break;case 14:HEAP[c]-=1;b=HEAP[c]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=16;break;case 16:b=_PyErr_Occurred()!=0?17:20;break;case 17:b=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?18:19;break;case 18:_PyErr_Clear();b=20;break;case 19:a=0;b=21;break;case 20:HEAP[__Py_ZeroStruct]+=1;a=__Py_ZeroStruct; -b=21;break;case 21:return a;default:assert(0,"bad label: "+b)}} -function _builtin_apply(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k,l;c=e;HEAP[h]=0;l=k=HEAP[j]=0;a=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str6189,1)<0?2:3;break;case 2:d=0;a=20;break;case 3:a=_PyArg_UnpackTuple(c,__str7190,1,3,allocate([f,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?4:5; -break;case 4:d=0;a=20;break;case 5:a=HEAP[h]!=0?6:12;break;case 6:a=(HEAP[HEAP[HEAP[h]+4]+84]&67108864)==0?7:12;break;case 7:a=_PySequence_Check(HEAP[h]);var m=HEAP[h];a=a==0?8:9;break;case 8:_PyErr_Format(HEAP[_PyExc_TypeError],__str8191,allocate([HEAP[HEAP[m+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;a=20;break;case 9:k=_PySequence_Tuple(m);a=k==0?10:11;break;case 10:d=0;a=20;break;case 11:HEAP[h]=k;a=12;break;case 12:a=HEAP[j]!=0?13:15;break;case 13:a=(HEAP[HEAP[HEAP[j]+4]+84]&536870912)==0? -14:15;break;case 14:_PyErr_Format(HEAP[_PyExc_TypeError],__str9192,allocate([HEAP[HEAP[HEAP[j]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=16;break;case 15:l=_PyEval_CallObjectWithKeywords(HEAP[f],HEAP[h],HEAP[j]);a=16;break;case 16:a=k!=0?17:19;break;case 17:HEAP[k]-=1;a=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=19;break;case 19:d=l;a=20;break;case 20:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _builtin_bin(g,e){return _PyNumber_ToBase(e,2)} -function _builtin_callable(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=e;b=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str10193,1)<0?2:3;break;case 2:c=0;b=4;break;case 3:b=_PyCallable_Check(a);c=_PyBool_FromLong(b);b=4;break;case 4:return a=c;default:assert(0,"bad label: "+b)}} -function _builtin_filter(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f=b,h=b+4,j,k,l,m,n,o,p,q,r;a=_PyArg_UnpackTuple(e,__str11194,2,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=50;break;case 2:var u=HEAP[h];a=(HEAP[HEAP[HEAP[h]+4]+84]&134217728)!=0?3:4;break;case 3:d=_filterstring(HEAP[f],u);a=50;break;case 4:var s=HEAP[h];a=(HEAP[HEAP[u+4]+84]&268435456)!=0? -5:6;break;case 5:d=_filterunicode(HEAP[f],s);a=50;break;case 6:a=(HEAP[HEAP[s+4]+84]&67108864)!=0?7:8;break;case 7:d=_filtertuple(HEAP[f],HEAP[h]);a=50;break;case 8:l=_PyTuple_New(1);a=l==0?9:10;break;case 9:d=0;a=50;break;case 10:k=_PyObject_GetIter(HEAP[h]);a=k==0?47:11;break;case 11:m=__PyObject_LengthHint(HEAP[h],8);a=m==-1?45:12;break;case 12:a=(HEAP[HEAP[HEAP[h]+4]+84]&33554432)==0?15:13;break;case 13:a=HEAP[HEAP[h]]!=1?15:14;break;case 14:HEAP[HEAP[h]]+=1;j=HEAP[h];a=16;break;case 15:j=a=_PyList_New(m); -a=a==0?45:16;break;case 16:n=0;a=17;break;case 17:o=a=_PyIter_Next(k);a=a==0?18:20;break;case 18:a=_PyErr_Occurred()!=0?43:19;break;case 19:a=n255?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str14197);c=0;a=5;break;case 4:HEAP[f]=HEAP[d]&255;c=_PyString_FromStringAndSize(f,1);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _builtin_unichr(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=_PyArg_ParseTuple(e,__str15198,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyUnicodeUCS2_FromOrdinal(HEAP[d]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _builtin_cmp(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=_PyArg_UnpackTuple(e,__str16199,2,2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_PyObject_Cmp(HEAP[d],HEAP[f],h)<0?3:4;break;case 3:c=0;a=5;break;case 4:c=_PyInt_FromLong(HEAP[h]);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _builtin_coerce(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j;c=e;a=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str17200,1)<0?2:3;break;case 2:d=0;a=12;break;case 3:a=_PyArg_UnpackTuple(c,__str18201,2,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?4:5;break;case 4:d=0;a=12;break;case 5:a=_PyNumber_Coerce(f,h)<0?6:7;break; -case 6:d=0;a=12;break;case 7:j=_PyTuple_Pack(2,allocate([HEAP[f],0,0,0,HEAP[h],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);a=9;break;case 9:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=11;break;case 11:d=j;a=12;break;case 12:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_compile(g,e,b){g=STACKTOP;STACKTOP+=44;_memset(g,0,44);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4,j=g+8,k,l=g+12,m=g+16,n,o=g+20,p,q=g+24,r,u=g+28,s=g+32,t,v;a=e;c=b;k=-1;HEAP[l]=0;r=p=HEAP[m]=0;HEAP[s]=257;HEAP[s+4]=258;HEAP[s+8]=256;a=_PyArg_ParseTupleAndKeywords(a,c,__str19202,_kwlist_9605,allocate([q,0,0,0,h,0,0,0,j,0,0,0,m,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=34; -break;case 2:HEAP[o]=HEAP[m];a=(HEAP[m]&-255505)!=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str25208);d=0;a=34;break;case 4:a=HEAP[l]==0?5:6;break;case 5:_PyEval_MergeCompilerFlags(o);a=6;break;case 6:a=_strcmp(HEAP[j],__str26209)==0?7:8;break;case 7:k=0;a=13;break;case 8:a=_strcmp(HEAP[j],__str27210)==0?9:10;break;case 9:k=1;a=13;break;case 10:a=_strcmp(HEAP[j],__str28211)==0?11:12;break;case 11:k=2;a=13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ValueError],__str29212);d=0;a= -34;break;case 13:n=a=_PyAST_Check(HEAP[q]);a=a==-1?14:15;break;case 14:d=0;a=34;break;case 15:a=n!=0?16:22;break;case 16:a=(HEAP[m]&1024)!=0?17:18;break;case 17:HEAP[HEAP[q]]+=1;p=HEAP[q];a=21;break;case 18:t=_PyArena_New();v=_PyAST_obj2mod(HEAP[q],t,k);a=v==0?19:20;break;case 19:_PyArena_Free(t);d=0;a=34;break;case 20:p=_PyAST_Compile(v,HEAP[h],o,t);_PyArena_Free(t);a=21;break;case 21:d=p;a=34;break;case 22:a=(HEAP[HEAP[HEAP[q]+4]+84]&268435456)!=0?23:26;break;case 23:r=_PyUnicodeUCS2_AsUTF8String(HEAP[q]); -a=r==0?24:25;break;case 24:d=0;a=34;break;case 25:HEAP[q]=r;HEAP[o]|=256;a=26;break;case 26:a=_PyObject_AsReadBuffer(HEAP[q],f,u)!=0?30:27;break;case 27:a=HEAP[u];c=_strlen(HEAP[f]);a=a!=c?28:29;break;case 28:_PyErr_SetString(HEAP[_PyExc_TypeError],__str30213);a=30;break;case 29:p=_Py_CompileStringFlags(HEAP[f],HEAP[h],HEAP[s+k*4],o);a=30;break;case 30:a=r!=0?31:33;break;case 31:HEAP[r]-=1;a=HEAP[r]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=33;break;case 33:d=p;a=34;break;case 34:return e= -d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _builtin_dir(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=e;HEAP[d]=0;a=_PyArg_UnpackTuple(a,__str31214,0,1,allocate([d,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyObject_Dir(HEAP[d]);a=3;break;case 3:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_divmod(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=_PyArg_UnpackTuple(e,__str32215,2,2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyNumber_Divmod(HEAP[d],HEAP[f]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _builtin_eval(g,e){var b=STACKTOP;STACKTOP+=20;_memset(b,0,20);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h=b,j,k,l=b+4,m=b+8,n=b+12,o=b+16;a=e;k=0;HEAP[l]=__Py_NoneStruct;HEAP[m]=__Py_NoneStruct;a=_PyArg_UnpackTuple(a,__str27210,1,3,allocate([h,0,0,0,l,0,0,0,m,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=46;break;case 2:a=HEAP[m]!=__Py_NoneStruct?3:5;break;case 3:a=_PyMapping_Check(HEAP[m])== -0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_TypeError],__str33216);f=0;a=46;break;case 5:a=HEAP[l]!=__Py_NoneStruct?6:12;break;case 6:var p=HEAP[l];a=(HEAP[HEAP[HEAP[l]+4]+84]&536870912)==0?7:11;break;case 7:a=_PyMapping_Check(p)!=0?8:9;break;case 8:d=__str34217;a=10;break;case 9:d=__str35218;a=10;break;case 10:_PyErr_SetString(HEAP[_PyExc_TypeError],d);f=0;a=46;break;case 11:a=p==__Py_NoneStruct?12:14;break;case 12:var q=_PyEval_GetGlobals();HEAP[l]=q;HEAP[m]==__Py_NoneStruct?(c=12,a=13):(c= -12,a=17);break;case 13:a=_PyEval_GetLocals();HEAP[m]=a;a=16;break;case 14:a=HEAP[m]==__Py_NoneStruct?15:16;break;case 15:var r=HEAP[l];HEAP[m]=r;c=15;a=17;break;case 16:var u=HEAP[l],c=16;a=17;break;case 17:a=(c==16?u:c==12?q:r)==0?19:18;break;case 18:a=HEAP[m]==0?19:20;break;case 19:_PyErr_SetString(HEAP[_PyExc_TypeError],__str36219);f=0;a=46;break;case 20:a=_PyDict_GetItemString(HEAP[l],__str37220)==0?21:23;break;case 21:a=_PyEval_GetBuiltins();a=_PyDict_SetItemString(HEAP[l],__str37220,a)!=0?22: -23;break;case 22:f=0;a=46;break;case 23:var s=HEAP[h];a=HEAP[HEAP[h]+4]==_PyCode_Type?24:27;break;case 24:a=HEAP[HEAP[s+40]+8]>0?25:26;break;case 25:_PyErr_SetString(HEAP[_PyExc_TypeError],__str38221);f=0;a=46;break;case 26:f=_PyEval_EvalCode(HEAP[h],HEAP[l],HEAP[m]);a=46;break;case 27:a=(HEAP[HEAP[s+4]+84]&134217728)==0?28:30;break;case 28:a=(HEAP[HEAP[HEAP[h]+4]+84]&268435456)==0?29:30;break;case 29:_PyErr_SetString(HEAP[_PyExc_TypeError],__str39222);f=0;a=46;break;case 30:HEAP[o]=0;a=(HEAP[HEAP[HEAP[h]+ -4]+84]&268435456)!=0?31:34;break;case 31:k=_PyUnicodeUCS2_AsUTF8String(HEAP[h]);a=k==0?32:33;break;case 32:f=0;a=46;break;case 33:HEAP[h]=k;HEAP[o]|=256;a=34;break;case 34:a=_PyString_AsStringAndSize(HEAP[h],n,0)!=0?35:40;break;case 35:a=k!=0?36:38;break;case 36:HEAP[k]-=1;a=HEAP[k]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=38;break;case 38:f=0;a=46;break;case 39:HEAP[n]+=1;a=40;break;case 40:a=HEAP[HEAP[n]]==32?39:41;break;case 41:a=HEAP[HEAP[n]]==9?39:42;break;case 42:_PyEval_MergeCompilerFlags(o); -j=_PyRun_StringFlags(HEAP[n],258,HEAP[l],HEAP[m],o);a=k!=0?43:45;break;case 43:HEAP[k]-=1;a=HEAP[k]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=45;break;case 45:f=j;a=46;break;case 46:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_execfile(g,e){var b=STACKTOP;STACKTOP+=112;_memset(b,0,112);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k,l,m=b+12,n,o=b+16;c=e;HEAP[h]=__Py_NoneStruct;HEAP[j]=__Py_NoneStruct;l=0;a=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str40223,1)<0?2:3;break;case 2:d=0;a=29;break;case 3:a=_PyArg_ParseTuple(c,__str41224,allocate([f,0,0,0,_PyDict_Type,0,0,0,h,0,0,0,j,0,0,0],["i8**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**", -0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?4:5;break;case 4:d=0;a=29;break;case 5:a=HEAP[j]!=__Py_NoneStruct?6:8;break;case 6:a=_PyMapping_Check(HEAP[j])==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str33216);d=0;a=29;break;case 8:a=HEAP[h]==__Py_NoneStruct?9:11;break;case 9:a=_PyEval_GetGlobals();HEAP[h]=a;a=HEAP[j]==__Py_NoneStruct?10:13;break;case 10:a=_PyEval_GetLocals();HEAP[j]=a;a=13;break;case 11:a=HEAP[j]==__Py_NoneStruct?12:13;break;case 12:HEAP[j]=HEAP[h];a= -13;break;case 13:a=_PyDict_GetItemString(HEAP[h],__str37220)==0?14:16;break;case 14:a=_PyEval_GetBuiltins();a=_PyDict_SetItemString(HEAP[h],__str37220,a)!=0?15:16;break;case 15:d=0;a=29;break;case 16:n=0;a=___01stat64_(HEAP[f],o)==0?17:20;break;case 17:a=(HEAP[o+16]&61440)==16384?18:19;break;case 18:a=___errno_location();HEAP[a]=21;a=20;break;case 19:n=1;a=21;break;case 20:a=n!=0?21:24;break;case 21:l=a=___01fopen64_(HEAP[f],__str42225);a=a==0?22:23;break;case 22:n=0;a=24;break;case 23:a=n==0?24: -25;break;case 24:_PyErr_SetFromErrnoWithFilename(HEAP[_PyExc_IOError],HEAP[f]);d=0;a=29;break;case 25:HEAP[m]=0;a=_PyEval_MergeCompilerFlags(m);var p=HEAP[j],q=HEAP[h],r=HEAP[f],u=l;a=a!=0?26:27;break;case 26:k=_PyRun_FileExFlags(u,r,257,q,p,1,m);a=28;break;case 27:k=_PyRun_FileExFlags(u,r,257,q,p,1,0);a=28;break;case 28:d=k;a=29;break;case 29:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_getattr(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4,j=b+8;a=e;HEAP[h]=0;a=_PyArg_UnpackTuple(a,__str43226,2,3,allocate([d,0,0,0,j,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=12;break;case 2:a=(HEAP[HEAP[HEAP[j]+4]+84]&268435456)!=0?3:5;break;case 3:a=__PyUnicodeUCS2_AsDefaultEncodedString(HEAP[j],0);HEAP[j]=a;a=HEAP[j]== -0?4:5;break;case 4:c=0;a=12;break;case 5:a=(HEAP[HEAP[HEAP[j]+4]+84]&134217728)==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str44227);c=0;a=12;break;case 7:f=_PyObject_GetAttr(HEAP[d],HEAP[j]);a=f==0?8:11;break;case 8:a=HEAP[h]!=0?9:11;break;case 9:a=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?10:11;break;case 10:_PyErr_Clear();HEAP[HEAP[h]]+=1;f=HEAP[h];a=11;break;case 11:c=f;a=12;break;case 12:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_globals(){var g;for(g=-1;;)switch(g){case -1:var e;e=_PyEval_GetGlobals();g=e!=0?1:2;break;case 1:HEAP[e]+=1;g=2;break;case 2:return g=e;default:assert(0,"bad label: "+g)}} -function _builtin_hasattr(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=_PyArg_UnpackTuple(e,__str45228,2,2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=14;break;case 2:a=(HEAP[HEAP[HEAP[f]+4]+84]&268435456)!=0?3:5;break;case 3:a=__PyUnicodeUCS2_AsDefaultEncodedString(HEAP[f],0);HEAP[f]=a;a=HEAP[f]==0?4:5;break;case 4:c=0;a=14;break;case 5:a=(HEAP[HEAP[HEAP[f]+ -4]+84]&134217728)==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str46229);c=0;a=14;break;case 7:a=_PyObject_GetAttr(HEAP[d],HEAP[f]);HEAP[d]=a;a=HEAP[d]==0?8:11;break;case 8:a=_PyErr_ExceptionMatches(HEAP[_PyExc_Exception])==0?9:10;break;case 9:c=0;a=14;break;case 10:_PyErr_Clear();HEAP[__Py_ZeroStruct]+=1;c=__Py_ZeroStruct;a=14;break;case 11:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=13;break;case 13:HEAP[__Py_TrueStruct]+= -1;c=__Py_TrueStruct;a=14;break;case 14:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _builtin_id(g,e){return _PyLong_FromVoidPtr(e)} -function _builtin_map(g,e){var b=STACKTOP;STACKTOP+=69;_memset(b,0,69);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s=b,t,v,w,x,y;d=e;l=0;n=_PyTuple_Size(d);a=n<=1?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str47230);h=0;a=72;break;case 2:j=_PyTuple_GetItem(d,0);var z=n-1;n=z;j==__Py_NoneStruct?(c=2,a=3):(c=2,a=8);break;case 3:a=HEAP[_Py_Py3kWarningFlag]!=0?4:6;break;case 4:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str48231,1)<0?5:6;break;case 5:h= -0;a=72;break;case 6:var C=n;C==1?(c=6,a=7):(c=6,a=8);break;case 7:h=_PyTuple_GetItem(d,1);h=_PySequence_List(h);a=72;break;case 8:a=(c==6?C:z)<=268435455?9:14;break;case 9:a=n*8>=0?10:13;break;case 10:a=n*8!=0?11:12;break;case 11:f=n*8;a=15;break;case 12:f=1;a=15;break;case 13:l=0;a=16;break;case 14:l=0;a=16;break;case 15:l=a=_malloc(f);a=a==0?16:17;break;case 16:_PyErr_NoMemory();h=0;a=72;break;case 17:p=0;a=po?23:24;break;case 23:o=u;a=24;break;case 24:p+=1;m+=8;a=25;break;case 25:a=p=o?57:60;break;case 57:y=_PyList_Append(A,w);HEAP[w]-=1;a=HEAP[w]==0?58:59;break;case 58:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);a=59;break;case 59:a=y<0?63:61;break;case 60:a=_PyList_SetItem(A,p,w)<0?63:61;break;case 61:p+=1;a=28;break;case 62:a=_PyList_SetSlice(k,p,o,0)<0?63:66;break;case 63:HEAP[k]-=1;a=HEAP[k]==0?64:65;break;case 64:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=65;break;case 65:k=0;a=66;break;case 66:p=0;var G=l;p1?4:5;break;case 4:HEAP[l]=t;c=7;break;case 5:c=_PyArg_UnpackTuple(t,u,1,1,allocate([l,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?6:7;break;case 6:j=0;c=64;break;case 7:c=f!=0?8:14;break;case 8:c=(HEAP[HEAP[f+4]+84]& -536870912)!=0?9:14;break;case 9:c=_PyDict_Size(f)!=0?10:14;break;case 10:r=_PyDict_GetItemString(f,__str62245);c=_PyDict_Size(f)!=1?12:11;break;case 11:c=r==0?12:13;break;case 12:_PyErr_Format(HEAP[_PyExc_TypeError],__str63246,allocate([u,0,0,0],["i8*",0,0,0],ALLOC_STACK));j=0;c=64;break;case 13:HEAP[r]+=1;c=14;break;case 14:m=c=_PyObject_GetIter(HEAP[l]);c=c==0?15:19;break;case 15:c=r!=0?16:18;break;case 16:HEAP[r]-=1;c=HEAP[r]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=18;break; -case 18:j=0;c=64;break;case 19:q=p=0;c=36;break;case 20:c=r!=0?21:22;break;case 21:o=_PyObject_CallFunctionObjArgs(r,allocate([n,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=o==0?50:23;break;case 22:o=n;HEAP[o]+=1;c=23;break;case 23:c=q==0?24:25;break;case 24:p=n;q=o;c=36;break;case 25:s=_PyObject_RichCompareBool(o,q,h);c=s<0?48:26;break;case 26:c=s>0?27:32;break;case 27:HEAP[q]-=1;c=HEAP[q]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=29;break;case 29:HEAP[p]-= -1;c=HEAP[p]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=31;break;case 31:q=o;p=n;c=36;break;case 32:HEAP[n]-=1;c=HEAP[n]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=34;break;case 34:HEAP[o]-=1;c=HEAP[o]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=36;break;case 36:n=c=_PyIter_Next(m);c=c!=0?20:37;break;case 37:c=_PyErr_Occurred()!=0?52:38;break;case 38:c=q==0?39:40;break;case 39:_PyErr_Format(HEAP[_PyExc_ValueError],__str64247,allocate([u,0, -0,0],["i8*",0,0,0],ALLOC_STACK));c=42;break;case 40:HEAP[q]-=1;c=HEAP[q]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=42;break;case 42:HEAP[m]-=1;c=HEAP[m]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=44;break;case 44:c=r!=0?45:47;break;case 45:HEAP[r]-=1;c=HEAP[r]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=47;break;case 47:j=p;c=64;break;case 48:HEAP[o]-=1;c=HEAP[o]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=50;break;case 50:HEAP[n]-= -1;c=HEAP[n]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=52;break;case 52:c=q!=0?53:55;break;case 53:HEAP[q]-=1;c=HEAP[q]==0?54:55;break;case 54:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=55;break;case 55:c=p!=0?56:58;break;case 56:HEAP[p]-=1;c=HEAP[p]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=58;break;case 58:HEAP[m]-=1;c=HEAP[m]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=60;break;case 60:c=r!=0?61:63;break;case 61:HEAP[r]-=1;c=HEAP[r]==0?62: -63;break;case 62:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=63;break;case 63:j=0;c=64;break;case 64:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _builtin_min(g,e,b){return _min_max(e,b,0)}function _builtin_max(g,e,b){return _min_max(e,b,4)} -function _builtin_oct(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=e;b=a==0?3:1;break;case 1:d=HEAP[HEAP[a+4]+48];b=d==0?3:2;break;case 2:b=HEAP[d+84]==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str65248);c=0;b=10;break;case 4:f=FUNCTION_TABLE[HEAP[d+84]](a);b=f!=0?5:9;break;case 5:b=(HEAP[HEAP[f+4]+84]&134217728)==0?6:9;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str66249,allocate([HEAP[HEAP[f+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[f]-=1;b=HEAP[f]==0?7: -8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:c=0;b=10;break;case 9:c=f;b=10;break;case 10:return b=c;default:assert(0,"bad label: "+b)}}function _builtin_open(g,e,b){return _PyObject_Call(_PyFile_Type,e,b)} -function _builtin_ord(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=a=e;b=(HEAP[HEAP[a+4]+84]&134217728)!=0?1:3;break;case 1:f=HEAP[h+8];b=f==1?2:14;break;case 2:b=HEAP[a+20];d=_PyInt_FromLong(b);b=15;break;case 3:b=HEAP[h+4]==_PyByteArray_Type?5:4;break;case 4:b=_PyType_IsSubtype(HEAP[a+4],_PyByteArray_Type)!=0?5:10;break;case 5:f=HEAP[a+8];b=HEAP[a+8]==1?6:14;break;case 6:b=HEAP[a+8]!=0?7:8;break;case 7:c=HEAP[a+20];b=9;break;case 8:c=__PyByteArray_empty_string;b=9;break;case 9:b=HEAP[c]; -d=_PyInt_FromLong(b);b=15;break;case 10:var j=a;b=(HEAP[HEAP[a+4]+84]&268435456)!=0?11:13;break;case 11:f=HEAP[j+8];b=f==1?12:14;break;case 12:b=HEAP[HEAP[a+12]];d=_PyInt_FromLong(b);b=15;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str67250,allocate([HEAP[HEAP[j+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;b=15;break;case 14:_PyErr_Format(HEAP[_PyExc_TypeError],__str68251,allocate([f,0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}} -function _builtin_pow(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=e;HEAP[h]=__Py_NoneStruct;a=_PyArg_UnpackTuple(a,__str69252,2,3,allocate([d,0,0,0,f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyNumber_Power(HEAP[d],HEAP[f],HEAP[h]);a=3;break;case 3:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_print(g,e,b){g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l=g,m=g+4,n=g+8,o,p,q,r,u,s,t,v;d=e;f=b;HEAP[l]=0;HEAP[m]=0;p=HEAP[n]=0;a=HEAP[_dummy_args_10876]==0?1:3;break;case 1:a=_PyTuple_New(0);HEAP[_dummy_args_10876]=a;a=HEAP[_dummy_args_10876]==0?2:3;break;case 2:h=0;a=75;break;case 3:a=HEAP[_str_newline_10879]==0?4:30;break;case 4:a=_PyString_FromString(__str70253);HEAP[_str_newline_10879]=a;a=HEAP[_str_newline_10879]==0?5:6; -break;case 5:h=0;a=75;break;case 6:a=_PyString_FromString(__str71254);HEAP[_str_space_10880]=a;a=HEAP[_str_space_10880]==0?7:11;break;case 7:a=HEAP[_str_newline_10879]!=0?8:10;break;case 8:q=HEAP[_str_newline_10879];HEAP[_str_newline_10879]=0;HEAP[q]-=1;a=HEAP[q]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=10;break;case 10:h=0;a=75;break;case 11:a=_PyUnicodeUCS2_FromString(__str70253);HEAP[_unicode_newline_10877]=a;a=HEAP[_unicode_newline_10877]==0?12:19;break;case 12:a=HEAP[_str_newline_10879]!= -0?13:15;break;case 13:r=HEAP[_str_newline_10879];HEAP[_str_newline_10879]=0;HEAP[r]-=1;a=HEAP[r]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=15;break;case 15:a=HEAP[_str_space_10880]!=0?16:18;break;case 16:u=HEAP[_str_space_10880];HEAP[_str_space_10880]=0;HEAP[u]-=1;a=HEAP[u]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=18;break;case 18:h=0;a=75;break;case 19:a=_PyUnicodeUCS2_FromString(__str71254);HEAP[_unicode_space_10878]=a;a=HEAP[_unicode_space_10878]==0?20: -30;break;case 20:a=HEAP[_str_newline_10879]!=0?21:23;break;case 21:s=HEAP[_str_newline_10879];HEAP[_str_newline_10879]=0;HEAP[s]-=1;a=HEAP[s]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=23;break;case 23:a=HEAP[_str_space_10880]!=0?24:26;break;case 24:t=HEAP[_str_space_10880];HEAP[_str_space_10880]=0;HEAP[t]-=1;a=HEAP[t]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=26;break;case 26:a=HEAP[_unicode_space_10878]!=0?27:29;break;case 27:v=HEAP[_unicode_space_10878]; -HEAP[_unicode_space_10878]=0;HEAP[v]-=1;a=HEAP[v]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=29;break;case 29:h=0;a=75;break;case 30:a=_PyArg_ParseTupleAndKeywords(HEAP[_dummy_args_10876],f,__str72255,_kwlist_10875,allocate([l,0,0,0,m,0,0,0,n,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?31:32;break;case 31:h=0;a=75;break;case 32:a=HEAP[n]==0|HEAP[n]==__Py_NoneStruct?33:35;break;case 33:a=_PySys_GetObject(__str76259); -HEAP[n]=a;a=HEAP[n]==__Py_NoneStruct?34:35;break;case 34:HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct;a=75;break;case 35:a=HEAP[l]==__Py_NoneStruct?36:37;break;case 36:HEAP[l]=0;a=42;break;case 37:a=HEAP[l]!=0?38:42;break;case 38:a=(HEAP[HEAP[HEAP[l]+4]+84]&268435456)!=0?39:40;break;case 39:p=1;a=42;break;case 40:a=(HEAP[HEAP[HEAP[l]+4]+84]&134217728)==0?41:42;break;case 41:_PyErr_Format(HEAP[_PyExc_TypeError],__str77260,allocate([HEAP[HEAP[HEAP[l]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=75; -break;case 42:a=HEAP[m]==__Py_NoneStruct?43:44;break;case 43:HEAP[m]=0;a=49;break;case 44:a=HEAP[m]!=0?45:49;break;case 45:a=(HEAP[HEAP[HEAP[m]+4]+84]&268435456)!=0?46:47;break;case 46:p=1;a=56;break;case 47:a=(HEAP[HEAP[HEAP[m]+4]+84]&134217728)==0?48:49;break;case 48:_PyErr_Format(HEAP[_PyExc_TypeError],__str78261,allocate([HEAP[HEAP[HEAP[m]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=75;break;case 49:a=p==0?50:56;break;case 50:o=0;a=54;break;case 51:a=(HEAP[HEAP[HEAP[d+12+o*4]+4]+84]&268435456)!= -0?52:53;break;case 52:p=1;a=56;break;case 53:o+=1;a=54;break;case 54:a=_PyTuple_Size(d)>o?51:55;break;case 55:a=p!=0?56:57;break;case 56:j=HEAP[_unicode_newline_10877];k=HEAP[_unicode_space_10878];a=58;break;case 57:j=HEAP[_str_newline_10879];k=HEAP[_str_space_10880];a=58;break;case 58:o=0;a=68;break;case 59:a=o>0?60:65;break;case 60:var w=HEAP[n];a=HEAP[l]==0?61:62;break;case 61:var x=_PyFile_WriteObject(k,w,1),c=61;a=63;break;case 62:var y=_PyFile_WriteObject(HEAP[l],w,1),c=62;a=63;break;case 63:a= -(c==62?y:x)!=0?64:65;break;case 64:h=0;a=75;break;case 65:a=HEAP[n];var z=_PyTuple_GetItem(d,o);a=_PyFile_WriteObject(z,a,1)!=0?66:67;break;case 66:h=0;a=75;break;case 67:o+=1;a=68;break;case 68:a=_PyTuple_Size(d)>o?59:69;break;case 69:var C=HEAP[n];a=HEAP[m]==0?70:71;break;case 70:var A=_PyFile_WriteObject(j,C,1),c=70;a=72;break;case 71:var G=_PyFile_WriteObject(HEAP[m],C,1),c=71;a=72;break;case 72:a=(c==71?G:A)!=0?73:74;break;case 73:h=0;a=75;break;case 74:HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct; -a=75;break;case 75:return e=h,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _get_len_of_range_longs(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;f=b;o=n=m=l=k=0;a=_PyObject_Compare(c,d)>=0?1:2;break;case 1:h=0;a=36;break;case 2:l=_PyLong_FromLong(1);a=l==0?20:3;break;case 3:m=_PyNumber_Subtract(d,c);a=m==0?20:4;break;case 4:k=_PyNumber_Subtract(m,l);a=k==0?20:5;break;case 5:n=_PyNumber_FloorDivide(k,f);a=n==0?20:6;break;case 6:o=_PyNumber_Add(n,l);a=o==0?23:7;break;case 7:j=_PyLong_AsLong(o);a=_PyErr_Occurred()!=0?8:9;break;case 8:_PyErr_Clear(); -a=20;break;case 9:HEAP[o]-=1;a=HEAP[o]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=11;break;case 11:HEAP[n]-=1;a=HEAP[n]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=13;break;case 13:HEAP[k]-=1;a=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=15;break;case 15:HEAP[m]-=1;a=HEAP[m]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=17;break;case 17:HEAP[l]-=1;a=HEAP[l]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l); -a=19;break;case 19:h=j;a=36;break;case 20:a=o!=0?21:23;break;case 21:HEAP[o]-=1;a=HEAP[o]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=23;break;case 23:a=n!=0?24:26;break;case 24:HEAP[n]-=1;a=HEAP[n]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=26;break;case 26:a=k!=0?27:29;break;case 27:HEAP[k]-=1;a=HEAP[k]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=29;break;case 29:a=m!=0?30:32;break;case 30:HEAP[m]-=1;a=HEAP[m]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);a=32;break;case 32:a=l!=0?33:35;break;case 33:HEAP[l]-=1;a=HEAP[l]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=35;break;case 35:h=-1;a=36;break;case 36:return g=h;default:assert(0,"bad label: "+a)}} -function _get_range_long_argument(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?2:1;break;case 1:b=(HEAP[HEAP[a+4]+84]&16777216)!=0?2:3;break;case 2:HEAP[a]+=1;d=a;b=16;break;case 3:b=HEAP[a+4]==_PyFloat_Type?7:4;break;case 4:b=_PyType_IsSubtype(HEAP[a+4],_PyFloat_Type)!=0?7:5;break;case 5:h=HEAP[HEAP[a+4]+48];b=h==0?7:6;break;case 6:b=HEAP[h+72]==0?7:8;break;case 7:_PyErr_Format(HEAP[_PyExc_TypeError],__str79262,allocate([c,0,0,0,HEAP[HEAP[a+4]+12], -0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=0;b=16;break;case 8:f=FUNCTION_TABLE[HEAP[h+72]](a);b=f==0?9:10;break;case 9:d=0;b=16;break;case 10:b=(HEAP[HEAP[f+4]+84]&8388608)!=0?12:11;break;case 11:b=(HEAP[HEAP[f+4]+84]&16777216)!=0?12:13;break;case 12:d=f;b=16;break;case 13:HEAP[f]-=1;b=HEAP[f]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=15;break;case 15:_PyErr_SetString(HEAP[_PyExc_TypeError],__str80263);d=0;b=16;break;case 16:return b=d;default:assert(0,"bad label: "+b)}} -function _handle_range_longs(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h=b,j=b+4,k=b+8,l,m,n,o,p,q,r,u,s=b+12,t,v,w,x;d=e;HEAP[h]=0;HEAP[j]=0;p=o=n=m=l=HEAP[k]=0;t=_PyLong_FromLong(0);a=t==0?1:2;break;case 1:f=0;a=65;break;case 2:a=_PyArg_UnpackTuple(d,__str81264,1,3,allocate([h,0,0,0,j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?3:6;break;case 3:HEAP[t]-=1;a= -HEAP[t]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=5;break;case 5:f=0;a=65;break;case 6:a=HEAP[j]==0?7:8;break;case 7:HEAP[j]=HEAP[h];HEAP[h]=0;a=8;break;case 8:m=a=_get_range_long_argument(HEAP[j],__str74257);a=a==0?47:9;break;case 9:a=HEAP[h]==0?10:11;break;case 10:HEAP[t]+=1;l=t;a=12;break;case 11:l=_get_range_long_argument(HEAP[h],__str82265);a=l==0?50:12;break;case 12:a=HEAP[k]==0?13:14;break;case 13:var y=_PyLong_FromLong(1);n=y;c=13;a=15;break;case 14:var z=_get_range_long_argument(HEAP[k], -__str83266);n=z;c=14;a=15;break;case 15:a=(c==14?z:y)==0?47:16;break;case 16:a=_PyObject_Cmp(n,t,s)==-1?47:17;break;case 17:a=HEAP[s]==0?18:19;break;case 18:_PyErr_SetString(HEAP[_PyExc_ValueError],__str84267);a=47;break;case 19:a=HEAP[s]>0?20:21;break;case 20:var C=_get_len_of_range_longs(l,m,n);q=C;c=20;a=25;break;case 21:v=_PyNumber_Negative(n);a=v==0?47:22;break;case 22:q=_get_len_of_range_longs(m,l,v);HEAP[v]-=1;a=HEAP[v]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=24;break; -case 24:var A=q,c=24;a=25;break;case 25:u=a=c==24?A:C;a=a<0?27:26;break;case 26:a=u!=q?27:28;break;case 27:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str85268);a=47;break;case 28:p=_PyList_New(u);a=p==0?47:29;break;case 29:o=l;HEAP[o]+=1;r=0;a=35;break;case 30:w=_PyNumber_Long(o);a=w==0?47:31;break;case 31:HEAP[HEAP[p+12]+4*r]=w;x=_PyNumber_Add(o,n);a=x==0?47:32;break;case 32:HEAP[o]-=1;a=HEAP[o]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=34;break;case 34:o=x;r+=1;a=35;break; -case 35:a=r0?8:9;break;case 8:var s=_get_len_of_range(HEAP[j],HEAP[k],u);m=s;c=8;a=10;break;case 9:var t=_get_len_of_range(HEAP[k],HEAP[j],0-u);m=t;c=9;a=10;break;case 10:o=a=c==9?t:s;a=a<0?12:11;break;case 11:a=o!=m?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str85268); -h=0;a=23;break;case 13:p=_PyList_New(o);a=p==0?14:15;break;case 14:h=0;a=23;break;case 15:n=0;a=21;break;case 16:q=_PyInt_FromLong(HEAP[j]);var v=p;a=q==0?17:20;break;case 17:HEAP[p]=HEAP[v]-1;a=HEAP[p]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=19;break;case 19:h=0;a=23;break;case 20:HEAP[HEAP[v+12]+4*n]=q;HEAP[j]=HEAP[l]+HEAP[j];n+=1;a=21;break;case 21:a=n323?10:11;break;case 10:d=_PyFloat_FromDouble(HEAP[f]);a=14;break;case 11:var k=HEAP[f];a=j<-308?12:13;break;case 12:d=_PyFloat_FromDouble(k*0);a=14;break;case 13:d=__Py_double_round(k,j);a=14;break;case 14:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _builtin_sorted(g,e,b){g=STACKTOP;STACKTOP+=16;_memset(g,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=g;a=g+4;var l=g+8,m,n,o=g+12;c=e;d=b;HEAP[a]=0;HEAP[l]=0;a=_PyArg_ParseTupleAndKeywords(c,d,__str101,_kwlist_11755,allocate([k,0,0,0,a,0,0,0,l,0,0,0,o,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=25;break;case 2:h=_PySequence_List(HEAP[k]);a=h==0?3:4;break;case 3:f=0; -a=25;break;case 4:n=_PyObject_GetAttrString(h,__str104);a=n==0?5:8;break;case 5:HEAP[h]-=1;a=HEAP[h]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=7;break;case 7:f=0;a=25;break;case 8:m=_PyTuple_GetSlice(c,1,4);a=m==0?9:14;break;case 9:HEAP[h]-=1;a=HEAP[h]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=11;break;case 11:HEAP[n]-=1;a=HEAP[n]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=13;break;case 13:f=0;a=25;break;case 14:j=_PyObject_Call(n,m,d);HEAP[m]-= -1;a=HEAP[m]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=16;break;case 16:HEAP[n]-=1;a=HEAP[n]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=18;break;case 18:a=j==0?19:22;break;case 19:HEAP[h]-=1;a=HEAP[h]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=21;break;case 21:f=0;a=25;break;case 22:HEAP[j]-=1;a=HEAP[j]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=24;break;case 24:f=h;a=25;break;case 25:return e=f,STACKTOP=g,e;default:assert(0, -"bad label: "+a)}} -function _builtin_vars(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;a=e;HEAP[d]=0;a=_PyArg_UnpackTuple(a,__str105,0,1,allocate([d,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=10;break;case 2:a=HEAP[d]==0?3:7;break;case 3:f=_PyEval_GetLocals();a=f==0?4:6;break;case 4:a=_PyErr_Occurred()==0?5:9;break;case 5:_PyErr_SetString(HEAP[_PyExc_SystemError],__str106);a=9;break;case 6:HEAP[f]+=1;a=9;break;case 7:f=_PyObject_GetAttrString(HEAP[d], -__str107);a=f==0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str108);c=0;a=10;break;case 9:c=f;a=10;break;case 10:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_sum(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f=b,h=b+4,j,k,l,m,n,o,p;a=e;HEAP[h]=0;a=_PyArg_UnpackTuple(a,__str109,1,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=79;break;case 2:l=_PyObject_GetIter(HEAP[f]);a=l==0?3:4;break;case 3:d=0;a=79;break;case 4:a=HEAP[h]==0?5:9;break;case 5:a=_PyInt_FromLong(0);HEAP[h]=a;a=HEAP[h]==0?6:15;break;case 6:HEAP[l]-= -1;a=HEAP[l]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=8;break;case 8:d=0;a=79;break;case 9:a=HEAP[HEAP[h]+4]==_PyBaseString_Type?11:10;break;case 10:a=_PyType_IsSubtype(HEAP[HEAP[h]+4],_PyBaseString_Type)!=0?11:14;break;case 11:_PyErr_SetString(HEAP[_PyExc_TypeError],__str110);HEAP[l]-=1;a=HEAP[l]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=13;break;case 13:d=0;a=79;break;case 14:HEAP[HEAP[h]]+=1;a=15;break;case 15:a=HEAP[HEAP[h]+4]==_PyInt_Type?16:40;break;case 16:m= -HEAP[HEAP[h]+8];a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=18;break;case 18:HEAP[h]=0;c=18;a=39;break;case 19:k=_PyIter_Next(l);a=k==0?20:25;break;case 20:HEAP[l]-=1;a=HEAP[l]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=22;break;case 22:a=_PyErr_Occurred()!=0?23:24;break;case 23:d=0;a=79;break;case 24:d=_PyInt_FromLong(m);a=79;break;case 25:a=HEAP[k+4]==_PyInt_Type?26:30;break;case 26:n=HEAP[k+8];o=n+m;a=(m^o)>=0?28: -27;break;case 27:a=(n^o)>=0?28:30;break;case 28:m=o;HEAP[k]-=1;a=HEAP[k]==0?29:38;break;case 29:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=38;break;case 30:j=_PyInt_FromLong(m);HEAP[h]=j;j=_PyNumber_Add(HEAP[h],k);a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=32;break;case 32:HEAP[k]-=1;a=HEAP[k]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=34;break;case 34:var q=j;HEAP[h]=q;q==0?(c=34,a=35):(c=34,a=39);break;case 35:HEAP[l]-= -1;a=HEAP[l]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=37;break;case 37:d=0;a=79;break;case 38:var r=HEAP[h],c=38;a=39;break;case 39:a=(c==18?0:c==38?r:q)==0?19:40;break;case 40:a=HEAP[HEAP[h]+4]==_PyFloat_Type?41:66;break;case 41:p=HEAP[HEAP[h]+8];a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=43;break;case 43:HEAP[h]=0;c=43;a=65;break;case 44:k=_PyIter_Next(l);a=k==0?45:50;break;case 45:HEAP[l]-=1;a=HEAP[l]==0?46:47; -break;case 46:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=47;break;case 47:a=_PyErr_Occurred()!=0?48:49;break;case 48:d=0;a=79;break;case 49:d=_PyFloat_FromDouble(p);a=79;break;case 50:var u=k;a=HEAP[k+4]==_PyFloat_Type?51:53;break;case 51:p=HEAP[u+8]+p;HEAP[k]-=1;a=HEAP[k]==0?52:64;break;case 52:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=64;break;case 53:a=HEAP[u+4]==_PyInt_Type?54:56;break;case 54:p=HEAP[k+8]+p;HEAP[k]-=1;a=HEAP[k]==0?55:64;break;case 55:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=64;break; -case 56:j=_PyFloat_FromDouble(p);HEAP[h]=j;j=_PyNumber_Add(HEAP[h],k);a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=58;break;case 58:HEAP[k]-=1;a=HEAP[k]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=60;break;case 60:var s=j;HEAP[h]=s;s==0?(c=60,a=61):(c=60,a=65);break;case 61:HEAP[l]-=1;a=HEAP[l]==0?62:63;break;case 62:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=63;break;case 63:d=0;a=79;break;case 64:var t=HEAP[h],c=64;a=65; -break;case 65:a=(c==43?0:c==64?t:s)==0?44:66;break;case 66:k=a=_PyIter_Next(l);a=a==0?67:71;break;case 67:a=_PyErr_Occurred()!=0?68:76;break;case 68:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?69:70;break;case 69:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=70;break;case 70:HEAP[h]=0;a=76;break;case 71:j=_PyNumber_Add(HEAP[h],k);a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?72:73;break;case 72:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=73;break;case 73:HEAP[k]-=1;a=HEAP[k]==0?74:75;break;case 74:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);a=75;break;case 75:HEAP[h]=j;a=j==0?76:66;break;case 76:HEAP[l]-=1;a=HEAP[l]==0?77:78;break;case 77:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=78;break;case 78:d=HEAP[h];a=79;break;case 79:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _builtin_isinstance(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h;a=_PyArg_UnpackTuple(e,__str111,2,2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:h=_PyObject_IsInstance(HEAP[d],HEAP[f]);a=h<0?3:4;break;case 3:c=0;a=5;break;case 4:c=_PyBool_FromLong(h);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _builtin_issubclass(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h;a=_PyArg_UnpackTuple(e,__str112,2,2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:h=_PyObject_IsSubclass(HEAP[d],HEAP[f]);a=h<0?3:4;break;case 3:c=0;a=5;break;case 4:c=_PyBool_FromLong(h);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _builtin_zip(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q;a=e;f=_PySequence_Size(a);b=f==0?1:2;break;case 1:c=_PyList_New(0);b=53;break;case 2:k=-1;h=0;b=11;break;case 3:l=HEAP[a+12+h*4];l=__PyObject_LengthHint(l,-2);b=l<0?4:7;break;case 4:b=l==-1?5:6;break;case 5:c=0;b=53;break;case 6:k=-1;b=13;break;case 7:b=k<0?9:8;break;case 8:b=lm?35:46;break;case 35:a=m>1073741823?36:39;break;case 36:HEAP[n]-=1;a=HEAP[n]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[n+ -4]+24]](n);a=38;break;case 38:f=0;a=57;break;case 39:a=m*2>u?40:41;break;case 40:u=m*2;a=41;break;case 41:a=__PyString_Resize(h,u)!=0?42:45;break;case 42:HEAP[n]-=1;a=HEAP[n]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=44;break;case 44:f=0;a=57;break;case 45:m=u;a=46;break;case 46:_llvm_memcpy_p0i8_p0i8_i32(HEAP[h]+20+k,n+20,r,1,0);k=r+k;a=47;break;case 47:HEAP[n]-=1;a=HEAP[n]==0?48:49;break;case 48:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=49;break;case 49:j+=1;a=50;break;case 50:a= -j2147483647-l?29:27;break;case 27:a=r+k+lm?33:43;break;case 33:a=m*2>u?34:39;break;case 34:a=m>1073741823?35:38;break;case 35:HEAP[n]-=1;a=HEAP[n]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=37;break;case 37:f=0;a=54;break;case 38:u=m*2;a=39;break;case 39:a=_PyUnicodeUCS2_Resize(h, -u)<0?40:42;break;case 40:HEAP[n]-=1;a=HEAP[n]==0?41:51;break;case 41:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=51;break;case 42:m=u;a=43;break;case 43:_llvm_memcpy_p0i8_p0i8_i32(HEAP[HEAP[h]+12]+2*k,HEAP[n+12],r*2,1,0);k=r+k;a=44;break;case 44:HEAP[n]-=1;a=HEAP[n]==0?45:46;break;case 45:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=46;break;case 46:j+=1;a=47;break;case 47:a=jm?25:26;break;case 25:n=m;c=27;break;case 26:n=HEAP[f+20];c=27;break;case 27:HEAP[h]+=n;c=HEAP[f+16]==-1?28:29;break;case 28:HEAP[j]=m;c=30;break;case 29:HEAP[j]=HEAP[f+16];c=30;break;case 30:c=n+HEAP[j]>m?31:32;break;case 31:HEAP[j]=m-n;c=32;break;case 32:l=1;c=33;break;case 33:return g=l;default:assert(0,"bad label: "+c)}} -function _buffer_from_memory(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;l=c;d=h<0&h!=-1?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str7296);o=0;d=15;break;case 2:d=j<0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str8297);o=0;d=15;break;case 4:d=HEAP[_PyBuffer_Type+16]>=0?5:9;break;case 5:d=HEAP[_PyBuffer_Type+16]!=0?6:7;break;case 6:m=HEAP[_PyBuffer_Type+16];d=8;break;case 7:m=1;d=8;break;case 8:n=_malloc(m);d=10;break;case 9:n= -0;d=10;break;case 10:p=d=_PyObject_Init(n,_PyBuffer_Type);d=d==0?11:12;break;case 11:o=0;d=15;break;case 12:d=f!=0?13:14;break;case 13:HEAP[f]+=1;d=14;break;case 14:HEAP[p+8]=f;HEAP[p+12]=k;HEAP[p+16]=h;HEAP[p+20]=j;HEAP[p+24]=l;HEAP[p+28]=-1;o=p;d=15;break;case 15:return g=o;default:assert(0,"bad label: "+d)}} -function _buffer_from_object(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;c=h<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str8297);k=0;c=12;break;case 2:c=HEAP[d+4]==_PyBuffer_Type?3:11;break;case 3:c=HEAP[d+8]!=0?4:11;break;case 4:l=d;c=HEAP[l+16]!=-1?5:10;break;case 5:m=HEAP[l+16]-h;c=m<0?6:7;break;case 6:m=0;c=7;break;case 7:c=f==-1?9:8;break;case 8:c=f>m?9:10;break;case 9:f=m;c=10;break;case 10:h+=HEAP[l+20];d=HEAP[l+8];c=11;break;case 11:k=_buffer_from_memory(d, -f,h,0,j);c=12;break;case 12:return g=k;default:assert(0,"bad label: "+c)}}function _PyBuffer_FromObject(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=HEAP[HEAP[c+4]+80];a=j==0?3:1;break;case 1:a=HEAP[j]==0?3:2;break;case 2:a=HEAP[j+8]==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str9298);h=0;a=5;break;case 4:h=_buffer_from_object(c,f,d,1);a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}} -function _PyBuffer_FromReadWriteObject(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=HEAP[HEAP[c+4]+80];a=j==0?3:1;break;case 1:a=HEAP[j+4]==0?3:2;break;case 2:a=HEAP[j+8]==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str9298);h=0;a=5;break;case 4:h=_buffer_from_object(c,f,d,0);a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}}function _PyBuffer_FromMemory(g,e){return _buffer_from_memory(0,e,0,g,1)} -function _PyBuffer_FromReadWriteMemory(g,e){return _buffer_from_memory(0,e,0,g,0)} -function _PyBuffer_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=b<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str7296);c=0;e=12;break;case 2:e=2147483647-b<=31?3:4;break;case 3:c=_PyErr_NoMemory();e=12;break;case 4:e=b+32>=0?5:8;break;case 5:e=b!=-32?6:7;break;case 6:a=b+32;e=9;break;case 7:a=1;e=9;break;case 8:d=0;e=10;break;case 9:d=e=_malloc(a);e=e==0?10:11;break;case 10:c=_PyErr_NoMemory();e=12;break;case 11:HEAP[d+4]=_PyBuffer_Type;HEAP[d]=1;c=d;HEAP[c+8]=0;HEAP[c+ -12]=c+32;HEAP[c+16]=b;HEAP[c+20]=0;HEAP[c+24]=0;HEAP[c+28]=-1;c=d;e=12;break;case 12:return g=c;default:assert(0,"bad label: "+e)}} -function _buffer_new(g,e,b){g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=g,j=g+4,k=g+8;c=e;d=b;HEAP[j]=0;HEAP[k]=-1;a=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str10299,1)<0?2:3;break;case 2:f=0;a=8;break;case 3:a=__PyArg_NoKeywords(__str11300,d)==0?4:5;break;case 4:f=0;a=8;break;case 5:a=_PyArg_ParseTuple(c,__str12301,allocate([h,0,0,0,j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*", -0,0,0],ALLOC_STACK))==0?6:7;break;case 6:f=0;a=8;break;case 7:f=_PyBuffer_FromObject(HEAP[h],HEAP[j],HEAP[k]);a=8;break;case 8:return e=f,STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _buffer_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_free(b);return;default:assert(0,"bad label: "+e)}} -function _buffer_compare(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l=b+8,m=b+12,n,o;a=g;c=e;a=_get_buf(a,j,l,3)==0?1:2;break;case 1:h=-1;a=14;break;case 2:a=_get_buf(c,k,m,3)==0?3:4;break;case 3:h=-1;a=14;break;case 4:n=HEAP[m]<=HEAP[l]?HEAP[m]:HEAP[l];a=n>0?5:10;break;case 5:o=_memcmp(HEAP[j],HEAP[k],n);a=o!=0?6:10;break;case 6:a=o<0?7:8;break;case 7:f=-1;a=9;break;case 8:f=1;a=9;break;case 9:h=f;a=14;break;case 10:a=HEAP[l]>=HEAP[m]? -11:12;break;case 11:d=HEAP[l]>HEAP[m];a=13;break;case 12:d=-1;a=13;break;case 13:h=d;a=14;break;case 14:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _buffer_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+24]!=0?1:2;break;case 1:c=__str13302;e=3;break;case 2:c=__str14303;e=3;break;case 3:d=c;var f=b;e=HEAP[b+8]==0?4:5;break;case 4:a=_PyString_FromFormat(__str15304,allocate([d,0,0,0,HEAP[b+12],0,0,0,HEAP[f+16],0,0,0,b,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"%struct.PyBufferObject*",0,0,0],ALLOC_STACK));e=6;break;case 5:a=_PyString_FromFormat(__str16305,allocate([d,0,0,0,HEAP[b+8],0,0,0,HEAP[b+16],0,0,0,HEAP[f+ -20],0,0,0,b,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0,"i32",0,0,0,"i32",0,0,0,"%struct.PyBufferObject*",0,0,0],ALLOC_STACK));e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _buffer_hash(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f=e+4,h,j,k,l=a=g;b=HEAP[a+28]!=-1?1:2;break;case 1:c=HEAP[l+28];b=11;break;case 2:b=HEAP[l+24]==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str17306);c=-1;b=11;break;case 4:b=_get_buf(a,d,f,3)==0?5:6;break;case 5:c=-1;b=11;break;case 6:j=HEAP[d];h=HEAP[f];k=HEAP[j]<<7;h=b=h-1;b=b>=0?7:8;break;case 7:k=HEAP[j]^k*1000003;j+=1;h=b=h-1;b=b>=0?7:8;break;case 8:k=b=k^HEAP[f]; -b=b==-1?9:10;break;case 9:k=-2;b=10;break;case 10:c=HEAP[a+28]=k;b=11;break;case 11:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _buffer_str(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a,c=e,d=e+4;b=_get_buf(g,c,d,3)==0?1:2;break;case 1:a=0;b=3;break;case 2:a=_PyString_FromStringAndSize(HEAP[c],HEAP[d]);b=3;break;case 3:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _buffer_length(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a,c=e+4;b=_get_buf(g,e,c,3)==0?1:2;break;case 1:a=-1;b=3;break;case 2:a=HEAP[c];b=3;break;case 3:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _buffer_concat(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l,m=b+8,n;c=g;d=e;h=HEAP[HEAP[d+4]+80];a=h==0?3:1;break;case 1:a=HEAP[h]==0?3:2;break;case 2:a=HEAP[h+8]==0?3:4;break;case 3:_PyErr_BadArgument();f=0;a=15;break;case 4:a=FUNCTION_TABLE[HEAP[h+8]](d,0)!=1?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError],__str289);f=0;a=15;break;case 6:a=_get_buf(c,j,m,3)==0?7:8;break;case 7:f=0;a=15;break;case 8:a=HEAP[m]==0?9:10; -break;case 9:HEAP[d]+=1;f=d;a=15;break;case 10:n=FUNCTION_TABLE[HEAP[h]](d,0,k);a=n<0?11:12;break;case 11:f=0;a=15;break;case 12:l=_PyString_FromStringAndSize(0,n+HEAP[m]);a=l==0?13:14;break;case 13:f=0;a=15;break;case 14:a=l+20;_llvm_memcpy_p0i8_p0i8_i32(a,HEAP[j],HEAP[m],1,0);_llvm_memcpy_p0i8_p0i8_i32(a+HEAP[m],HEAP[k],n,1,0);HEAP[a+(n+HEAP[m])]=0;f=l;a=15;break;case 15:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _buffer_repeat(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l=b+4;c=g;d=e;a=d<0?1:2;break;case 1:d=0;a=2;break;case 2:a=_get_buf(c,k,l,3)==0?3:4;break;case 3:f=0;a=11;break;case 4:a=(2147483647/HEAP[l]|0)=HEAP[h]?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_IndexError],__str19308);d=0;a=6;break;case 5:d=_PyString_FromStringAndSize(HEAP[f]+c,1);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _buffer_slice(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;c=g;d=e;f=b;c=_get_buf(c,j,k,3)==0?1:2;break;case 1:h=0;c=11;break;case 2:c=d<0?3:4;break;case 3:d=0;c=4;break;case 4:c=f<0?5:6;break;case 5:f=0;c=6;break;case 6:c=f>HEAP[k]?7:8;break;case 7:f=HEAP[k];c=8;break;case 8:c=f=HEAP[n]?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_IndexError],__str23312);j=-1;c=20;break;case 7:c=h!=0?9:8;break;case 8:k=0;c=12;break;case 9:k= -HEAP[HEAP[h+4]+80];c=HEAP[HEAP[h+4]+80]==0?12:10;break;case 10:c=HEAP[k]==0?12:11;break;case 11:c=HEAP[k+8]==0?12:13;break;case 12:_PyErr_BadArgument();j=-1;c=20;break;case 13:c=FUNCTION_TABLE[HEAP[k+8]](h,0)!=1?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_TypeError],__str289);j=-1;c=20;break;case 15:o=FUNCTION_TABLE[HEAP[k]](h,0,m);c=o<0?16:17;break;case 16:j=-1;c=20;break;case 17:c=o!=1?18:19;break;case 18:_PyErr_SetString(HEAP[_PyExc_TypeError],__str24313);j=-1;c=20;break;case 19:HEAP[HEAP[l]+ -f]=HEAP[HEAP[m]];j=0;c=20;break;case 20:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _buffer_ass_slice(g,e,b,a){var c=STACKTOP;STACKTOP+=12;_memset(c,0,12);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n=c,o=c+4,p=c+8,q,r;f=g;h=e;j=b;k=a;d=HEAP[f+24]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str22311);l=-1;d=27;break;case 2:d=k!=0?4:3;break;case 3:m=0;d=7;break;case 4:m=HEAP[HEAP[k+4]+80];d=HEAP[HEAP[k+4]+80]==0?7:5;break;case 5:d=HEAP[m]==0?7:6;break;case 6:d=HEAP[m+8]==0?7:8;break;case 7:_PyErr_BadArgument();l=-1;d=27;break;case 8:d=FUNCTION_TABLE[HEAP[m+ -8]](k,0)!=1?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str289);l=-1;d=27;break;case 10:d=_get_buf(f,n,p,3)==0?11:12;break;case 11:l=-1;d=27;break;case 12:r=FUNCTION_TABLE[HEAP[m]](k,0,o);d=r<0?13:14;break;case 13:l=-1;d=27;break;case 14:d=h<0?15:16;break;case 15:h=0;d=18;break;case 16:d=h>HEAP[p]?17:18;break;case 17:h=HEAP[p];d=18;break;case 18:d=jHEAP[p]?21:22;break;case 21:j=HEAP[p];d=22;break;case 22:q=j-h;d=r!=q?23:24;break;case 23:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str25314);l=-1;d=27;break;case 24:d=q!=0?25:26;break;case 25:_llvm_memcpy_p0i8_p0i8_i32(HEAP[n]+h,HEAP[o],q,1,0);d=26;break;case 26:l=0;d=27;break;case 27:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _buffer_ass_subscript(g,e,b){var a=STACKTOP;STACKTOP+=28;_memset(a,0,28);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m=a,n=a+4,o=a+8,p,q,r=a+12,u=a+16,s=a+20,t=a+24,v,w;f=g;h=e;j=b;c=HEAP[f+24]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str22311);k=-1;c=37;break;case 2:c=j!=0?4:3;break;case 3:l=0;c=7;break;case 4:l=HEAP[HEAP[j+4]+80];c=HEAP[HEAP[j+4]+80]==0?7:5;break;case 5:c=HEAP[l]==0?7:6;break;case 6:c=HEAP[l+8]==0?7:8;break;case 7:_PyErr_BadArgument();k= --1;c=37;break;case 8:c=FUNCTION_TABLE[HEAP[l+8]](j,0)!=1?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str289);k=-1;c=37;break;case 10:c=_get_buf(f,m,o,3)==0?11:12;break;case 11:k=-1;c=37;break;case 12:c=HEAP[HEAP[h+4]+48]==0?22:13;break;case 13:c=(HEAP[HEAP[h+4]+84]&131072)==0?22:14;break;case 14:c=HEAP[HEAP[HEAP[h+4]+48]+152]==0?22:15;break;case 15:var x=q=_PyNumber_AsSsize_t(h,HEAP[_PyExc_IndexError]);x==-1?(d=15,c=16):(d=15,c=19);break;case 16:c=_PyErr_Occurred()!=0?17:18;break; -case 17:k=-1;c=37;break;case 18:var y=q,d=18;c=19;break;case 19:c=(d==18?y:x)<0?20:21;break;case 20:q+=HEAP[o];c=21;break;case 21:k=_buffer_ass_item(f,q,j);c=37;break;case 22:c=HEAP[h+4]==_PySlice_Type?23:36;break;case 23:c=_PySlice_GetIndicesEx(h,HEAP[o],r,u,s,t)<0?24:25;break;case 24:k=-1;c=37;break;case 25:p=FUNCTION_TABLE[HEAP[l]](j,0,n);c=p<0?26:27;break;case 26:k=-1;c=37;break;case 27:c=p!=HEAP[t]?28:29;break;case 28:_PyErr_SetString(HEAP[_PyExc_TypeError],__str25314);k=-1;c=37;break;case 29:c= -HEAP[t]==0?30:31;break;case 30:k=0;c=37;break;case 31:c=HEAP[s]==1?32:33;break;case 32:_llvm_memcpy_p0i8_p0i8_i32(HEAP[m]+HEAP[r],HEAP[n],HEAP[t],1,0);k=0;c=37;break;case 33:v=HEAP[r];w=0;c=w255?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ValueError],__str2322);d=0;b=14;break;case 13:HEAP[c]=f;d=1;b=14;break;case 14:return b=d;default:assert(0,"bad label: "+b)}} -function _bytearray_buffer_getreadbuf(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;d=b;a=a!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str3323);h=-1;a=6;break;case 2:a=HEAP[c+8]!=0?3:4;break;case 3:f=HEAP[c+20];a=5;break;case 4:f=__PyByteArray_empty_string;a=5;break;case 5:HEAP[d]=f;h=HEAP[c+8];a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}} -function _bytearray_buffer_getwritebuf(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;d=b;a=a!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str3323);h=-1;a=6;break;case 2:a=HEAP[c+8]!=0?3:4;break;case 3:f=HEAP[c+20];a=5;break;case 4:f=__PyByteArray_empty_string;a=5;break;case 5:HEAP[d]=f;h=HEAP[c+8];a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}} -function _bytearray_buffer_getsegcount(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=c!=0?1:2;break;case 1:HEAP[c]=HEAP[a+8];b=2;break;case 2:return 1;default:assert(0,"bad label: "+b)}} -function _bytearray_buffer_getcharbuf(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;d=b;a=a!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str3323);h=-1;a=6;break;case 2:a=HEAP[c+8]!=0?3:4;break;case 3:f=HEAP[c+20];a=5;break;case 4:f=__PyByteArray_empty_string;a=5;break;case 5:HEAP[d]=f;h=HEAP[c+8];a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}} -function _bytearray_getbuffer(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;var l=c;a=d==0?1:2;break;case 1:HEAP[c+12]=HEAP[l+12]+1;j=0;a=8;break;case 2:a=HEAP[l+8]!=0?3:4;break;case 3:h=HEAP[c+20];a=5;break;case 4:h=__PyByteArray_empty_string;a=5;break;case 5:k=h;k=a=_PyBuffer_FillInfo(d,c,k,HEAP[c+8],0,f);a=a>=0?6:7;break;case 6:HEAP[c+12]+=1;a=7;break;case 7:j=k;a=8;break;case 8:return g=j;default:assert(0,"bad label: "+a)}} -function _bytearray_releasebuffer(g){HEAP[g+12]-=1}function __getbuffer(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=HEAP[HEAP[a+4]+80];b=f==0?2:1;break;case 1:b=HEAP[f+16]==0?2:3;break;case 2:_PyErr_Format(HEAP[_PyExc_TypeError],__str4324,allocate([HEAP[HEAP[a+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=-1;b=6;break;case 3:b=FUNCTION_TABLE[HEAP[f+16]](a,c,0)<0?4:5;break;case 4:d=-1;b=6;break;case 5:d=HEAP[c+8];b=6;break;case 6:return b=d;default:assert(0,"bad label: "+b)}} -function __canresize(g){var e;for(e=-1;;)switch(e){case -1:var b;e=HEAP[g+12]>0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_BufferError],__str5325);b=0;e=3;break;case 2:b=1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _PyByteArray_FromObject(g){return _PyObject_CallFunctionObjArgs(_PyByteArray_Type,allocate([g,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK))} -function _PyByteArray_FromStringAndSize(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=c<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str6326);d=0;b=15;break;case 2:f=__PyObject_New(_PyByteArray_Type);b=f==0?3:4;break;case 3:d=0;b=15;break;case 4:b=c==0?5:6;break;case 5:h=HEAP[f+20]=0;b=14;break;case 6:h=c+1;b=_PyMem_Malloc(h);HEAP[f+20]=b;b=HEAP[f+20]==0?7:10;break;case 7:HEAP[f]-=1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=9;break;case 9:d= -_PyErr_NoMemory();b=15;break;case 10:b=a!=0?11:13;break;case 11:b=c>0?12:13;break;case 12:_llvm_memcpy_p0i8_p0i8_i32(HEAP[f+20],a,c,1,0);b=13;break;case 13:HEAP[HEAP[f+20]+c]=0;b=14;break;case 14:HEAP[f+8]=c;HEAP[f+16]=h;HEAP[f+12]=0;d=f;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}}function _PyByteArray_Size(g){return HEAP[g+8]} -function _PyByteArray_AsString(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]!=0?1:2;break;case 1:a=HEAP[b+20];e=3;break;case 2:a=__PyByteArray_empty_string;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyByteArray_Resize(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;j=HEAP[a+16];b=HEAP[a+8]==c?1:2;break;case 1:f=0;b=17;break;case 2:b=__canresize(a)==0?3:4;break;case 3:f=-1;b=17;break;case 4:var k=c;b=(j/2|0)>c?5:6;break;case 5:j=k+1;b=14;break;case 6:b=k>3,n=c;b=c<=8?10:11;break;case 10:d=3;b=12;break;case 11:d=6;b=12;break;case 12:j=n+m+d;b=14;break; -case 13:j=l+1;b=14;break;case 14:h=b=_PyMem_Realloc(HEAP[a+20],j);b=b==0?15:16;break;case 15:_PyErr_NoMemory();f=-1;b=17;break;case 16:HEAP[a+20]=h;HEAP[a+8]=c;HEAP[a+16]=j;f=HEAP[HEAP[a+20]+c]=0;b=17;break;case 17:return a=f;default:assert(0,"bad label: "+b)}} -function _PyByteArray_Concat(g,e){var b=STACKTOP;STACKTOP+=104;_memset(b,0,104);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+52,k;c=g;d=e;k=0;HEAP[h+8]=-1;HEAP[j+8]=-1;a=__getbuffer(c,h)<0?2:1;break;case 1:a=__getbuffer(d,j)<0?2:3;break;case 2:_PyErr_Format(HEAP[_PyExc_TypeError],__str7327,allocate([HEAP[HEAP[c+4]+12],0,0,0,HEAP[HEAP[d+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=7;break;case 3:f=HEAP[j+8]+HEAP[h+8];a=f<0?4:5;break;case 4:_PyErr_NoMemory();a=7;break;case 5:k=_PyByteArray_FromStringAndSize(0, -f);a=k!=0?6:7;break;case 6:_llvm_memcpy_p0i8_p0i8_i32(HEAP[k+20],HEAP[h],HEAP[h+8],1,0);_llvm_memcpy_p0i8_p0i8_i32(HEAP[k+20]+HEAP[h+8],HEAP[j],HEAP[j+8],1,0);a=7;break;case 7:a=HEAP[h+8]!=-1?8:9;break;case 8:_PyBuffer_Release(h);a=9;break;case 9:a=HEAP[j+8]!=-1?10:11;break;case 10:_PyBuffer_Release(j);a=11;break;case 11:return a=k,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _bytearray_length(g){return HEAP[g+8]} -function _bytearray_iconcat(g,e){var b=STACKTOP;STACKTOP+=52;_memset(b,0,52);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b;c=g;d=e;a=__getbuffer(d,k);var l=c;a=a<0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_TypeError],__str7327,allocate([HEAP[HEAP[d+4]+12],0,0,0,HEAP[HEAP[l+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));f=0;a=9;break;case 2:h=HEAP[l+8];j=h+HEAP[k+8];a=j<0?3:4;break;case 3:_PyBuffer_Release(k);f=_PyErr_NoMemory();a=9;break;case 4:var m=c;a=HEAP[c+16]>j?5:6;break;case 5:HEAP[m+ -8]=j;HEAP[HEAP[c+20]+HEAP[c+8]]=0;a=8;break;case 6:a=_PyByteArray_Resize(m,j)<0?7:8;break;case 7:_PyBuffer_Release(k);f=0;a=9;break;case 8:_llvm_memcpy_p0i8_p0i8_i32(HEAP[c+20]+h,HEAP[k],HEAP[k+8],1,0);_PyBuffer_Release(k);HEAP[c]+=1;f=c;a=9;break;case 9:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_repeat(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;var m=d=e;m<0?(a=-1,b=1):(a=-1,b=2);break;case 1:d=0;a=1;b=2;break;case 2:b=a==1?0:m;j=HEAP[c+8];k=j*b;b=b!=0?3:5;break;case 3:b=(k/d|0)!=j?4:5;break;case 4:f=_PyErr_NoMemory();b=12;break;case 5:h=b=_PyByteArray_FromStringAndSize(0,k);b=b!=0?6:11;break;case 6:b=k!=0?7:11;break;case 7:b=j==1?8:9;break;case 8:_llvm_memset_p0i8_i32(HEAP[h+20],HEAP[HEAP[c+20]]&255,k,1,0);b=11;break;case 9:l=0;b=lj?6:7;break;case 6:HEAP[m+8]=j;HEAP[HEAP[c+20]+HEAP[c+8]]=0;b=9;break;case 7:b=_PyByteArray_Resize(m,j)<0?8:9;break;case 8:f=0;b=14;break;case 9:b=h==1?10:11;break;case 10:_llvm_memset_p0i8_i32(HEAP[c+ -20],HEAP[HEAP[c+20]]&255,j,1,0);b=13;break;case 11:k=1;b=ko?21:24;break;case 21:d= -__canresize(h)==0?22:23;break;case 22:r=-1;d=30;break;case 23:_llvm_memmove_p0i8_p0i8_i32(HEAP[h+20]+j+o,HEAP[h+20]+k,HEAP[h+8]-k,1,0);d=24;break;case 24:d=_PyByteArray_Resize(h,o+HEAP[h+8]+(0-n))<0?25:26;break;case 25:r=-1;d=30;break;case 26:var v=o;n0?29:30;break;case 29:_llvm_memcpy_p0i8_p0i8_i32(HEAP[h+20]+j,p,o,1,0);d= -30;break;case 30:d=HEAP[q+8]!=-1?31:32;break;case 31:_PyBuffer_Release(q);d=32;break;case 32:m=r;d=33;break;case 33:return g=m,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _bytearray_setitem(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;c=f<0?1:2;break;case 1:f=c=f+HEAP[d+8];c=c<0?3:2;break;case 2:c=HEAP[d+8]<=f?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_IndexError],__str8328);j=-1;c=9;break;case 4:c=h==0?5:6;break;case 5:j=_bytearray_setslice(d,f,f+1,0);c=9;break;case 6:c=__getbytevalue(h,k)==0?7:8;break;case 7:j=-1;c=9;break;case 8:HEAP[HEAP[d+20]+f]=HEAP[k]&255;j=0;c=9;break;case 9:return g= -j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _bytearray_ass_subscript(g,e,b){var a=STACKTOP;STACKTOP+=20;_memset(a,0,20);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l=a,m=a+4,n=a+8,o=a+12,p,q,r,u=a+16,s,t,v,w,x,y;f=g;h=e;j=b;c=HEAP[HEAP[h+4]+48]==0?18:1;break;case 1:c=(HEAP[HEAP[h+4]+84]&131072)==0?18:2;break;case 2:c=HEAP[HEAP[HEAP[h+4]+48]+152]==0?18:3;break;case 3:var z=r=_PyNumber_AsSsize_t(h,HEAP[_PyExc_IndexError]);z==-1?(d=3,c=4):(d=3,c=7);break;case 4:c=_PyErr_Occurred()!=0?5:6;break;case 5:k=-1;c=71;break;case 6:var C= -r,d=6;c=7;break;case 7:c=(d==6?C:z)<0?8:9;break;case 8:var A=r+HEAP[f+8];r=A;d=8;c=10;break;case 9:var G=r,d=9;c=10;break;case 10:c=(d==9?G:A)<0?12:11;break;case 11:c=HEAP[f+8]<=r?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_IndexError],__str8328);k=-1;c=71;break;case 13:c=j==0?14:15;break;case 14:HEAP[l]=r;HEAP[m]=r+1;HEAP[n]=1;HEAP[o]=1;c=22;break;case 15:c=__getbytevalue(j,u)==0?16:17;break;case 16:k=-1;c=71;break;case 17:HEAP[HEAP[f+20]+r]=HEAP[u]&255;k=0;c=71;break;case 18:c=HEAP[h+4]==_PySlice_Type? -19:21;break;case 19:c=_PySlice_GetIndicesEx(h,HEAP[f+8],l,m,n,o)<0?20:22;break;case 20:k=-1;c=71;break;case 21:_PyErr_SetString(HEAP[_PyExc_TypeError],__str12332);k=-1;c=71;break;case 22:c=j==0?23:24;break;case 23:p=q=0;c=33;break;case 24:c=j==f?27:25;break;case 25:c=HEAP[j+4]==_PyByteArray_Type?32:26;break;case 26:c=_PyType_IsSubtype(HEAP[j+4],_PyByteArray_Type)==0?27:32;break;case 27:j=c=_PyByteArray_FromObject(j);c=c==0?28:29;break;case 28:k=-1;c=71;break;case 29:s=_bytearray_ass_subscript(f,h, -j);HEAP[j]-=1;c=HEAP[j]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);c=31;break;case 31:k=s;c=71;break;case 32:q=HEAP[j+20];p=HEAP[j+8];c=33;break;case 33:var E=HEAP[n];E>=0?(d=33,c=36):(d=33,c=34);break;case 34:c=HEAP[l]HEAP[m]?38:39;break;case 38:HEAP[m]=HEAP[l];c=39;break;case 39:c=HEAP[n]==1?40:52;break;case 40:var R=p;HEAP[o]!=R?(d=40,c=41):(d=40,c=49);break;case 41:c= -__canresize(f)==0?42:43;break;case 42:k=-1;c=71;break;case 43:c=HEAP[o]>p?44:45;break;case 44:_llvm_memmove_p0i8_p0i8_i32(HEAP[f+20]+HEAP[l]+p,HEAP[f+20]+HEAP[m],HEAP[f+8]-HEAP[m],1,0);c=45;break;case 45:c=_PyByteArray_Resize(f,p+HEAP[f+8]+(0-HEAP[o]))<0?46:47;break;case 46:k=-1;c=71;break;case 47:var M=p;HEAP[o]0?50:51;break;case 50:_llvm_memcpy_p0i8_p0i8_i32(HEAP[f+20]+HEAP[l],q,p,1,0);c=51;break;case 51:k=0;c=71;break;case 52:c=p==0?53:66;break;case 53:c=__canresize(f)==0?54:55;break;case 54:k=-1;c=71;break;case 55:c=HEAP[n]<0?56:57;break;case 56:HEAP[m]=HEAP[l]+1;HEAP[l]=HEAP[m]+-1+(HEAP[o]-1)*HEAP[n];HEAP[n]=0-HEAP[n];c=57;break;case 57:t=HEAP[l];v=0;c=v=HEAP[f+8]?59:60;break;case 59:w=HEAP[f+8]+-1+(0-t);c=60;break;case 60:_llvm_memmove_p0i8_p0i8_i32(HEAP[f+ -20]+t+(0-v),HEAP[f+20]+t+1,w,1,0);t+=HEAP[n];v+=1;c=vt?62:63;break;case 62:_llvm_memmove_p0i8_p0i8_i32(HEAP[f+20]+t+(0-HEAP[o]),HEAP[f+20]+t,HEAP[f+8]-t,1,0);c=63;break;case 63:c=_PyByteArray_Resize(f,HEAP[f+8]-HEAP[o])<0?64:65;break;case 64:k=-1;c=71;break;case 65:k=0;c=71;break;case 66:c=p!=HEAP[o]?67:68;break;case 67:_PyErr_Format(HEAP[_PyExc_ValueError],__str13333,allocate([p,0,0,0,HEAP[o],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK)); -k=-1;c=71;break;case 68:x=HEAP[l];y=0;c=y0?46:49;break;case 46:c=_PyByteArray_Resize(f,o)!=0?47:48;break;case 47:k= --1;c=78;break;case 48:_llvm_memset_p0i8_i32(HEAP[f+20],0,o,1,0);c=49;break;case 49:k=0;c=78;break;case 50:c=(HEAP[HEAP[HEAP[l]+4]+84]&2097152)!=0?51:58;break;case 51:c=HEAP[HEAP[HEAP[HEAP[l]+4]+80]+16]!=0?52:58;break;case 52:c=_PyObject_GetBuffer(HEAP[l],w,284)<0?53:54;break;case 53:k=-1;c=78;break;case 54:v=HEAP[w+8];c=_PyByteArray_Resize(f,v)<0?57:55;break;case 55:c=_PyBuffer_ToContiguous(HEAP[f+20],w,v,67)<0?57:56;break;case 56:_PyBuffer_Release(w);k=0;c=78;break;case 57:_PyBuffer_Release(w);k= --1;c=78;break;case 58:p=c=_PyObject_GetIter(HEAP[l]);c=c==0?59:60;break;case 59:k=-1;c=78;break;case 60:q=HEAP[HEAP[p+4]+112];c=61;break;case 61:x=c=FUNCTION_TABLE[q](p);c=c==0?62:66;break;case 62:c=_PyErr_Occurred()!=0?63:65;break;case 63:c=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])==0?75:64;break;case 64:_PyErr_Clear();c=65;break;case 65:HEAP[p]-=1;c=HEAP[p]==0?73:74;break;case 66:y=__getbytevalue(x,z);HEAP[x]-=1;c=HEAP[x]==0?67:68;break;case 67:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);c= -68;break;case 68:c=y==0?75:69;break;case 69:var E=f,D=HEAP[E+8]+1;c=HEAP[f+8]536870908?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str24344);d=0;b=38;break;case 2:b=j*4+14;b=_PyString_FromStringAndSize(0,b);HEAP[k]=b;b=HEAP[k]==0?3:4;break;case 3:d=0;b=38;break;case 4:o=39;b=HEAP[a+8]!=0?5:6;break;case 5:c=HEAP[a+20];b=7;break;case 6:c=__PyByteArray_empty_string;b=7;break;case 7:p= -q=c;b=13;break;case 8:b=HEAP[p]==34?9:10;break;case 9:o=39;b=14;break;case 10:b=HEAP[p]==39?11:12;break;case 11:o=34;b=12;break;case 12:p+=1;b=13;break;case 13:b=q+j>p?8:14;break;case 14:n=HEAP[k]+20;b=HEAP[f]!=0?15:16;break;case 15:HEAP[n]=HEAP[f];n+=1;f+=1;b=HEAP[f]!=0?15:16;break;case 16:HEAP[n]=o&255;n+=1;l=0;b=l>4)];n+=1;HEAP[n]=HEAP[__str535251+(m&15)];n+=1;b=30;break;case 29:HEAP[r]=m;n+=1;b=30;break;case 30:l+= -1;b=ln?20:21;break;case 20:r=1;c=21;break;case 21:c=j;c=c==0?22:c==1?23:c==2?24:c==3?25:c==4?26:c==5?27:28;break;case 22:var s=r<0;r=s;d=22;c=29;break;case 23:var t=r<=0;r=t;d=23;c=29;break;case 24:var v=r==0;r=v;d=24;c=29;break;case 25:var w=r!=0;r=w;d=25;c=29;break;case 26:var x=r>0;r=x;d=26;c=29;break;case 27:var y=r>=0;r=y;d=27;c=29;break;case 28:var z=r,d=28;c=29;break;case 29:c=(d==28?z:d== -27?y:d==26?x:d==25?w:d==24?v:d==23?t:d==22?s:u)!=0?30:31;break;case 30:k=__Py_TrueStruct;c=32;break;case 31:k=__Py_ZeroStruct;c=32;break;case 32:l=k;_PyBuffer_Release(o);_PyBuffer_Release(p);HEAP[l]+=1;c=33;break;case 33:return g=l,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _bytearray_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+12]>0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str27347);_PyErr_Print();e=2;break;case 2:e=HEAP[b+20]!=0?3:4;break;case 3:_PyMem_Free(HEAP[b+20]);e=4;break;case 4:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);return;default:assert(0,"bad label: "+e)}} -function _fastsearch(g,e,b,a,c,d){var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p,q,r,u,s,t,v,w;j=g;k=e;l=b;m=a;n=c;o=d;u=0;w=k-m;f=w<0?3:1;break;case 1:f=o!=0?4:2;break;case 2:f=n==0?3:4;break;case 3:p=-1;f=76;break;case 4:var x=m;f=x<=1?5:27;break;case 5:f=x<=0?6:7;break;case 6:p=-1;f=76;break;case 7:f=o==0?8:15;break;case 8:s=0;f=13;break;case 9:f=HEAP[j+s]==HEAP[l]?10:12;break;case 10:u+=1;f=u==n?11:12;break;case 11:p=n;f=76;break;case 12:s+=1;f=13;break;case 13:f=s-1?22:26;break;case 26:p=-1;f=76;break;case 27:v=x-1;r=v-1;q=0;f=o!=2?28:51;break;case 28:s=0;var G=l;s>>(HEAP[j+(m+s)]&31)&1)==0?45:46;break;case 45:s=m+D;f=49;break;case 46:s=r+D;f=49;break;case 47:f=(q>>>(HEAP[j+(m+s)]&31)&1)==0?48:49;break;case 48:s=m+s;f=49;break;case 49:s+=1;f=50;break;case 50:f=s<=w?33:73;break;case 51:q|=1<<(HEAP[l]&31);s=v;f=v>0?52:55;break;case 52:q|=1<<(HEAP[l+s]&31);f=HEAP[l+s]==HEAP[l]?53:54;break;case 53:r=s-1;f=54;break;case 54:s=f=s-1;f=f>0?52:55;break;case 55:var R=w;s=R;h=55;f= -72;break;case 56:f=HEAP[j+s]==HEAP[l]?57:68;break;case 57:var M=v;t=M;h=57;f=60;break;case 58:var L=t;HEAP[j+(t+s)]!=HEAP[l+L]?(h=58,f=62):(h=58,f=59);break;case 59:var I=t-1;t=I;h=59;f=60;break;case 60:f=(h==59?I:M)>0?58:61;break;case 61:var J=t,h=61;f=62;break;case 62:var F=s;f=(h==61?J:L)==0?63:64;break;case 63:p=F;f=76;break;case 64:f=F<=0?67:65;break;case 65:f=(q>>>(HEAP[j+(s-1)]&31)&1)!=0?67:66;break;case 66:s-=m;f=71;break;case 67:s-=r;f=71;break;case 68:f=s>0?69:71;break;case 69:f=(q>>>(HEAP[j+ -(s-1)]&31)&1)==0?70:71;break;case 70:s-=m;f=71;break;case 71:var V=s-1;s=V;h=71;f=72;break;case 72:f=(h==71?V:R)>=0?56:73;break;case 73:f=o!=0?74:75;break;case 74:p=-1;f=76;break;case 75:p=u;f=76;break;case 76:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_count(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o;f=g;h=e;j=b;k=a;l=c;d=h<0?1:2;break;case 1:n=0;d=10;break;case 2:d=k==0?3:7;break;case 3:d=h=0?5:6;break;case 5:n=l+n;d=6;break;case 6:m=n;d=7;break;case 7:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_rfind(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;l=c;d=h<0?1:2;break;case 1:m=-1;d=7;break;case 2:d=k==0?3:4;break;case 3:m=l+h;d=7;break;case 4:n=_fastsearch(f,h,j,k,-1,2);d=n>=0?5:6;break;case 5:n=l+n;d=6;break;case 6:m=n;d=7;break;case 7:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_find_slice(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=n>j?1:2;break;case 1:n=j;f=5;break;case 2:f=n<0?3:5;break;case 3:n=j+n;f=n<0?4:5;break;case 4:n=0;f=5;break;case 5:f=m<0?6:8;break;case 6:m=j+m;f=m<0?7:8;break;case 7:m=0;f=8;break;case 8:return g=_stringlib_find(h+m,n-m,k,l,m);default:assert(0,"bad label: "+f)}} -function _stringlib_rfind_slice(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=n>j?1:2;break;case 1:n=j;f=5;break;case 2:f=n<0?3:5;break;case 3:n=j+n;f=n<0?4:5;break;case 4:n=0;f=5;break;case 5:f=m<0?6:8;break;case 6:m=j+m;f=m<0?7:8;break;case 7:m=0;f=8;break;case 8:return g=_stringlib_rfind(h+m,n-m,k,l,m);default:assert(0,"bad label: "+f)}} -function _stringlib_parse_args_finds(g,e,b,a,c){var d=STACKTOP;STACKTOP+=70;_memset(d,0,70);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o=d+4,p=d+8,q=d+12,r=d+16,u=d+20,s;f=g;h=e;j=b;k=a;l=c;HEAP[o]=0;HEAP[p]=2147483647;HEAP[q]=__Py_NoneStruct;HEAP[r]=__Py_NoneStruct;_llvm_memcpy_p0i8_p0i8_i32(u,__str795277,50,1,0);s=_strlen(u);_strncpy(u+s,f,49-s);HEAP[u+49]=0;f=__PyArg_ParseTuple_SizeT(h,u,allocate([n,0,0,0,q,0,0,0,r,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0, -"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:m=0;f=9;break;case 2:f=HEAP[q]!=__Py_NoneStruct?3:5;break;case 3:f=__PyEval_SliceIndex(HEAP[q],o)==0?4:5;break;case 4:m=0;f=9;break;case 5:f=HEAP[r]!=__Py_NoneStruct?6:8;break;case 6:f=__PyEval_SliceIndex(HEAP[r],p)==0?7:8;break;case 7:m=0;f=9;break;case 8:HEAP[k]=HEAP[o];HEAP[l]=HEAP[p];HEAP[j]=HEAP[n];m=1;f=9;break;case 9:return g=m,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _stringlib_partition(g,e,b,a,c,d){for(g=-1;;)switch(g){case -1:var f,h,j,k,l,m,n,o;f=e;h=b;j=a;k=c;l=d;g=l==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str29349);m=0;g=11;break;case 2:n=_PyTuple_New(3);g=n==0?3:4;break;case 3:m=0;g=11;break;case 4:o=_fastsearch(f,h,k,l,-1,1);var p=n,q=f,g=o<0?5:6;break;case 5:m=_PyByteArray_FromStringAndSize(q,h);HEAP[p+12]=m;m=n;g=_PyByteArray_FromStringAndSize(0,0);HEAP[m+12+4]=g;m=n;g=_PyByteArray_FromStringAndSize(0,0);HEAP[m+12+8]= -g;m=n;g=11;break;case 6:var r=_PyByteArray_FromStringAndSize(q,o);HEAP[p+12]=r;HEAP[j]+=1;HEAP[n+12+4]=j;o=l+o;r=n;g=_PyByteArray_FromStringAndSize(f+o,h-o);HEAP[r+12+8]=g;g=_PyErr_Occurred();r=n;g=g!=0?7:10;break;case 7:HEAP[n]=HEAP[r]-1;g=HEAP[n]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);g=9;break;case 9:m=0;g=11;break;case 10:m=r;g=11;break;case 11:return e=m;default:assert(0,"bad label: "+g)}} -function _stringlib_rpartition(g,e,b,a,c,d){for(g=-1;;)switch(g){case -1:var f,h,j,k,l,m,n,o;f=e;h=b;j=a;k=c;l=d;g=l==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str29349);m=0;g=11;break;case 2:n=_PyTuple_New(3);g=n==0?3:4;break;case 3:m=0;g=11;break;case 4:o=_fastsearch(f,h,k,l,-1,2);var p=n,g=o<0?5:6;break;case 5:m=_PyByteArray_FromStringAndSize(0,0);HEAP[p+12]=m;m=n;g=_PyByteArray_FromStringAndSize(0,0);HEAP[m+12+4]=g;m=n;g=_PyByteArray_FromStringAndSize(f,h);HEAP[m+12+8]=g;m= -n;g=11;break;case 6:var q=_PyByteArray_FromStringAndSize(f,o);HEAP[p+12]=q;HEAP[j]+=1;HEAP[n+12+4]=j;o=l+o;q=n;g=_PyByteArray_FromStringAndSize(f+o,h-o);HEAP[q+12+8]=g;g=_PyErr_Occurred();q=n;g=g!=0?7:10;break;case 7:HEAP[n]=HEAP[q]-1;g=HEAP[n]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);g=9;break;case 9:m=0;g=11;break;case 10:m=q;g=11;break;case 11:return e=m;default:assert(0,"bad label: "+g)}} -function _stringlib_split_whitespace(g,e,b,a){for(g=-1;;)switch(g){case -1:var c,d,f,h,j,k,l,m,n,o;c=e;d=b;f=a;m=0;g=f<=11?1:2;break;case 1:j=f+1;g=3;break;case 2:j=12;g=3;break;case 3:n=g=_PyList_New(j);g=g==0?4:5;break;case 4:h=0;g=42;break;case 5:k=l=0;g=23;break;case 6:k+=1;g=7;break;case 7:g=k>=d?9:8;break;case 8:g=(HEAP[__Py_ctype_table+HEAP[c+k]*4]&8)!=0?6:9;break;case 9:g=k==d?24:10;break;case 10:l=k;k+=1;g=12;break;case 11:k+=1;g=12;break;case 12:g=k>=d?14:13;break;case 13:g=(HEAP[__Py_ctype_table+ -HEAP[c+k]*4]&8)==0?11:14;break;case 14:o=g=_PyByteArray_FromStringAndSize(c+l,k-l);g=g==0?39:15;break;case 15:var p=n,g=m<=11?16:17;break;case 16:HEAP[HEAP[p+12]+4*m]=o;g=22;break;case 17:g=_PyList_Append(p,o)!=0;HEAP[o]-=1;var q=HEAP[o]==0,g=g?18:20;break;case 18:g=q?19:39;break;case 19:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);g=39;break;case 20:g=q?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);g=22;break;case 22:m+=1;g=23;break;case 23:g=f>0;f-=1;g=g!=0?7:24;break;case 24:g=k=d?28:27;break;case 27:g=(HEAP[__Py_ctype_table+HEAP[c+k]*4]&8)!=0?25:28;break;case 28:g=k!=d?29:38;break;case 29:o=_PyByteArray_FromStringAndSize(c+k,d-k);g=o==0?39:30;break;case 30:var r=n,g=m<=11?31:32;break;case 31:HEAP[HEAP[r+12]+4*m]=o;g=37;break;case 32:g=_PyList_Append(r,o)!=0;HEAP[o]-=1;var u=HEAP[o]==0,g=g?33:35;break;case 33:g=u?34:39;break;case 34:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);g=39;break;case 35:g=u?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[o+ -4]+24]](o);g=37;break;case 37:m+=1;g=38;break;case 38:HEAP[n+8]=m;h=n;g=42;break;case 39:HEAP[n]-=1;g=HEAP[n]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);g=41;break;case 41:h=0;g=42;break;case 42:return e=h;default:assert(0,"bad label: "+g)}} -function _stringlib_split_char(g,e,b,a,c){for(g=-1;;)switch(g){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=e;f=b;h=a;j=c;o=0;g=j<=11?1:2;break;case 1:l=j+1;g=3;break;case 2:l=12;g=3;break;case 3:p=g=_PyList_New(l);g=g==0?4:5;break;case 4:k=0;g=34;break;case 5:m=n=0;g=18;break;case 6:var r=n,g=HEAP[d+n]==h?7:16;break;case 7:q=_PyByteArray_FromStringAndSize(d+m,r-m);g=q==0?31:8;break;case 8:var u=p,g=o<=11?9:10;break;case 9:HEAP[HEAP[u+12]+4*o]=q;g=15;break;case 10:g=_PyList_Append(u,q)!=0;HEAP[q]-=1;var s= -HEAP[q]==0,g=g?11:13;break;case 11:g=s?12:31;break;case 12:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);g=31;break;case 13:g=s?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);g=15;break;case 15:o+=1;n+=1;m=n;g=18;break;case 16:n=r+1;g=17;break;case 17:g=n=f?20:19;break;case 19:g=j>0;j-=1;g=g!=0?17:20;break;case 20:g=m<=f?21:30;break;case 21:q=_PyByteArray_FromStringAndSize(d+m,f-m);g=q==0?31:22;break;case 22:var t=p,g=o<=11?23:24;break;case 23:HEAP[HEAP[t+12]+4*o]=q;g= -29;break;case 24:g=_PyList_Append(t,q)!=0;HEAP[q]-=1;var v=HEAP[q]==0,g=g?25:27;break;case 25:g=v?26:31;break;case 26:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);g=31;break;case 27:g=v?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);g=29;break;case 29:o+=1;g=30;break;case 30:HEAP[p+8]=o;k=p;g=34;break;case 31:HEAP[p]-=1;g=HEAP[p]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);g=33;break;case 33:k=0;g=34;break;case 34:return e=k;default:assert(0,"bad label: "+g)}} -function _stringlib_split(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v;h=g;j=e;k=b;l=a;m=c;n=d;s=0;f=m==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str29349);p=0;f=33;break;case 2:f=m==1?3:4;break;case 3:p=_stringlib_split_char(h,j,k,HEAP[l]&255,n);f=33;break;case 4:f=n<=11?5:6;break;case 5:o=n+1;f=7;break;case 6:o=12;f=7;break;case 7:t=f=_PyList_New(o);f=f==0?8:9;break;case 8:p=0;f=33;break;case 9:q=r=0;f=20;break;case 10:u=_fastsearch(j+q,k-q, -l,m,-1,1);f=u<0?21:11;break;case 11:r=u+q;v=_PyByteArray_FromStringAndSize(j+q,r-q);f=v==0?30:12;break;case 12:var w=t;f=s<=11?13:14;break;case 13:HEAP[HEAP[w+12]+4*s]=v;f=19;break;case 14:f=_PyList_Append(w,v)!=0;HEAP[v]-=1;var x=HEAP[v]==0;f=f?15:17;break;case 15:f=x?16:30;break;case 16:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=30;break;case 17:f=x?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=19;break;case 19:s+=1;q=m+r;f=20;break;case 20:f=n>0;n-=1;f=f!=0?10:21;break;case 21:v=f=_PyByteArray_FromStringAndSize(j+ -q,k-q);f=f==0?30:22;break;case 22:var y=t;f=s<=11?23:24;break;case 23:HEAP[HEAP[y+12]+4*s]=v;f=29;break;case 24:f=_PyList_Append(y,v)!=0;HEAP[v]-=1;var z=HEAP[v]==0;f=f?25:27;break;case 25:f=z?26:30;break;case 26:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=30;break;case 27:f=z?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=29;break;case 29:s+=1;HEAP[t+8]=s;p=t;f=33;break;case 30:HEAP[t]-=1;f=HEAP[t]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=32;break;case 32:p=0;f=33; -break;case 33:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_rsplit_whitespace(g,e,b,a){var c,g=null;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=e;f=b;h=a;n=0;c=h<=11?1:2;break;case 1:k=h+1;c=3;break;case 2:k=12;c=3;break;case 3:o=c=_PyList_New(k);c=c==0?4:5;break;case 4:j=0;c=43;break;case 5:l=m=f-1;c=23;break;case 6:var q=l-1;l=q;g=6;c=7;break;case 7:c=(g==6?q:v)<0?9:8;break;case 8:c=(HEAP[__Py_ctype_table+HEAP[d+l]*4]&8)!=0?6:9;break;case 9:c=l<0?38:10;break;case 10:m=l;var r=l-1;l=r;g=10;c=12;break;case 11:var u=l-1;l=u;g= -11;c=12;break;case 12:c=(g==11?u:r)<0?14:13;break;case 13:c=(HEAP[__Py_ctype_table+HEAP[d+l]*4]&8)==0?11:14;break;case 14:p=c=_PyByteArray_FromStringAndSize(d+(l+1),0-l+m);c=c==0?40:15;break;case 15:var s=o;c=n<=11?16:17;break;case 16:HEAP[HEAP[s+12]+4*n]=p;c=22;break;case 17:c=_PyList_Append(s,p)!=0;HEAP[p]-=1;var t=HEAP[p]==0;c=c?18:20;break;case 18:c=t?19:40;break;case 19:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=40;break;case 20:c=t?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=22; -break;case 22:n+=1;c=23;break;case 23:g=h>0;h-=1;var v=l;g!=0?(g=23,c=7):(g=23,c=24);break;case 24:v>=0?(g=24,c=26):(g=24,c=38);break;case 25:var w=l-1;l=w;g=25;c=26;break;case 26:c=(g==25?w:v)<0?28:27;break;case 27:c=(HEAP[__Py_ctype_table+HEAP[d+l]*4]&8)!=0?25:28;break;case 28:c=l>=0?29:38;break;case 29:p=_PyByteArray_FromStringAndSize(d,l+1);c=p==0?40:30;break;case 30:var x=o;c=n<=11?31:32;break;case 31:HEAP[HEAP[x+12]+4*n]=p;c=37;break;case 32:c=_PyList_Append(x,p)!=0;HEAP[p]-=1;var y=HEAP[p]== -0;c=c?33:35;break;case 33:c=y?34:40;break;case 34:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=40;break;case 35:c=y?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=37;break;case 37:n+=1;c=38;break;case 38:HEAP[o+8]=n;c=_PyList_Reverse(o)<0?40:39;break;case 39:j=o;c=43;break;case 40:HEAP[o]-=1;c=HEAP[o]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=42;break;case 42:j=0;c=43;break;case 43:return e=j;default:assert(0,"bad label: "+c)}} -function _stringlib_rsplit_char(g,e,b,a,c){var d,g=null;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r;f=e;h=b;j=a;k=c;p=0;d=k<=11?1:2;break;case 1:m=k+1;d=3;break;case 2:m=12;d=3;break;case 3:q=d=_PyList_New(m);d=d==0?4:5;break;case 4:l=0;d=37;break;case 5:var u=o=h-1;n=u;g=5;d=20;break;case 6:d=HEAP[f+n]==j?7:16;break;case 7:r=_PyByteArray_FromStringAndSize(f+(n+1),0-n+o);d=r==0?34:8;break;case 8:var s=q;d=p<=11?9:10;break;case 9:HEAP[HEAP[s+12]+4*p]=r;d=15;break;case 10:d=_PyList_Append(s, -r)!=0;HEAP[r]-=1;var t=HEAP[r]==0;d=d?11:13;break;case 11:d=t?12:34;break;case 12:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=34;break;case 13:d=t?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=15;break;case 15:p+=1;n-=1;var v=n;o=v;g=15;d=20;break;case 16:var w=n-1;n=w;g=16;d=18;break;case 17:var x=n,g=17;d=18;break;case 18:d=(g==17?x:w)>=0?6:19;break;case 19:var y=n,g=19;d=20;break;case 20:d=(g==5?u:g==19?y:v)<0?22:21;break;case 21:d=k>0;k-=1;d=d!=0?17:22;break;case 22:d=o>=-1?23:32;break; -case 23:r=_PyByteArray_FromStringAndSize(f,o+1);d=r==0?34:24;break;case 24:var z=q;d=p<=11?25:26;break;case 25:HEAP[HEAP[z+12]+4*p]=r;d=31;break;case 26:d=_PyList_Append(z,r)!=0;HEAP[r]-=1;var C=HEAP[r]==0;d=d?27:29;break;case 27:d=C?28:34;break;case 28:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=34;break;case 29:d=C?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=31;break;case 31:p+=1;d=32;break;case 32:HEAP[q+8]=p;d=_PyList_Reverse(q)<0?34:33;break;case 33:l=q;d=37;break;case 34:HEAP[q]-= -1;d=HEAP[q]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=36;break;case 36:l=0;d=37;break;case 37:return e=l;default:assert(0,"bad label: "+d)}} -function _stringlib_rsplit(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t;h=g;j=e;k=b;l=a;m=c;n=d;u=0;f=m==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str29349);p=0;f=34;break;case 2:f=m==1?3:4;break;case 3:p=_stringlib_rsplit_char(h,j,k,HEAP[l]&255,n);f=34;break;case 4:f=n<=11?5:6;break;case 5:o=n+1;f=7;break;case 6:o=12;f=7;break;case 7:s=f=_PyList_New(o);f=f==0?8:9;break;case 8:p=0;f=34;break;case 9:q=k;f=20;break;case 10:r=_fastsearch(j,q,l,m,-1, -2);f=r<0?21:11;break;case 11:t=_PyByteArray_FromStringAndSize(j+(m+r),0-m+(0-r)+q);f=t==0?31:12;break;case 12:var v=s;f=u<=11?13:14;break;case 13:HEAP[HEAP[v+12]+4*u]=t;f=19;break;case 14:f=_PyList_Append(v,t)!=0;HEAP[t]-=1;var w=HEAP[t]==0;f=f?15:17;break;case 15:f=w?16:31;break;case 16:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=31;break;case 17:f=w?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=19;break;case 19:u+=1;q=r;f=20;break;case 20:f=n>0;n-=1;f=f!=0?10:21;break;case 21:t=f=_PyByteArray_FromStringAndSize(j, -q);f=f==0?31:22;break;case 22:var x=s;f=u<=11?23:24;break;case 23:HEAP[HEAP[x+12]+4*u]=t;f=29;break;case 24:f=_PyList_Append(x,t)!=0;HEAP[t]-=1;var y=HEAP[t]==0;f=f?25:27;break;case 25:f=y?26:31;break;case 26:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=31;break;case 27:f=y?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=29;break;case 29:u+=1;HEAP[s+8]=u;f=_PyList_Reverse(s)<0?31:30;break;case 30:p=s;f=34;break;case 31:HEAP[s]-=1;f=HEAP[s]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[s+ -4]+24]](s);f=33;break;case 33:p=0;f=34;break;case 34:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_splitlines(g,e,b,a){for(g=-1;;)switch(g){case -1:var c,d,f,h,j,k,l,m,n;c=e;d=b;f=a;l=_PyList_New(0);g=l==0?1:2;break;case 1:h=0;g=27;break;case 2:j=k=0;g=22;break;case 3:j+=1;g=4;break;case 4:g=j>=d?7:5;break;case 5:g=HEAP[c+j]==10?7:6;break;case 6:g=HEAP[c+j]!=13?3:7;break;case 7:n=j;g=j=d?12:10;break;case 10:g=HEAP[c+(j+1)]!=10?12:11;break;case 11:j+=2;g=13;break;case 12:j+=1;g=13;break;case 13:g=f!=0?14:15;break;case 14:n= -j;g=15;break;case 15:m=g=_PyByteArray_FromStringAndSize(c+k,n-k);g=g==0?24:16;break;case 16:g=_PyList_Append(l,m)!=0;HEAP[m]-=1;var o=HEAP[m]==0,g=g?17:19;break;case 17:g=o?18:24;break;case 18:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);g=24;break;case 19:g=o?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);g=21;break;case 21:k=j;g=22;break;case 22:g=j0?11:17;break;case 11:p=0-p%HEAP[r]+HEAP[r]+p;a=p<0?12:17;break;case 12:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str31351);k=0;a=39;break;case 13:p+=1;a=HEAP[m]==10?15:14;break;case 14:a=HEAP[m]==13?15:17;break;case 15:o=a=p+o;p=0;a=a<0?16:17;break;case 16:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str31351);k=0;a=39;break;case 17:m+=1;a=18;break;case 18:a=m0?32:37;break;case 32:o=HEAP[r]-p%HEAP[r];p=o+p;o=a=o-1;a=a!=-1?33: -37;break;case 33:HEAP[n]=32;n+=1;o=a=o-1;a=a!=-1?33:37;break;case 34:p+=1;HEAP[n]=HEAP[m];n+=1;a=HEAP[m]==10?36:35;break;case 35:a=HEAP[m]==13?36:37;break;case 36:p=0;a=37;break;case 37:m+=1;a=m=HEAP[h]?3:8;break;case 3:a=HEAP[c+4]==_PyByteArray_Type?4:8;break;case 4:var k=HEAP[c+8];a=HEAP[c+8]!=0?5:6;break;case 5:d=HEAP[c+20];a=7;break;case 6:d=__PyByteArray_empty_string;a=7;break;case 7:f= -_PyByteArray_FromStringAndSize(d,k);a=9;break;case 8:f=_pad(c,0,HEAP[h]-HEAP[c+8],HEAP[j]&255);a=9;break;case 9:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _stringlib_rjust(g,e){var b=STACKTOP;STACKTOP+=5;_memset(b,0,5);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4;c=g;a=e;HEAP[j]=32;a=__PyArg_ParseTuple_SizeT(a,__str33353,allocate([h,0,0,0,j,0,0,0],["i32*",0,0,0,"i8*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=9;break;case 2:a=HEAP[c+8]>=HEAP[h]?3:8;break;case 3:a=HEAP[c+4]==_PyByteArray_Type?4:8;break;case 4:var k=HEAP[c+8];a=HEAP[c+8]!=0?5:6;break;case 5:d=HEAP[c+20];a=7;break;case 6:d=__PyByteArray_empty_string;a=7;break;case 7:f= -_PyByteArray_FromStringAndSize(d,k);a=9;break;case 8:f=_pad(c,HEAP[h]-HEAP[c+8],0,HEAP[j]&255);a=9;break;case 9:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _stringlib_center(g,e){var b=STACKTOP;STACKTOP+=5;_memset(b,0,5);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4;c=g;a=e;HEAP[j]=32;a=__PyArg_ParseTuple_SizeT(a,__str34354,allocate([h,0,0,0,j,0,0,0],["i32*",0,0,0,"i8*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=9;break;case 2:a=HEAP[c+8]>=HEAP[h]?3:8;break;case 3:a=HEAP[c+4]==_PyByteArray_Type?4:8;break;case 4:var k=HEAP[c+8];a=HEAP[c+8]!=0?5:6;break;case 5:d=HEAP[c+20];a=7;break;case 6:d=__PyByteArray_empty_string;a=7;break;case 7:f= -_PyByteArray_FromStringAndSize(d,k);a=9;break;case 8:f=HEAP[h]-HEAP[c+8];a=(HEAP[h]&1&f)+(f/2|0);f=_pad(c,a,f-a,HEAP[j]&255);a=9;break;case 9:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _stringlib_zfill(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n=b;c=g;a=__PyArg_ParseTuple_SizeT(e,__str35355,allocate([n,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:j=0;a=21;break;case 2:a=HEAP[c+8]>=HEAP[n]?3:12;break;case 3:var o=HEAP[c+8],p=HEAP[c+8]!=0;a=HEAP[c+4]==_PyByteArray_Type?4:8;break;case 4:a=p?5:6;break;case 5:h=HEAP[c+20];a=7;break;case 6:h=__PyByteArray_empty_string;a=7;break;case 7:j=_PyByteArray_FromStringAndSize(h, -o);a=21;break;case 8:a=p?9:10;break;case 9:f=HEAP[c+20];a=11;break;case 10:f=__PyByteArray_empty_string;a=11;break;case 11:j=_PyByteArray_FromStringAndSize(f,o);a=21;break;case 12:k=HEAP[n]-HEAP[c+8];l=_pad(c,k,0,48);a=l==0?13:14;break;case 13:j=0;a=21;break;case 14:a=HEAP[l+8]!=0?15:16;break;case 15:d=HEAP[l+20];a=17;break;case 16:d=__PyByteArray_empty_string;a=17;break;case 17:m=d;a=HEAP[m+k]==43?19:18;break;case 18:a=HEAP[m+k]==45?19:20;break;case 19:HEAP[m]=HEAP[m+k];HEAP[m+k]=48;a=20;break;case 20:j= -l;a=21;break;case 21:return a=j,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _bytearray_find_internal(g,e,b){var a=STACKTOP;STACKTOP+=64;_memset(a,0,64);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m=a+4,n=a+56,o=a+60,p;d=g;c=e;f=b;HEAP[n]=0;HEAP[o]=2147483647;c=_stringlib_parse_args_finds(__str36356,c,l,n,o)==0?1:2;break;case 1:k=-2;c=14;break;case 2:c=__getbuffer(HEAP[l],m)<0?3:4;break;case 3:k=-2;c=14;break;case 4:var q=HEAP[o],r=HEAP[n],u=HEAP[m+8],s=HEAP[m],t=HEAP[d+8],v=HEAP[d+8]!=0;c=f>0?5:9;break;case 5:c=v?6:7;break;case 6:j=HEAP[d+20];c=8;break; -case 7:j=__PyByteArray_empty_string;c=8;break;case 8:p=_stringlib_find_slice(j,t,s,u,r,q);c=13;break;case 9:c=v?10:11;break;case 10:h=HEAP[d+20];c=12;break;case 11:h=__PyByteArray_empty_string;c=12;break;case 12:p=_stringlib_rfind_slice(h,t,s,u,r,q);c=13;break;case 13:_PyBuffer_Release(m);k=p;c=14;break;case 14:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _bytearray_find(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_bytearray_find_internal(g,e,1);b=c==-2?1:2;break;case 1:a=0;b=3;break;case 2:a=_PyInt_FromSsize_t(c);b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _bytearray_count(g,e){var b=STACKTOP;STACKTOP+=64;_memset(b,0,64);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k,l=b+4,m=b+8,n=b+12;c=g;d=e;a=HEAP[c+8]!=0?1:2;break;case 1:h=HEAP[c+20];a=3;break;case 2:h=__PyByteArray_empty_string;a=3;break;case 3:k=h;HEAP[l]=0;HEAP[m]=2147483647;a=_stringlib_parse_args_finds(__str37357,d,j,l,m)==0?4:5;break;case 4:f=0;a=16;break;case 5:a=__getbuffer(HEAP[j],n)<0?6:7;break;case 6:f=0;a=16;break;case 7:a=HEAP[c+8]=0;a=14;break;case 8:a=k<0|k>255?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_ValueError],__str2322);j=-1;a=14;break;case 10:var p=HEAP[c+8];a=HEAP[c+8]!=0?11:12;break;case 11:f=HEAP[c+20];a=13;break;case 12:f=__PyByteArray_empty_string;a=13;break;case 13:j=_memchr(f,k,p)!=0;a=14;break;case 14:return c=j,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __bytearray_tailmatch(g,e,b,a,c){var d=STACKTOP;STACKTOP+=52;_memset(d,0,52);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r=d,u;h=g;j=e;k=b;l=a;m=c;p=HEAP[h+8];u=0;f=HEAP[h+8]!=0?1:2;break;case 1:o=HEAP[h+20];f=3;break;case 2:o=__PyByteArray_empty_string;f=3;break;case 3:q=o;f=__getbuffer(j,r)<0?4:5;break;case 4:n=-1;f=22;break;case 5:f=l>p?6:7;break;case 6:l=p;f=10;break;case 7:f=l<0?8:10;break;case 8:l=p+l;f=l<0?9:10;break;case 9:l=0;f=10;break;case 10:f=k<0?11:13;break;case 11:k= -p+k;f=k<0?12:13;break;case 12:k=0;f=13;break;case 13:f=m<0?14:15;break;case 14:f=k+HEAP[r+8]>p?21:19;break;case 15:f=l-kp?21:17;break;case 17:f=l-HEAP[r+8]>k?18:19;break;case 18:k=l-HEAP[r+8];f=19;break;case 19:f=l-k>=HEAP[r+8]?20:21;break;case 20:u=_memcmp(q+k,HEAP[r],HEAP[r+8])==0;f=21;break;case 21:_PyBuffer_Release(r);n=u;f=22;break;case 22:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _bytearray_startswith(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k,l;c=g;a=e;HEAP[f]=0;HEAP[h]=2147483647;a=_stringlib_parse_args_finds(__str39359,a,j,f,h)==0?1:2;break;case 1:d=0;a=14;break;case 2:a=(HEAP[HEAP[HEAP[j]+4]+84]&67108864)!=0?3:11;break;case 3:l=0;a=9;break;case 4:k=__bytearray_tailmatch(c,HEAP[HEAP[j]+12+l*4],HEAP[f],HEAP[h],-1);a=k==-1?5:6;break;case 5:d=0;a=14;break;case 6:a=k!=0?7:8;break;case 7:HEAP[__Py_TrueStruct]+= -1;d=__Py_TrueStruct;a=14;break;case 8:l+=1;a=9;break;case 9:a=HEAP[HEAP[j]+8]>l?4:10;break;case 10:HEAP[__Py_ZeroStruct]+=1;d=__Py_ZeroStruct;a=14;break;case 11:k=__bytearray_tailmatch(c,HEAP[j],HEAP[f],HEAP[h],-1);a=k==-1?12:13;break;case 12:d=0;a=14;break;case 13:d=_PyBool_FromLong(k);a=14;break;case 14:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_endswith(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k,l;c=g;a=e;HEAP[f]=0;HEAP[h]=2147483647;a=_stringlib_parse_args_finds(__str40360,a,j,f,h)==0?1:2;break;case 1:d=0;a=14;break;case 2:a=(HEAP[HEAP[HEAP[j]+4]+84]&67108864)!=0?3:11;break;case 3:l=0;a=9;break;case 4:k=__bytearray_tailmatch(c,HEAP[HEAP[j]+12+l*4],HEAP[f],HEAP[h],1);a=k==-1?5:6;break;case 5:d=0;a=14;break;case 6:a=k!=0?7:8;break;case 7:HEAP[__Py_TrueStruct]+= -1;d=__Py_TrueStruct;a=14;break;case 8:l+=1;a=9;break;case 9:a=HEAP[HEAP[j]+8]>l?4:10;break;case 10:HEAP[__Py_ZeroStruct]+=1;d=__Py_ZeroStruct;a=14;break;case 11:k=__bytearray_tailmatch(c,HEAP[j],HEAP[f],HEAP[h],1);a=k==-1?12:13;break;case 12:d=0;a=14;break;case 13:d=_PyBool_FromLong(k);a=14;break;case 14:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_translate(g,e){var b=STACKTOP;STACKTOP+=1136;_memset(b,0,1136);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q=b,r=b+1024,u=b+1028,s=b+1032,t=b+1084;c=g;a=e;p=0;HEAP[r]=0;HEAP[u]=0;a=_PyArg_UnpackTuple(a,__str41361,1,2,allocate([r,0,0,0,u,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=41;break;case 2:a=HEAP[r]==__Py_NoneStruct?3:4;break;case 3:k=0;HEAP[r]=0;a=9;break;case 4:a=__getbuffer(HEAP[r],s)< -0?5:6;break;case 5:f=0;a=41;break;case 6:a=HEAP[s+8]!=256?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_ValueError],__str42362);_PyBuffer_Release(s);f=0;a=41;break;case 8:k=HEAP[s];a=9;break;case 9:a=HEAP[u]!=0?10:14;break;case 10:a=__getbuffer(HEAP[u],t)<0?11:15;break;case 11:a=HEAP[r]!=0?12:13;break;case 12:_PyBuffer_Release(s);a=13;break;case 13:f=0;a=41;break;case 14:HEAP[t]=0;HEAP[t+8]=0;a=15;break;case 15:o=HEAP[c+8];p=a=_PyByteArray_FromStringAndSize(0,o);a=a==0?36:16;break;case 16:n=j=_PyByteArray_AsString(p); -a=HEAP[c+8]!=0?17:18;break;case 17:d=HEAP[c+20];a=19;break;case 18:d=__PyByteArray_empty_string;a=19;break;case 19:h=d;var v=k;a=HEAP[t+8]==0?20:24;break;case 20:a=v!=0?22:21;break;case 21:l=0;a=25;break;case 22:l=o;l=a=l-1;a=a>=0?23:36;break;case 23:m=HEAP[h];h+=1;HEAP[j]=HEAP[k+m];j+=1;l=a=l-1;a=a>=0?23:36;break;case 24:l=0;a=v==0?25:26;break;case 25:HEAP[q+l*4]=l&255;l=a=l+1;a=a<=255?25:27;break;case 26:HEAP[q+l*4]=HEAP[k+l];l=a=l+1;a=a<=255?26:27;break;case 27:l=0;var w=t+8;a=HEAP[w]>l?28:30; -break;case 28:var x=t;a=29;break;case 29:HEAP[q+HEAP[HEAP[x]+l]*4]=-1;l+=1;a=HEAP[w]>l?29:30;break;case 30:l=o;l=a=l-1;a=a>=0?31:34;break;case 31:m=HEAP[h];h+=1;a=HEAP[q+m*4]!=-1?33:32;break;case 32:l=a=l-1;a=a>=0?31:34;break;case 33:HEAP[j]=HEAP[q+m*4]&255;j+=1;a=32;break;case 34:a=o>0?35:36;break;case 35:_PyByteArray_Resize(p,j-n);a=36;break;case 36:a=HEAP[r]!=0?37:38;break;case 37:_PyBuffer_Release(s);a=38;break;case 38:a=HEAP[u]!=0?39:40;break;case 39:_PyBuffer_Release(t);a=40;break;case 40:f= -p;a=41;break;case 41:return d=f,STACKTOP=b,d;default:assert(0,"bad label: "+a)}}function _return_self(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;var c=HEAP[b+8];e=HEAP[b+8]!=0?1:2;break;case 1:a=HEAP[b+20];e=3;break;case 2:a=__PyByteArray_empty_string;e=3;break;case 3:return g=_PyByteArray_FromStringAndSize(a,c);default:assert(0,"bad label: "+e)}} -function _countchar(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;c=e;f=b;h=a;j=0;k=d;d+=c;c=3;break;case 1:j+=1;c=j>=h?4:2;break;case 2:k+=1;c=3;break;case 3:k=c=_memchr(k,f,d-k);c=c!=0?1:4;break;case 4:return g=j;default:assert(0,"bad label: "+c)}} -function _replace_interleave(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t;d=g;f=e;h=b;j=a;p=HEAP[d+8];r=p+1;c=j0;u-=1;a=a!=0?11:14;break;case 14:_llvm_memcpy_p0i8_p0i8_i32(m,n,p-n,1,0);j=r;a=15;break;case 15:return g=j;default:assert(0,"bad label: "+a)}} -function _replace_delete_substring(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t;d=g;f=e;h=b;j=a;r=HEAP[d+8];c=HEAP[d+8]!=0?1:2;break;case 1:m=HEAP[d+20];c=3;break;case 2:m=__PyByteArray_empty_string;c=3;break;case 3:n=m;s=c=_stringlib_count(n,r,f,h,j);c=c==0?4:5;break;case 4:l=_return_self(d);c=15;break;case 5:u=r-h*s;u=_PyByteArray_FromStringAndSize(0,u);c=u==0?6:7;break;case 6:l=0;c=15;break;case 7:c=HEAP[u+8]!=0?8:9;break;case 8:k=HEAP[u+20];c=10;break;case 9:k= -__PyByteArray_empty_string;c=10;break;case 10:o=k;p=n;q=n+r;c=13;break;case 11:t=_stringlib_find(p,q-p,f,h,0);c=t==-1?14:12;break;case 12:c=p+t;_llvm_memcpy_p0i8_p0i8_i32(o,p,c-p,1,0);o+=c-p;p=c+h;c=13;break;case 13:c=s>0;s-=1;c=c!=0?11:14;break;case 14:_llvm_memcpy_p0i8_p0i8_i32(o,p,q-p,1,0);l=u;c=15;break;case 15:return g=l;default:assert(0,"bad label: "+c)}} -function _replace_single_character_in_place(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u;d=g;f=e;h=b;j=a;c=HEAP[d+8]!=0?1:2;break;case 1:m=HEAP[d+20];c=3;break;case 2:m=__PyByteArray_empty_string;c=3;break;case 3:n=m;r=HEAP[d+8];q=c=_memchr(n,f,r);c=c==0?4:5;break;case 4:l=_return_self(d);c=15;break;case 5:u=_PyByteArray_FromStringAndSize(0,r);c=u==0?6:7;break;case 6:l=0;c=15;break;case 7:c=HEAP[u+8]!=0?8:9;break;case 8:k=HEAP[u+20];c=10;break;case 9:k=__PyByteArray_empty_string; -c=10;break;case 10:o=k;_llvm_memcpy_p0i8_p0i8_i32(o,n,r,1,0);p=o+(q-n);HEAP[p]=h;p+=1;o+=r;c=13;break;case 11:q=_memchr(p,f,o-p);c=q==0?14:12;break;case 12:HEAP[q]=h;p=q+1;c=13;break;case 13:j=c=j-1;c=c>0?11:14;break;case 14:l=u;c=15;break;case 15:return g=l;default:assert(0,"bad label: "+c)}} -function _replace_substring_in_place(g,e,b,a,c,d){for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t;f=g;h=e;j=b;k=a;l=d;c=HEAP[f+8]!=0?1:2;break;case 1:o=HEAP[f+20];c=3;break;case 2:o=__PyByteArray_empty_string;c=3;break;case 3:r=o;u=HEAP[f+8];s=c=_stringlib_find(r,u,h,j,0);c=c==-1?4:5;break;case 4:n=_return_self(f);c=15;break;case 5:t=_PyByteArray_FromStringAndSize(0,u);c=t==0?6:7;break;case 6:n=0;c=15;break;case 7:c=HEAP[t+8]!=0?8:9;break;case 8:m=HEAP[t+20];c=10;break;case 9:m=__PyByteArray_empty_string; -c=10;break;case 10:p=m;_llvm_memcpy_p0i8_p0i8_i32(p,r,u,1,0);q=p+s;_llvm_memcpy_p0i8_p0i8_i32(q,k,j,1,0);q+=j;p+=u;c=13;break;case 11:s=_stringlib_find(q,p-q,h,j,0);c=s==-1?14:12;break;case 12:_llvm_memcpy_p0i8_p0i8_i32(q+s,k,j,1,0);q+=j+s;c=13;break;case 13:l=c=l-1;c=c>0?11:14;break;case 14:n=t;c=15;break;case 15:return g=n;default:assert(0,"bad label: "+c)}} -function _replace_single_character(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y;f=g;h=e;j=b;k=a;l=c;d=HEAP[f+8]!=0?1:2;break;case 1:o=HEAP[f+20];d=3;break;case 2:o=__PyByteArray_empty_string;d=3;break;case 3:p=o;t=HEAP[f+8];w=d=_countchar(p,t,h&255,l);d=d==0?4:5;break;case 4:n=_return_self(f);d=21;break;case 5:x=(k-1)*w;d=(x/(k-1)|0)!=w?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str44364);n=0;d=21;break;case 7:v=x+t;d=v<0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_OverflowError], -__str44364);n=0;d=21;break;case 9:y=_PyByteArray_FromStringAndSize(0,v);d=y==0?10:11;break;case 10:n=0;d=21;break;case 11:d=HEAP[y+8]!=0?12:13;break;case 12:m=HEAP[y+20];d=14;break;case 13:m=__PyByteArray_empty_string;d=14;break;case 14:q=m;r=p;s=p+t;d=19;break;case 15:u=_memchr(r,h,s-r);d=u==0?20:16;break;case 16:d=u==r?17:18;break;case 17:_llvm_memcpy_p0i8_p0i8_i32(q,j,k,1,0);q+=k;r+=1;d=19;break;case 18:_llvm_memcpy_p0i8_p0i8_i32(q,r,u-r,1,0);q+=u-r;_llvm_memcpy_p0i8_p0i8_i32(q,j,k,1,0);q+=k;r= -u+1;d=19;break;case 19:d=w>0;w-=1;d=d!=0?15:20;break;case 20:_llvm_memcpy_p0i8_p0i8_i32(q,r,s-r,1,0);n=y;d=21;break;case 21:return g=n;default:assert(0,"bad label: "+d)}} -function _replace_substring(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A;h=g;j=e;k=b;l=a;m=c;n=d;f=HEAP[h+8]!=0?1:2;break;case 1:q=HEAP[h+20];f=3;break;case 2:q=__PyByteArray_empty_string;f=3;break;case 3:r=q;w=HEAP[h+8];y=f=_stringlib_count(r,w,j,k,n);f=f==0?4:5;break;case 4:p=_return_self(h);f=21;break;case 5:C=(m-k)*y;f=(C/(m-k)|0)!=y?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str44364);p=0;f=21;break;case 7:x=C+w;f=x<0?8:9;break; -case 8:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str44364);p=0;f=21;break;case 9:A=_PyByteArray_FromStringAndSize(0,x);f=A==0?10:11;break;case 10:p=0;f=21;break;case 11:f=HEAP[A+8]!=0?12:13;break;case 12:o=HEAP[A+20];f=14;break;case 13:o=__PyByteArray_empty_string;f=14;break;case 14:u=o;s=r;v=r+w;f=19;break;case 15:z=_stringlib_find(s,v-s,j,k,0);f=z==-1?20:16;break;case 16:t=s+z;f=t==s?17:18;break;case 17:_llvm_memcpy_p0i8_p0i8_i32(u,l,m,1,0);u+=m;s+=k;f=19;break;case 18:_llvm_memcpy_p0i8_p0i8_i32(u, -s,t-s,1,0);u+=t-s;_llvm_memcpy_p0i8_p0i8_i32(u,l,m,1,0);u+=m;s=t+k;f=19;break;case 19:f=y>0;y-=1;f=f!=0?15:20;break;case 20:_llvm_memcpy_p0i8_p0i8_i32(u,s,v-s,1,0);p=A;f=21;break;case 21:return g=p;default:assert(0,"bad label: "+f)}} -function _replace(g,e,b,a,c,d){var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p;j=g;k=e;l=b;m=a;n=c;o=d;f=o<0?1:2;break;case 1:o=2147483647;f=6;break;case 2:f=o==0?4:3;break;case 3:f=HEAP[j+8]==0?4:5;break;case 4:p=_return_self(j);f=25;break;case 5:f=o==0?9:6;break;case 6:f=l!=0?7:8;break;case 7:var q=j,h=7;f=12;break;case 8:f=n==0?9:10;break;case 9:p=_return_self(j);f=25;break;case 10:var r=j;l==0?(h=10,f=11):(h=10,f=12);break;case 11:p=_replace_interleave(r,m,n,o);f=25;break;case 12:f= -HEAP[(h==7?q:r)+8]==0?13:14;break;case 13:p=_return_self(j);f=25;break;case 14:var u=l;f=n==0?15:18;break;case 15:f=u==1?16:17;break;case 16:p=_replace_delete_single_character(j,HEAP[k]&255,o);f=25;break;case 17:p=_replace_delete_substring(j,k,l,o);f=25;break;case 18:var s=l==1;f=u==n?19:22;break;case 19:f=s?20:21;break;case 20:p=_replace_single_character_in_place(j,HEAP[k]&255,HEAP[m]&255,o);f=25;break;case 21:p=_replace_substring_in_place(j,k,l,m,n,o);f=25;break;case 22:f=s?23:24;break;case 23:p= -_replace_single_character(j,HEAP[k]&255,m,n,o);f=25;break;case 24:p=_replace_substring(j,k,l,m,n,o);f=25;break;case 25:return g=p;default:assert(0,"bad label: "+f)}} -function _bytearray_replace(g,e){var b=STACKTOP;STACKTOP+=116;_memset(b,0,116);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k=b+12,l=b+64;c=g;a=e;HEAP[f]=-1;a=__PyArg_ParseTuple_SizeT(a,__str45365,allocate([h,0,0,0,j,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:a=__getbuffer(HEAP[h],k)<0?3:4;break;case 3:d=0;a=7;break;case 4:a=__getbuffer(HEAP[j],l)<0?5:6;break;case 5:_PyBuffer_Release(k); -d=0;a=7;break;case 6:d=_replace(c,HEAP[k],HEAP[k+8],HEAP[l],HEAP[l+8],HEAP[f]);_PyBuffer_Release(k);_PyBuffer_Release(l);a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_split(g,e){var b=STACKTOP;STACKTOP+=60;_memset(b,0,60);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l,m=b+4,n=b+8;c=g;d=e;j=HEAP[c+8];HEAP[k]=-1;a=HEAP[c+8]!=0?1:2;break;case 1:h=HEAP[c+20];a=3;break;case 2:h=__PyByteArray_empty_string;a=3;break;case 3:l=h;HEAP[m]=__Py_NoneStruct;a=__PyArg_ParseTuple_SizeT(d,__str46366,allocate([m,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?4:5;break;case 4:f=0;a=12;break;case 5:a=HEAP[k]<0?6:7;break;case 6:HEAP[k]= -2147483647;a=7;break;case 7:a=HEAP[m]==__Py_NoneStruct?8:9;break;case 8:f=_stringlib_split_whitespace(c,l,j,HEAP[k]);a=12;break;case 9:a=__getbuffer(HEAP[m],n)<0?10:11;break;case 10:f=0;a=12;break;case 11:f=HEAP[n];a=HEAP[n+8];a=_stringlib_split(c,l,j,f,a,HEAP[k]);_PyBuffer_Release(n);f=a;a=12;break;case 12:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_partition(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;h=_PyByteArray_FromObject(e);b=h==0?1:2;break;case 1:f=0;b=11;break;case 2:var k=HEAP[h+8];b=HEAP[h+8]!=0?3:4;break;case 3:d=HEAP[h+20];b=5;break;case 4:d=__PyByteArray_empty_string;b=5;break;case 5:var l=HEAP[a+8];b=HEAP[a+8]!=0?6:7;break;case 6:c=HEAP[a+20];b=8;break;case 7:c=__PyByteArray_empty_string;b=8;break;case 8:j=_stringlib_partition(a,c,l,h,d,k);HEAP[h]-=1;b=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);b=10;break;case 10:f=j;b=11;break;case 11:return b=f;default:assert(0,"bad label: "+b)}} -function _bytearray_rpartition(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;h=_PyByteArray_FromObject(e);b=h==0?1:2;break;case 1:f=0;b=11;break;case 2:var k=HEAP[h+8];b=HEAP[h+8]!=0?3:4;break;case 3:d=HEAP[h+20];b=5;break;case 4:d=__PyByteArray_empty_string;b=5;break;case 5:var l=HEAP[a+8];b=HEAP[a+8]!=0?6:7;break;case 6:c=HEAP[a+20];b=8;break;case 7:c=__PyByteArray_empty_string;b=8;break;case 8:j=_stringlib_rpartition(a,c,l,h,d,k);HEAP[h]-=1;b=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);b=10;break;case 10:f=j;b=11;break;case 11:return b=f;default:assert(0,"bad label: "+b)}} -function _bytearray_rsplit(g,e){var b=STACKTOP;STACKTOP+=60;_memset(b,0,60);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l,m=b+4,n=b+8;c=g;d=e;j=HEAP[c+8];HEAP[k]=-1;a=HEAP[c+8]!=0?1:2;break;case 1:h=HEAP[c+20];a=3;break;case 2:h=__PyByteArray_empty_string;a=3;break;case 3:l=h;HEAP[m]=__Py_NoneStruct;a=__PyArg_ParseTuple_SizeT(d,__str47367,allocate([m,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?4:5;break;case 4:f=0;a=12;break;case 5:a=HEAP[k]<0?6:7;break; -case 6:HEAP[k]=2147483647;a=7;break;case 7:a=HEAP[m]==__Py_NoneStruct?8:9;break;case 8:f=_stringlib_rsplit_whitespace(c,l,j,HEAP[k]);a=12;break;case 9:a=__getbuffer(HEAP[m],n)<0?10:11;break;case 10:f=0;a=12;break;case 11:f=HEAP[n];a=HEAP[n+8];a=_stringlib_rsplit(c,l,j,f,a,HEAP[k]);_PyBuffer_Release(n);f=a;a=12;break;case 12:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_reverse(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;a=HEAP[b+8];d=a/2|0;b=HEAP[b+20];a=b+a+-1;c=0;e=ck?12:13;break;case 12:HEAP[j]=k;a=13;break;case 13:_llvm_memmove_p0i8_p0i8_i32(HEAP[c+20]+HEAP[j]+1,HEAP[c+20]+HEAP[j],k-HEAP[j],1,0);HEAP[HEAP[c+20]+HEAP[j]]=HEAP[h]&255;HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=14;break;case 14:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_append(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h;c=g;a=e;h=HEAP[c+8];a=__getbytevalue(a,f)==0?1:2;break;case 1:d=0;a=7;break;case 2:a=h==2147483647?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str49369);d=0;a=7;break;case 4:a=_PyByteArray_Resize(c,h+1)<0?5:6;break;case 5:d=0;a=7;break;case 6:HEAP[HEAP[c+20]+h]=HEAP[f]&255;HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0, -"bad label: "+a)}} -function _bytearray_extend(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p=b,q;c=g;d=e;o=n=0;a=HEAP[HEAP[d+4]+80]!=0?1:6;break;case 1:a=(HEAP[HEAP[d+4]+84]&2097152)!=0?2:6;break;case 2:a=HEAP[HEAP[HEAP[d+4]+80]+16]!=0?3:6;break;case 3:a=_bytearray_setslice(c,HEAP[c+8],HEAP[c+8],d)==-1?4:5;break;case 4:j=0;a=51;break;case 5:HEAP[__Py_NoneStruct]+=1;j=__Py_NoneStruct;a=51;break;case 6:k=a=_PyObject_GetIter(d);a=a==0?7:8;break;case 7:j=0;a= -51;break;case 8:n=__PyObject_LengthHint(d,32);a=n==-1?9:12;break;case 9:HEAP[k]-=1;a=HEAP[k]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=11;break;case 11:j=0;a=51;break;case 12:m=_PyByteArray_FromStringAndSize(0,n);a=m==0?13:14;break;case 13:j=0;a=51;break;case 14:a=HEAP[m+8]!=0?15:16;break;case 15:h=HEAP[m+20];a=17;break;case 16:h=__PyByteArray_empty_string;a=17;break;case 17:q=h;a=39;break;case 18:a=__getbytevalue(l,p)==0?19:26;break;case 19:HEAP[l]-=1;a=HEAP[l]==0?20:21;break; -case 20:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=21;break;case 21:HEAP[k]-=1;a=HEAP[k]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=23;break;case 23:HEAP[m]-=1;a=HEAP[m]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=25;break;case 25:j=0;a=51;break;case 26:HEAP[q+o]=HEAP[p]&255;o+=1;HEAP[l]-=1;a=HEAP[l]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=28;break;case 28:a=o>=n?29:39;break;case 29:n=o+1+(o>>1);a=_PyByteArray_Resize(m,n)<0?30:35;break;case 30:HEAP[k]-= -1;a=HEAP[k]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=32;break;case 32:HEAP[m]-=1;a=HEAP[m]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=34;break;case 34:j=0;a=51;break;case 35:a=HEAP[m+8]!=0?36:37;break;case 36:f=HEAP[m+20];a=38;break;case 37:f=__PyByteArray_empty_string;a=38;break;case 38:q=f;a=39;break;case 39:l=a=_PyIter_Next(k);a=a!=0?18:40;break;case 40:HEAP[k]-=1;a=HEAP[k]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=42;break;case 42:a= -_PyByteArray_Resize(m,o)<0?43:46;break;case 43:HEAP[m]-=1;a=HEAP[m]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=45;break;case 45:j=0;a=51;break;case 46:a=_bytearray_setslice(c,HEAP[c+8],HEAP[c+8],m)==-1?47:48;break;case 47:j=0;a=51;break;case 48:HEAP[m]-=1;a=HEAP[m]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=50;break;case 50:HEAP[__Py_NoneStruct]+=1;j=__Py_NoneStruct;a=51;break;case 51:return c=j,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_pop(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j;c=g;a=e;HEAP[h]=-1;j=HEAP[c+8];a=__PyArg_ParseTuple_SizeT(a,__str50370,allocate([h,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=13;break;case 2:a=j==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_IndexError],__str51371);d=0;a=13;break;case 4:a=HEAP[h]<0?5:6;break;case 5:a=HEAP[h]+HEAP[c+8];HEAP[h]=a;a=a<0?7:6;break;case 6:a=HEAP[c+8]<=HEAP[h]?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_IndexError], -__str52372);d=0;a=13;break;case 8:a=__canresize(c)==0?9:10;break;case 9:d=0;a=13;break;case 10:f=HEAP[HEAP[c+20]+HEAP[h]];_llvm_memmove_p0i8_p0i8_i32(HEAP[c+20]+HEAP[h],HEAP[c+20]+HEAP[h]+1,j-HEAP[h],1,0);a=_PyByteArray_Resize(c,j-1)<0?11:12;break;case 11:d=0;a=13;break;case 12:d=_PyInt_FromLong(f&255);a=13;break;case 13:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_remove(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j;c=g;a=e;j=HEAP[c+8];a=__getbytevalue(a,f)==0?1:2;break;case 1:d=0;a=13;break;case 2:h=0;a=5;break;case 3:a=HEAP[HEAP[c+20]+h]==HEAP[f]?6:4;break;case 4:h+=1;a=5;break;case 5:a=h=f?4:3;break;case 3:c=_memchr(h,HEAP[d+k],j)!=0?1:4;break;case 4:return g=k;default:assert(0,"bad label: "+c)}} -function _rstrip_helper(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k;f=g;c=e;h=b;j=a;var l=c-1;k=l;d=-1;c=2;break;case 1:var m=k-1;k=m;d=1;c=2;break;case 2:c=(d==1?m:l)<0?4:3;break;case 3:c=_memchr(h,HEAP[f+k],j)!=0?1:4;break;case 4:return g=k+1;default:assert(0,"bad label: "+c)}} -function _bytearray_strip(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n=b,o=b+4;c=g;a=e;HEAP[n]=__Py_NoneStruct;a=__PyArg_ParseTuple_SizeT(a,__str54374,allocate([n,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=13;break;case 2:a=HEAP[n]==__Py_NoneStruct?3:4;break;case 3:m=__str55375;k=6;a=7;break;case 4:a=__getbuffer(HEAP[n],o)<0?5:6;break;case 5:d=0;a=13;break;case 6:m=HEAP[o];k=HEAP[o+8];a=7;break;case 7:l= -HEAP[c+20];j=HEAP[c+8];f=_lstrip_helper(l,j,m,k);a=f==j?8:9;break;case 8:h=f;a=10;break;case 9:h=_rstrip_helper(l,j,m,k);a=10;break;case 10:a=HEAP[n]!=__Py_NoneStruct?11:12;break;case 11:_PyBuffer_Release(o);a=12;break;case 12:d=_PyByteArray_FromStringAndSize(HEAP[c+20]+f,h-f);a=13;break;case 13:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_lstrip(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4;c=g;a=e;HEAP[l]=__Py_NoneStruct;a=__PyArg_ParseTuple_SizeT(a,__str56376,allocate([l,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=10;break;case 2:a=HEAP[l]==__Py_NoneStruct?3:4;break;case 3:k=__str55375;j=6;a=7;break;case 4:a=__getbuffer(HEAP[l],m)<0?5:6;break;case 5:d=0;a=10;break;case 6:k=HEAP[m];j=HEAP[m+8];a=7;break;case 7:f= -HEAP[c+20];h=HEAP[c+8];f=_lstrip_helper(f,h,k,j);a=HEAP[l]!=__Py_NoneStruct?8:9;break;case 8:_PyBuffer_Release(m);a=9;break;case 9:d=_PyByteArray_FromStringAndSize(HEAP[c+20]+f,h-f);a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_rstrip(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4;c=g;a=e;HEAP[l]=__Py_NoneStruct;a=__PyArg_ParseTuple_SizeT(a,__str57377,allocate([l,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=10;break;case 2:a=HEAP[l]==__Py_NoneStruct?3:4;break;case 3:k=__str55375;j=6;a=7;break;case 4:a=__getbuffer(HEAP[l],m)<0?5:6;break;case 5:d=0;a=10;break;case 6:k=HEAP[m];j=HEAP[m+8];a=7;break;case 7:a= -HEAP[c+20];h=HEAP[c+8];f=0;h=_rstrip_helper(a,h,k,j);a=HEAP[l]!=__Py_NoneStruct?8:9;break;case 8:_PyBuffer_Release(m);a=9;break;case 9:d=_PyByteArray_FromStringAndSize(HEAP[c+20]+f,h-f);a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _bytearray_decode(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;f=b;HEAP[j]=0;HEAP[k]=0;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str58378,_kwlist_13210,allocate([j,0,0,0,k,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=5;break;case 2:c=HEAP[j]==0?3:4;break;case 3:c=_PyUnicodeUCS2_GetDefaultEncoding();HEAP[j]=c;c=4;break;case 4:h=_PyCodec_Decode(d,HEAP[j],HEAP[k]);c=5;break;case 5:return g=h,STACKTOP= -a,g;default:assert(0,"bad label: "+c)}}function _bytearray_alloc(g){return _PyInt_FromSsize_t(HEAP[g+16])} -function _bytearray_join(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t;a=g;c=e;k=HEAP[a+8];o=0;c=_PySequence_Fast(c,__str59379);b=c==0?1:2;break;case 1:j=0;b=37;break;case 2:m=HEAP[c+8];var v=c;b=(HEAP[HEAP[c+4]+84]&33554432)!=0?3:4;break;case 3:h=HEAP[v+12];b=5;break;case 4:h=v+12;b=5;break;case 5:n=h;l=0;b=15;break;case 6:r=HEAP[n+4*l];b=HEAP[r+4]!=_PyByteArray_Type?7:10;break;case 7:b=_PyType_IsSubtype(HEAP[r+4],_PyByteArray_Type)==0?8:10;break;case 8:b=(HEAP[HEAP[r+ -4]+84]&134217728)==0?9:10;break;case 9:_PyErr_Format(HEAP[_PyExc_TypeError],__str60380,allocate([l,0,0,0,HEAP[HEAP[r+4]+12],0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=34;break;case 10:b=l>0?11:12;break;case 11:o=k+o;b=12;break;case 12:o=b=o+HEAP[r+8];b=b<0?13:14;break;case 13:_PyErr_NoMemory();b=34;break;case 14:l+=1;b=15;break;case 15:b=l96&b<=102?5:6;break;case 5:a=b-87;e=7;break;case 6:a=-1;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _bytearray_fromhex(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l,m,n,o;a=__PyArg_ParseTuple_SizeT(e,__str62382,allocate([j,0,0,0,k,0,0,0],["i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=21;break;case 2:a=HEAP[k]/2|0;f=_PyByteArray_FromStringAndSize(0,a);a=f==0?3:4;break;case 3:d=0;a=21;break;case 4:a=HEAP[f+8]!=0?5:6;break;case 5:c=HEAP[f+20];a=7;break;case 6:c=__PyByteArray_empty_string;a=7;break;case 7:h=c; -l=m=0;a=14;break;case 8:l+=1;a=HEAP[HEAP[j]+l]==32?8:9;break;case 9:a=l>=HEAP[k]?16:10;break;case 10:n=_hex_digit_to_int(HEAP[HEAP[j]+l]&255);o=_hex_digit_to_int(HEAP[HEAP[j]+(l+1)]&255);a=n==-1?12:11;break;case 11:a=o==-1?12:13;break;case 12:_PyErr_Format(HEAP[_PyExc_ValueError],__str63383,allocate([l,0,0,0],["i32",0,0,0],ALLOC_STACK));a=18;break;case 13:HEAP[h+m]=(n&255)*16+(o&255);m+=1;l+=2;a=14;break;case 14:a=l0?1:5;break;case 1:a=HEAP[d];d+=1;var j=a&255;a=(HEAP[__Py_ctype_table+(a&255)*4]&1)!=0?2:3;break;case 2:HEAP[c]=HEAP[__Py_ctype_toupper+j];a=4;break;case 3:HEAP[c]=j;a=4;break;case 4:c+=1;a=5;break;case 5:h=1;a=h=0?3:7;break;case 3:a=HEAP[_PyCapsule_Type+16]!=0?4:5;break;case 4:h=HEAP[_PyCapsule_Type+16];a=6;break;case 5:h=1;a=6;break;case 6:j=_malloc(h);a=8;break;case 7:j=0;a=8;break;case 8:l=a=_PyObject_Init(j,_PyCapsule_Type);a=a==0?9:10;break;case 9:k=0;a=11;break;case 10:HEAP[l+8]=c; -HEAP[l+12]=d;HEAP[l+16]=0;HEAP[l+20]=f;k=l;a=11;break;case 11:return g=k;default:assert(0,"bad label: "+a)}}function _PyCapsule_IsValid(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=d==0?5:1;break;case 1:b=HEAP[d+4]!=_PyCapsule_Type?5:2;break;case 2:b=HEAP[d+8]==0?5:3;break;case 3:b=_name_matches(HEAP[d+12],a)==0?5:4;break;case 4:c=1;b=6;break;case 5:c=0;b=6;break;case 6:return a=c;default:assert(0,"bad label: "+b)}} -function _PyCapsule_GetPointer(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=__is_legal_capsule(d,__str1461)==0?1:2;break;case 1:c=0;b=5;break;case 2:b=_name_matches(a,HEAP[d+12])==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str2462);c=0;b=5;break;case 4:c=HEAP[d+8];b=5;break;case 5:return a=c;default:assert(0,"bad label: "+b)}} -function _PyCapsule_GetName(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=g;e=__is_legal_capsule(a,__str3463)==0?1:2;break;case 1:b=0;e=3;break;case 2:b=HEAP[a+12];e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _PyCapsule_GetDestructor(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=g;e=__is_legal_capsule(a,__str4464)==0?1:2;break;case 1:b=0;e=3;break;case 2:b=HEAP[a+20];e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _PyCapsule_GetContext(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=g;e=__is_legal_capsule(a,__str5465)==0?1:2;break;case 1:b=0;e=3;break;case 2:b=HEAP[a+16];e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _PyCapsule_SetPointer(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=a==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str6466);c=-1;b=5;break;case 2:b=__is_legal_capsule(d,__str7467)==0?3:4;break;case 3:c=-1;b=5;break;case 4:HEAP[d+8]=a;c=0;b=5;break;case 5:return a=c;default:assert(0,"bad label: "+b)}} -function _PyCapsule_SetName(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=__is_legal_capsule(d,__str8468)==0?1:2;break;case 1:c=-1;b=3;break;case 2:HEAP[d+12]=a;c=0;b=3;break;case 3:return a=c;default:assert(0,"bad label: "+b)}}function _PyCapsule_SetDestructor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=__is_legal_capsule(d,__str9469)==0?1:2;break;case 1:c=-1;b=3;break;case 2:HEAP[d+20]=a;c=0;b=3;break;case 3:return a=c;default:assert(0,"bad label: "+b)}} -function _PyCapsule_SetContext(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=__is_legal_capsule(d,__str10470)==0?1:2;break;case 1:c=-1;b=3;break;case 2:HEAP[d+16]=a;c=0;b=3;break;case 3:return a=c;default:assert(0,"bad label: "+b)}} -function _PyCapsule_Import(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;k=j=0;m=_strlen(c)+1;b=m>=0?1:4;break;case 1:b=m!=0?2:3;break;case 2:h=m;b=5;break;case 3:h=1;b=5;break;case 4:n=0;b=6;break;case 5:n=b=_malloc(h);b=b==0?6:7;break;case 6:f=0;b=30;break;case 7:_llvm_memcpy_p0i8_p0i8_i32(n,c,m,1,0);var q=n;l=q;a=7;b=20;break;case 8:o=_strchr(l,46);b=o!=0?9:10;break;case 9:HEAP[o]=0;o+=1;b=10;break;case 10:b=j==0?11:15;break;case 11:var r=l;b=d!=0?12:13;break; -case 12:var u=_PyImport_ImportModuleNoBlock(r);j=u;a=12;b=18;break;case 13:j=_PyImport_ImportModule(r);b=j==0?14:19;break;case 14:_PyErr_Format(HEAP[_PyExc_ImportError],__str11471,allocate([l,0,0,0],["i8*",0,0,0],ALLOC_STACK));var s=j,a=14;b=18;break;case 15:p=_PyObject_GetAttrString(j,l);HEAP[j]-=1;b=HEAP[j]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=17;break;case 17:var t=p;j=t;a=17;b=18;break;case 18:b=(a==12?u:a==14?s:t)==0?24:19;break;case 19:var v=o;l=v;a=19;b=20;break;case 20:b= -(a==19?v:q)!=0?8:21;break;case 21:b=_PyCapsule_IsValid(j,c)!=0?22:23;break;case 22:k=j;k=HEAP[k+8];b=24;break;case 23:_PyErr_Format(HEAP[_PyExc_AttributeError],__str12472,allocate([c,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=24;break;case 24:b=j!=0?25:27;break;case 25:HEAP[j]-=1;b=HEAP[j]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=27;break;case 27:b=n!=0?28:29;break;case 28:_free(n);b=29;break;case 29:f=k;b=30;break;case 30:return a=f;default:assert(0,"bad label: "+b)}} -function _capsule_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=b=g;e=HEAP[a+20]!=0?1:2;break;case 1:FUNCTION_TABLE[HEAP[a+20]](b);e=2;break;case 2:_free(b);return;default:assert(0,"bad label: "+e)}} -function _capsule_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[b+12]!=0?1:2;break;case 1:c=__str13473;a=HEAP[b+12];e=3;break;case 2:c=__str14474;a=__str15475;e=3;break;case 3:return g=_PyString_FromFormat(__str16476,allocate([c,0,0,0,a,0,0,0,c,0,0,0,b,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"%struct.PyCapsule*",0,0,0],ALLOC_STACK));default:assert(0,"bad label: "+e)}} -function _PyCell_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=__PyObject_GC_New(_PyCell_Type);e=c==0?1:2;break;case 1:a=0;e=7;break;case 2:HEAP[c+8]=b;e=b!=0?3:4;break;case 3:HEAP[b]+=1;e=4;break;case 4:d=c+-12;e=HEAP[d+8]!=-2?5:6;break;case 5:throw _Py_FatalError(__str478),"Reached an unreachable!";case 6:HEAP[d+8]=-3;HEAP[d]=HEAP[__PyGC_generation0];HEAP[d+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[d+4]]=d;HEAP[HEAP[__PyGC_generation0]+4]=d;a=c;e=7;break;case 7:return g=a;default:assert(0, -"bad label: "+e)}}function _PyCell_Get(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PyCell_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str1479,24);a=0;e=5;break;case 2:e=HEAP[b+8]!=0?3:4;break;case 3:HEAP[HEAP[b+8]]+=1;e=4;break;case 4:a=HEAP[b+8];e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _PyCell_Set(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[a+4]!=_PyCell_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str1479,36);d=-1;b=8;break;case 2:f=HEAP[a+8];b=c!=0?3:4;break;case 3:HEAP[c]+=1;b=4;break;case 4:HEAP[a+8]=c;b=f!=0?5:7;break;case 5:HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:d=0;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _cell_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}} -function _cell_compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str2480,1)<0?2:3;break;case 2:d=-2;b=10;break;case 3:var f=HEAP[c+8]==0;b=HEAP[a+8]==0?4:7;break;case 4:b=f?5:6;break;case 5:d=0;b=10;break;case 6:d=-1;b=10;break;case 7:b=f?8:9;break;case 8:d=1;b=10;break;case 9:d=_PyObject_Compare(HEAP[a+8],HEAP[c+8]);b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _cell_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+8]==0?1:2;break;case 1:a=_PyString_FromFormat(__str3481,allocate([c,0,0,0],["%struct.PyCellObject*",0,0,0],ALLOC_STACK));e=3;break;case 2:a=_PyString_FromFormat(__str4482,allocate([b,0,0,0,HEAP[HEAP[HEAP[b+8]+4]+12],0,0,0,HEAP[c+8],0,0,0],["%struct.PyCellObject*",0,0,0,"i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _cell_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+8],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=0;a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _cell_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:a=HEAP[b+8];HEAP[b+8]=0;HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:return 0;default:assert(0,"bad label: "+e)}} -function _cell_get_contents(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str5483);a=0;e=3;break;case 2:HEAP[HEAP[b+8]]+=1;a=HEAP[b+8];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _PyEval_GetCallStats(){HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct} -function _PyEval_SaveThread(){var g;for(g=-1;;)switch(g){case -1:var e;e=_PyThreadState_Swap(0);g=e==0?1:2;break;case 1:throw _Py_FatalError(__str486),"Reached an unreachable!";case 2:return g=e;default:assert(0,"bad label: "+g)}}function _PyEval_RestoreThread(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b==0?1:2;break;case 1:throw _Py_FatalError(__str1487),"Reached an unreachable!";case 2:_PyThreadState_Swap(b);return;default:assert(0,"bad label: "+e)}} -function _Py_AddPendingCall(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[_busy_8528]!=0?1:2;break;case 1:d=-1;b=5;break;case 2:HEAP[_busy_8528]=1;f=HEAP[_pendinglast];h=(f+1)%32;b=h==HEAP[_pendingfirst]?3:4;break;case 3:HEAP[_busy_8528]=0;d=-1;b=5;break;case 4:HEAP[_pendingcalls+f*8]=a;HEAP[_pendingcalls+f*8+4]=c;HEAP[_pendinglast]=h;HEAP[__Py_Ticker]=0;HEAP[_pendingcalls_to_do]=1;d=HEAP[_busy_8528]=0;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _Py_MakePendingCalls(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;g=HEAP[_busy_8545_b]!=0?1:2;break;case 1:e=0;g=7;break;case 2:HEAP[_busy_8545_b]=1;HEAP[_pendingcalls_to_do]=0;g=3;break;case 3:b=HEAP[_pendingfirst];g=b==HEAP[_pendinglast]?6:4;break;case 4:g=HEAP[_pendingcalls+b*8];a=HEAP[_pendingcalls+b*8+4];HEAP[_pendingfirst]=(b+1)%32;g=FUNCTION_TABLE[g](a)<0?5:3;break;case 5:HEAP[_busy_8545_b]=0;HEAP[_pendingcalls_to_do]=1;e=-1;g=7;break;case 6:e=HEAP[_busy_8545_b]=0;g=7;break;case 7:return e; -default:assert(0,"bad label: "+g)}}function _Py_GetRecursionLimit(){return HEAP[_recursion_limit]}function _Py_SetRecursionLimit(g){HEAP[_recursion_limit]=g;HEAP[__Py_CheckRecursionLimit]=HEAP[_recursion_limit]} -function __Py_CheckRecursiveCall(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[__PyThreadState_Current];e=HEAP[c+12]>HEAP[_recursion_limit]?1:2;break;case 1:HEAP[c+12]-=1;_PyErr_Format(HEAP[_PyExc_RuntimeError],__str2489,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=-1;e=3;break;case 2:HEAP[__Py_CheckRecursionLimit]=HEAP[_recursion_limit];a=0;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyEval_EvalCode(g,e,b){return _PyEval_EvalCodeEx(g,e,b,0,0,0,0,0,0,0)}function _PyEval_EvalFrame(g){return _PyEval_EvalFrameEx(g,0)} -function _PyEval_EvalFrameEx(g,e){var b=STACKTOP;STACKTOP+=32;_memset(b,0,32);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E=b,D=b+4,R=b+8,M,L,I,J,F,V,Q,Z,K,N,H,ba,W,B,Y,fa,ha,la,ra,ya,Da,Ua,Na,Pa,wa,Ya,Ha=b+12,ta,Va,Ia,Wa,ia,Ba,Xa=b+16,Ta,Ea,Ga=b+20,ka=b+24,Fa=b+28;d=g;f=e;C=x=0;A=HEAP[__PyThreadState_Current];HEAP[E]=-1;HEAP[D]=0;HEAP[R]=-1;a=d==0?1:2;break;case 1:l=0;a=830;break;case 2:a=HEAP[__PyThreadState_Current];HEAP[a+12]+=1;a=HEAP[a+12]>HEAP[__Py_CheckRecursionLimit]? -3:5;break;case 3:a=__Py_CheckRecursiveCall(__str3490)!=0?4:5;break;case 4:l=0;a=830;break;case 5:HEAP[A+8]=d;a=HEAP[A+20]!=0?6:10;break;case 6:a=HEAP[A+28]!=0?7:8;break;case 7:a=_call_trace_protected(HEAP[A+28],HEAP[A+36],d,0,__Py_NoneStruct)!=0?829:8;break;case 8:a=HEAP[A+24]!=0?9:10;break;case 9:a=_call_trace_protected(HEAP[A+24],HEAP[A+32],d,0,__Py_NoneStruct)!=0?829:10;break;case 10:G=HEAP[d+16];L=HEAP[G+32];I=HEAP[G+28];y=d+312;z=d+312+4*HEAP[G+12];M=HEAP[G+24]+20;n=M+HEAP[d+60]+1;m=HEAP[d+36]; -HEAP[d+36]=0;q=1;r=0;u=__Py_NoneStruct;t=0;a=f!=0?11:12;break;case 11:q=2;c=11;a=755;break;case 12:HEAP[__Py_Ticker]-=1;a=HEAP[__Py_Ticker]<0?13:19;break;case 13:a=reSign(HEAP[n],8,1)==122?19:14;break;case 14:HEAP[__Py_Ticker]=HEAP[__Py_CheckInterval];HEAP[A+68]+=1;a=HEAP[_pendingcalls_to_do]!=0?15:19;break;case 15:a=_Py_MakePendingCalls()<0?16:17;break;case 16:q=2;c=16;a=755;break;case 17:a=HEAP[_pendingcalls_to_do]!=0?18:19;break;case 18:HEAP[__Py_Ticker]=0;a=19;break;case 19:HEAP[d+60]=n-M;a=HEAP[__Py_TracingPossible]!= -0?20:25;break;case 20:a=HEAP[A+28]!=0?21:25;break;case 21:a=HEAP[A+16]==0?22:25;break;case 22:HEAP[d+36]=m;r=_maybe_call_line_trace(HEAP[A+28],HEAP[A+36],d,D,E,R);n=M+HEAP[d+60];a=HEAP[d+36]!=0?23:24;break;case 23:m=HEAP[d+36];HEAP[d+36]=0;a=24;break;case 24:a=r!=0?754:25;break;case 25:o=a=HEAP[n];n+=1;p=0;a=a>89?26:27;break;case 26:n+=2;p=HEAP[n+-2]+HEAP[n+-1]*256;a=27;break;case 27:a=o;a=a==1?36:a==2?38:a==3?39:a==4?41:a==5?40:a==9?19:a==10?47:a==11?50:a==12?53:a==13?60:a==15?63:a==19?66:a==20? -71:a==21?76:a==22?92:a==23?100:a==24?114:a==25?125:a==26?87:a==27?82:a==28?191:a==29?186:a==30?251:a==31?251:a==32?251:a==33?251:a==40?266:a==41?266:a==42?266:a==43?266:a==50?283:a==51?283:a==52?283:a==53?283:a==54?517:a==55?201:a==56?215:a==57?175:a==58?180:a==59?196:a==60?298:a==61?305:a==62?137:a==63?142:a==64?147:a==65?152:a==66?157:a==67?170:a==68?636:a==70?310:a==71?327:a==72?362:a==73?326:a==74?361:a==75?226:a==76?231:a==77?236:a==78?241:a==79?246:a==80?651:a==81?665:a==82?380:a==83?383:a== -84?579:a==85?385:a==86?384:a==87?391:a==88?396:a==89?408:a==90?414:a==91?422:a==92?427:a==93?642:a==94?162:a==95?442:a==96?447:a==97?449:a==98?452:a==99?42:a==100?31:a==101?454:a==102?497:a==103?501:a==104?505:a==105?516:a==106?528:a==107?531:a==108?554:a==109?584:a==110?585:a==111?613:a==112?624:a==113?635:a==114?587:a==115?601:a==116?469:a==119?652:a==120?655:a==121?655:a==122?655:a==124?28:a==125?33:a==126?483:a==130?374:a==131?690:a==132?708:a==133?741:a==134?721:a==135?488:a==136?489:a==137? -495:a==140?691:a==141?691:a==142?691:a==143?656:a==145?752:a==146?166:a==147?522:753;break;case 28:u=HEAP[y+4*p];a=u!=0?29:30;break;case 29:HEAP[u]+=1;HEAP[m]=u;m+=4;a=19;break;case 30:a=_PyTuple_GetItem(HEAP[G+36],p);_format_exc_check_arg(HEAP[_PyExc_UnboundLocalError],__str4491,a);a=754;break;case 31:u=HEAP[I+12+p*4];HEAP[u]+=1;HEAP[m]=u;m+=4;a=19;break;case 32:p=HEAP[n+1]+HEAP[xb+2]*256;n+=3;a=33;break;case 33:m+=-4;s=HEAP[m];J=HEAP[y+4*p];HEAP[y+4*p]=s;a=J!=0?34:19;break;case 34:HEAP[J]-=1;a= -HEAP[J]==0?35:19;break;case 35:FUNCTION_TABLE[HEAP[HEAP[J+4]+24]](J);a=19;break;case 36:m+=-4;s=HEAP[m];HEAP[s]-=1;a=HEAP[s]==0?37:19;break;case 37:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=19;break;case 38:s=HEAP[m+-4];t=HEAP[m+-8];HEAP[m+-4]=t;HEAP[m+-8]=s;a=19;break;case 39:s=HEAP[m+-4];t=HEAP[m+-8];u=HEAP[m+-12];HEAP[m+-4]=t;HEAP[m+-8]=u;HEAP[m+-12]=s;a=19;break;case 40:v=HEAP[m+-4];s=HEAP[m+-8];t=HEAP[m+-12];u=HEAP[m+-16];HEAP[m+-4]=s;HEAP[m+-8]=t;HEAP[m+-12]=u;HEAP[m+-16]=v;a=19;break;case 41:s= -HEAP[m+-4];HEAP[s]+=1;HEAP[m]=s;m+=4;a=19;break;case 42:a=p==2?43:44;break;case 43:u=HEAP[m+-4];HEAP[u]+=1;t=HEAP[m+-8];HEAP[t]+=1;m+=8;HEAP[m+-4]=u;HEAP[m+-8]=t;a=19;break;case 44:a=p==3?45:46;break;case 45:u=HEAP[m+-4];HEAP[u]+=1;t=HEAP[m+-8];HEAP[t]+=1;s=HEAP[m+-12];HEAP[s]+=1;m+=12;HEAP[m+-4]=u;HEAP[m+-8]=t;HEAP[m+-12]=s;a=19;break;case 46:throw _Py_FatalError(__str5492),"Reached an unreachable!";case 47:s=HEAP[m+-4];u=_PyNumber_Positive(s);HEAP[s]-=1;a=HEAP[s]==0?48:49;break;case 48:FUNCTION_TABLE[HEAP[HEAP[s+ -4]+24]](s);a=49;break;case 49:HEAP[m+-4]=u;a=u!=0?12:754;break;case 50:s=HEAP[m+-4];u=_PyNumber_Negative(s);HEAP[s]-=1;a=HEAP[s]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=52;break;case 52:HEAP[m+-4]=u;a=u!=0?12:754;break;case 53:s=HEAP[m+-4];r=_PyObject_IsTrue(s);HEAP[s]-=1;a=HEAP[s]==0?54:55;break;case 54:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=55;break;case 55:a=r==0?56:57;break;case 56:HEAP[__Py_TrueStruct]+=1;HEAP[m+-4]=__Py_TrueStruct;a=12;break;case 57:a=r>0?58:59;break; -case 58:HEAP[__Py_ZeroStruct]+=1;HEAP[m+-4]=__Py_ZeroStruct;r=0;a=12;break;case 59:m+=-4;a=754;break;case 60:s=HEAP[m+-4];u=_PyObject_Repr(s);HEAP[s]-=1;a=HEAP[s]==0?61:62;break;case 61:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=62;break;case 62:HEAP[m+-4]=u;a=u!=0?12:754;break;case 63:s=HEAP[m+-4];u=_PyNumber_Invert(s);HEAP[s]-=1;a=HEAP[s]==0?64:65;break;case 64:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=65;break;case 65:HEAP[m+-4]=u;a=u!=0?12:754;break;case 66:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Power(s, -t,__Py_NoneStruct);HEAP[s]-=1;a=HEAP[s]==0?67:68;break;case 67:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=68;break;case 68:HEAP[t]-=1;a=HEAP[t]==0?69:70;break;case 69:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=70;break;case 70:HEAP[m+-4]=u;a=u!=0?12:754;break;case 71:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Multiply(s,t);HEAP[s]-=1;a=HEAP[s]==0?72:73;break;case 72:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=73;break;case 73:HEAP[t]-=1;a=HEAP[t]==0?74:75;break;case 74:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a= -75;break;case 75:HEAP[m+-4]=u;a=u!=0?12:754;break;case 76:a=HEAP[__Py_QnewFlag]==0?77:82;break;case 77:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Divide(s,t);HEAP[s]-=1;a=HEAP[s]==0?78:79;break;case 78:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=79;break;case 79:HEAP[t]-=1;a=HEAP[t]==0?80:81;break;case 80:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=81;break;case 81:HEAP[m+-4]=u;a=u!=0?12:754;break;case 82:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_TrueDivide(s,t);HEAP[s]-=1;a=HEAP[s]==0?83:84;break;case 83:FUNCTION_TABLE[HEAP[HEAP[s+ -4]+24]](s);a=84;break;case 84:HEAP[t]-=1;a=HEAP[t]==0?85:86;break;case 85:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=86;break;case 86:HEAP[m+-4]=u;a=u!=0?12:754;break;case 87:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_FloorDivide(s,t);HEAP[s]-=1;a=HEAP[s]==0?88:89;break;case 88:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=89;break;case 89:HEAP[t]-=1;a=HEAP[t]==0?90:91;break;case 90:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=91;break;case 91:HEAP[m+-4]=u;a=u!=0?12:754;break;case 92:m+=-4;t=HEAP[m];var ma=s=HEAP[m+ --4],La=t;a=HEAP[s+4]==_PyString_Type?93:94;break;case 93:u=_PyString_Format(ma,La);a=95;break;case 94:u=_PyNumber_Remainder(ma,La);a=95;break;case 95:HEAP[s]-=1;a=HEAP[s]==0?96:97;break;case 96:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=97;break;case 97:HEAP[t]-=1;a=HEAP[t]==0?98:99;break;case 98:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=99;break;case 99:HEAP[m+-4]=u;a=u!=0?12:754;break;case 100:m+=-4;t=HEAP[m];s=HEAP[m+-4];a=HEAP[s+4]!=_PyInt_Type?105:101;break;case 101:a=HEAP[t+4]!=_PyInt_Type?105:102; -break;case 102:a=HEAP[s+8];F=HEAP[t+8];V=F+a;a=(a^V)<0?103:104;break;case 103:a=(F^V)<0?108:104;break;case 104:u=_PyInt_FromLong(V);a=109;break;case 105:a=HEAP[s+4]!=_PyString_Type?108:106;break;case 106:a=HEAP[t+4]!=_PyString_Type?108:107;break;case 107:u=_string_concatenate(s,t,d,n);a=111;break;case 108:u=_PyNumber_Add(s,t);a=109;break;case 109:HEAP[s]-=1;a=HEAP[s]==0?110:111;break;case 110:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=111;break;case 111:HEAP[t]-=1;a=HEAP[t]==0?112:113;break;case 112:FUNCTION_TABLE[HEAP[HEAP[t+ -4]+24]](t);a=113;break;case 113:HEAP[m+-4]=u;a=u!=0?12:754;break;case 114:m+=-4;t=HEAP[m];s=HEAP[m+-4];a=HEAP[s+4]!=_PyInt_Type?119:115;break;case 115:a=HEAP[t+4]!=_PyInt_Type?119:116;break;case 116:a=HEAP[s+8];Q=HEAP[t+8];Z=a-Q;a=(a^Z)<0?117:118;break;case 117:a=(Q^-1^Z)<0?119:118;break;case 118:u=_PyInt_FromLong(Z);a=120;break;case 119:u=_PyNumber_Subtract(s,t);a=120;break;case 120:HEAP[s]-=1;a=HEAP[s]==0?121:122;break;case 121:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=122;break;case 122:HEAP[t]-= -1;a=HEAP[t]==0?123:124;break;case 123:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=124;break;case 124:HEAP[m+-4]=u;a=u!=0?12:754;break;case 125:m+=-4;t=HEAP[m];s=HEAP[m+-4];a=HEAP[s+4]!=_PyList_Type?131:126;break;case 126:a=HEAP[t+4]!=_PyInt_Type?131:127;break;case 127:K=_PyInt_AsSsize_t(t);a=K<0?128:129;break;case 128:K=a=K+HEAP[s+8];a=a<0?131:129;break;case 129:a=HEAP[s+8]<=K?131:130;break;case 130:u=HEAP[HEAP[s+12]+4*K];HEAP[u]+=1;a=132;break;case 131:u=_PyObject_GetItem(s,t);a=132;break;case 132:HEAP[s]-= -1;a=HEAP[s]==0?133:134;break;case 133:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=134;break;case 134:HEAP[t]-=1;a=HEAP[t]==0?135:136;break;case 135:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=136;break;case 136:HEAP[m+-4]=u;a=u!=0?12:754;break;case 137:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Lshift(s,t);HEAP[s]-=1;a=HEAP[s]==0?138:139;break;case 138:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=139;break;case 139:HEAP[t]-=1;a=HEAP[t]==0?140:141;break;case 140:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=141;break; -case 141:HEAP[m+-4]=u;a=u!=0?12:754;break;case 142:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Rshift(s,t);HEAP[s]-=1;a=HEAP[s]==0?143:144;break;case 143:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=144;break;case 144:HEAP[t]-=1;a=HEAP[t]==0?145:146;break;case 145:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=146;break;case 146:HEAP[m+-4]=u;a=u!=0?12:754;break;case 147:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_And(s,t);HEAP[s]-=1;a=HEAP[s]==0?148:149;break;case 148:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=149;break; -case 149:HEAP[t]-=1;a=HEAP[t]==0?150:151;break;case 150:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=151;break;case 151:HEAP[m+-4]=u;a=u!=0?12:754;break;case 152:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Xor(s,t);HEAP[s]-=1;a=HEAP[s]==0?153:154;break;case 153:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=154;break;case 154:HEAP[t]-=1;a=HEAP[t]==0?155:156;break;case 155:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=156;break;case 156:HEAP[m+-4]=u;a=u!=0?12:754;break;case 157:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_Or(s, -t);HEAP[s]-=1;a=HEAP[s]==0?158:159;break;case 158:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=159;break;case 159:HEAP[t]-=1;a=HEAP[t]==0?160:161;break;case 160:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=161;break;case 161:HEAP[m+-4]=u;a=u!=0?12:754;break;case 162:m+=-4;t=HEAP[m];s=HEAP[m+4*(0-p)];r=_PyList_Append(s,t);HEAP[t]-=1;a=HEAP[t]==0?163:164;break;case 163:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=164;break;case 164:a=r==0?165:754;break;case 165:a=HEAP[n]==113?634:12;break;case 166:m+=-4;t=HEAP[m]; -s=HEAP[m+4*(0-p)];r=_PySet_Add(s,t);HEAP[t]-=1;a=HEAP[t]==0?167:168;break;case 167:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=168;break;case 168:a=r==0?169:754;break;case 169:a=HEAP[n]==113?634:12;break;case 170:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlacePower(s,t,__Py_NoneStruct);HEAP[s]-=1;a=HEAP[s]==0?171:172;break;case 171:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=172;break;case 172:HEAP[t]-=1;a=HEAP[t]==0?173:174;break;case 173:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=174;break;case 174:HEAP[m+ --4]=u;a=u!=0?12:754;break;case 175:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceMultiply(s,t);HEAP[s]-=1;a=HEAP[s]==0?176:177;break;case 176:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=177;break;case 177:HEAP[t]-=1;a=HEAP[t]==0?178:179;break;case 178:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=179;break;case 179:HEAP[m+-4]=u;a=u!=0?12:754;break;case 180:a=HEAP[__Py_QnewFlag]==0?181:186;break;case 181:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceDivide(s,t);HEAP[s]-=1;a=HEAP[s]==0?182:183;break;case 182:FUNCTION_TABLE[HEAP[HEAP[s+ -4]+24]](s);a=183;break;case 183:HEAP[t]-=1;a=HEAP[t]==0?184:185;break;case 184:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=185;break;case 185:HEAP[m+-4]=u;a=u!=0?12:754;break;case 186:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceTrueDivide(s,t);HEAP[s]-=1;a=HEAP[s]==0?187:188;break;case 187:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=188;break;case 188:HEAP[t]-=1;a=HEAP[t]==0?189:190;break;case 189:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=190;break;case 190:HEAP[m+-4]=u;a=u!=0?12:754;break;case 191:m+= --4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceFloorDivide(s,t);HEAP[s]-=1;a=HEAP[s]==0?192:193;break;case 192:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=193;break;case 193:HEAP[t]-=1;a=HEAP[t]==0?194:195;break;case 194:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=195;break;case 195:HEAP[m+-4]=u;a=u!=0?12:754;break;case 196:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceRemainder(s,t);HEAP[s]-=1;a=HEAP[s]==0?197:198;break;case 197:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=198;break;case 198:HEAP[t]-=1;a=HEAP[t]== -0?199:200;break;case 199:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=200;break;case 200:HEAP[m+-4]=u;a=u!=0?12:754;break;case 201:m+=-4;t=HEAP[m];s=HEAP[m+-4];a=HEAP[s+4]!=_PyInt_Type?206:202;break;case 202:a=HEAP[t+4]!=_PyInt_Type?206:203;break;case 203:a=HEAP[s+8];N=HEAP[t+8];H=N+a;a=(a^H)<0?204:205;break;case 204:a=(N^H)<0?209:205;break;case 205:u=_PyInt_FromLong(H);a=210;break;case 206:a=HEAP[s+4]!=_PyString_Type?209:207;break;case 207:a=HEAP[t+4]!=_PyString_Type?209:208;break;case 208:u=_string_concatenate(s, -t,d,n);a=212;break;case 209:u=_PyNumber_InPlaceAdd(s,t);a=210;break;case 210:HEAP[s]-=1;a=HEAP[s]==0?211:212;break;case 211:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=212;break;case 212:HEAP[t]-=1;a=HEAP[t]==0?213:214;break;case 213:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=214;break;case 214:HEAP[m+-4]=u;a=u!=0?12:754;break;case 215:m+=-4;t=HEAP[m];s=HEAP[m+-4];a=HEAP[s+4]!=_PyInt_Type?220:216;break;case 216:a=HEAP[t+4]!=_PyInt_Type?220:217;break;case 217:a=HEAP[s+8];ba=HEAP[t+8];W=a-ba;a=(a^W)<0?218: -219;break;case 218:a=(ba^-1^W)<0?220:219;break;case 219:u=_PyInt_FromLong(W);a=221;break;case 220:u=_PyNumber_InPlaceSubtract(s,t);a=221;break;case 221:HEAP[s]-=1;a=HEAP[s]==0?222:223;break;case 222:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=223;break;case 223:HEAP[t]-=1;a=HEAP[t]==0?224:225;break;case 224:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=225;break;case 225:HEAP[m+-4]=u;a=u!=0?12:754;break;case 226:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceLshift(s,t);HEAP[s]-=1;a=HEAP[s]==0?227:228;break; -case 227:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=228;break;case 228:HEAP[t]-=1;a=HEAP[t]==0?229:230;break;case 229:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=230;break;case 230:HEAP[m+-4]=u;a=u!=0?12:754;break;case 231:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceRshift(s,t);HEAP[s]-=1;a=HEAP[s]==0?232:233;break;case 232:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=233;break;case 233:HEAP[t]-=1;a=HEAP[t]==0?234:235;break;case 234:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=235;break;case 235:HEAP[m+-4]=u; -a=u!=0?12:754;break;case 236:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceAnd(s,t);HEAP[s]-=1;a=HEAP[s]==0?237:238;break;case 237:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=238;break;case 238:HEAP[t]-=1;a=HEAP[t]==0?239:240;break;case 239:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=240;break;case 240:HEAP[m+-4]=u;a=u!=0?12:754;break;case 241:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceXor(s,t);HEAP[s]-=1;a=HEAP[s]==0?242:243;break;case 242:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=243;break;case 243:HEAP[t]-= -1;a=HEAP[t]==0?244:245;break;case 244:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=245;break;case 245:HEAP[m+-4]=u;a=u!=0?12:754;break;case 246:m+=-4;t=HEAP[m];s=HEAP[m+-4];u=_PyNumber_InPlaceOr(s,t);HEAP[s]-=1;a=HEAP[s]==0?247:248;break;case 247:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=248;break;case 248:HEAP[t]-=1;a=HEAP[t]==0?249:250;break;case 249:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=250;break;case 250:HEAP[m+-4]=u;a=u!=0?12:754;break;case 251:a=(o-30&2)!=0?252:253;break;case 252:m+=-4;t=HEAP[m]; -a=254;break;case 253:t=0;a=254;break;case 254:a=(o-30&1)!=0?255:256;break;case 255:m+=-4;s=HEAP[m];a=257;break;case 256:s=0;a=257;break;case 257:v=HEAP[m+-4];u=_apply_slice(v,s,t);HEAP[v]-=1;a=HEAP[v]==0?258:259;break;case 258:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=259;break;case 259:a=s!=0?260:262;break;case 260:HEAP[s]-=1;a=HEAP[s]==0?261:262;break;case 261:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=262;break;case 262:a=t!=0?263:265;break;case 263:HEAP[t]-=1;a=HEAP[t]==0?264:265;break;case 264:FUNCTION_TABLE[HEAP[HEAP[t+ -4]+24]](t);a=265;break;case 265:HEAP[m+-4]=u;a=u!=0?12:754;break;case 266:a=(o-40&2)!=0?267:268;break;case 267:m+=-4;t=HEAP[m];a=269;break;case 268:t=0;a=269;break;case 269:a=(o-40&1)!=0?270:271;break;case 270:m+=-4;s=HEAP[m];a=272;break;case 271:s=0;a=272;break;case 272:m+=-4;v=HEAP[m];m+=-4;w=HEAP[m];r=_assign_slice(v,s,t,w);HEAP[w]-=1;a=HEAP[w]==0?273:274;break;case 273:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);a=274;break;case 274:HEAP[v]-=1;a=HEAP[v]==0?275:276;break;case 275:FUNCTION_TABLE[HEAP[HEAP[v+ -4]+24]](v);a=276;break;case 276:a=s!=0?277:279;break;case 277:HEAP[s]-=1;a=HEAP[s]==0?278:279;break;case 278:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=279;break;case 279:a=t!=0?280:282;break;case 280:HEAP[t]-=1;a=HEAP[t]==0?281:282;break;case 281:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=282;break;case 282:a=r==0?12:754;break;case 283:a=(o-50&2)!=0?284:285;break;case 284:m+=-4;t=HEAP[m];a=286;break;case 285:t=0;a=286;break;case 286:a=(o-50&1)!=0?287:288;break;case 287:m+=-4;s=HEAP[m];a=289;break;case 288:s= -0;a=289;break;case 289:m+=-4;v=HEAP[m];r=_assign_slice(v,s,t,0);HEAP[v]-=1;a=HEAP[v]==0?290:291;break;case 290:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=291;break;case 291:a=s!=0?292:294;break;case 292:HEAP[s]-=1;a=HEAP[s]==0?293:294;break;case 293:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=294;break;case 294:a=t!=0?295:297;break;case 295:HEAP[t]-=1;a=HEAP[t]==0?296:297;break;case 296:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=297;break;case 297:a=r==0?12:754;break;case 298:t=HEAP[m+-4];s=HEAP[m+-8];v=HEAP[m+ --12];m+=-12;r=_PyObject_SetItem(s,t,v);HEAP[v]-=1;a=HEAP[v]==0?299:300;break;case 299:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=300;break;case 300:HEAP[s]-=1;a=HEAP[s]==0?301:302;break;case 301:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=302;break;case 302:HEAP[t]-=1;a=HEAP[t]==0?303:304;break;case 303:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=304;break;case 304:a=r==0?12:754;break;case 305:t=HEAP[m+-4];s=HEAP[m+-8];m+=-8;r=_PyObject_DelItem(s,t);HEAP[s]-=1;a=HEAP[s]==0?306:307;break;case 306:FUNCTION_TABLE[HEAP[HEAP[s+ -4]+24]](s);a=307;break;case 307:HEAP[t]-=1;a=HEAP[t]==0?308:309;break;case 308:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=309;break;case 309:a=r==0?12:754;break;case 310:m+=-4;s=HEAP[m];t=_PySys_GetObject(__str6493);a=t==0?311:312;break;case 311:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str7494);r=-1;u=0;a=321;break;case 312:a=r==0?313:321;break;case 313:u=_PyTuple_Pack(1,allocate([s,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));a=u==0?314:315;break;case 314:r=-1;a=321;break;case 315:a=r== -0?316:321;break;case 316:t=_PyEval_CallObjectWithKeywords(t,u,0);a=t!=0?317:320;break;case 317:HEAP[t]-=1;var Za=t;HEAP[Za]==0?(c=317,a=318):(c=317,a=319);break;case 318:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);var Ka=t,c=318;a=319;break;case 319:a=(c==318?Ka:Za)==0?320:321;break;case 320:r=-1;a=321;break;case 321:HEAP[s]-=1;a=HEAP[s]==0?322:323;break;case 322:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=323;break;case 323:a=u!=0?324:754;break;case 324:HEAP[u]-=1;a=HEAP[u]==0?325:754;break;case 325:FUNCTION_TABLE[HEAP[HEAP[u+ -4]+24]](u);a=754;break;case 326:m+=-4;t=x=HEAP[m];a=327;break;case 327:m+=-4;s=HEAP[m];a=x==0|x==__Py_NoneStruct?328:330;break;case 328:t=_PySys_GetObject(__str8495);a=t==0?329:331;break;case 329:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str9496);r=-1;a=330;break;case 330:a=t!=0?331:334;break;case 331:HEAP[t]+=1;a=t!=0?332:334;break;case 332:a=_PyFile_SoftSpace(t,0)!=0?333:334;break;case 333:var Ra=_PyFile_WriteString(__str10497,t);r=Ra;c=333;a=335;break;case 334:var $a=r,c=334;a=335;break;case 335:a= -(c==334?$a:Ra)==0?336:337;break;case 336:var Ja=_PyFile_WriteObject(s,t,1);r=Ja;c=336;a=338;break;case 337:var ja=r,c=337;a=338;break;case 338:a=(c==337?ja:Ja)==0?339:352;break;case 339:var ua=s;a=(HEAP[HEAP[s+4]+84]&134217728)!=0?340:344;break;case 340:B=ua+20;Y=HEAP[s+8];a=Y==0?343:341;break;case 341:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[B+(Y-1)]]&8192)==0?343:342;break;case 342:a=HEAP[B+(Y-1)]==32?343:352;break;case 343:_PyFile_SoftSpace(t,1);a=352;break;case 344:a=(HEAP[HEAP[ua+4]+84]&268435456)!= -0?345:351;break;case 345:fa=HEAP[s+12];ha=HEAP[s+8];a=ha==0?350:346;break;case 346:var bb=HEAP[fa+2*(ha-1)];a=HEAP[fa+2*(ha-1)]<=127?347:348;break;case 347:a=HEAP[__Py_ascii_whitespace+bb]==0?350:349;break;case 348:a=__PyUnicodeUCS2_IsWhitespace(bb&65535)==0?350:349;break;case 349:a=HEAP[fa+2*(ha-1)]==32?350:352;break;case 350:_PyFile_SoftSpace(t,1);a=352;break;case 351:_PyFile_SoftSpace(t,1);a=352;break;case 352:a=t!=0?353:355;break;case 353:HEAP[t]-=1;a=HEAP[t]==0?354:355;break;case 354:FUNCTION_TABLE[HEAP[HEAP[t+ -4]+24]](t);a=355;break;case 355:HEAP[s]-=1;a=HEAP[s]==0?356:357;break;case 356:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=357;break;case 357:a=x!=0?358:360;break;case 358:HEAP[x]-=1;a=HEAP[x]==0?359:360;break;case 359:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);a=360;break;case 360:x=0;a=r==0?12:754;break;case 361:m+=-4;t=x=HEAP[m];a=362;break;case 362:a=x==0|x==__Py_NoneStruct?363:365;break;case 363:t=_PySys_GetObject(__str8495);a=t==0?364:366;break;case 364:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str9496); -q=2;a=365;break;case 365:a=t!=0?366:370;break;case 366:HEAP[t]+=1;r=a=_PyFile_WriteString(__str11498,t);a=a==0?367:368;break;case 367:_PyFile_SoftSpace(t,0);a=368;break;case 368:HEAP[t]-=1;a=HEAP[t]==0?369:370;break;case 369:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=370;break;case 370:a=x!=0?371:373;break;case 371:HEAP[x]-=1;a=HEAP[x]==0?372:373;break;case 372:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);a=373;break;case 373:x=0;a=754;break;case 374:v=s=t=0;a=p;a=a==0?378:a==1?377:a==2?376:a==3?375:379;break; -case 375:m+=-4;v=HEAP[m];a=376;break;case 376:m+=-4;s=HEAP[m];a=377;break;case 377:m+=-4;t=HEAP[m];a=378;break;case 378:var qa=_do_raise(t,s,v);q=qa;c=378;a=755;break;case 379:_PyErr_SetString(HEAP[_PyExc_SystemError],__str12499);q=2;c=379;a=755;break;case 380:u=HEAP[d+28];a=u!=0?381:382;break;case 381:HEAP[u]+=1;HEAP[m]=u;m+=4;a=12;break;case 382:_PyErr_SetString(HEAP[_PyExc_SystemError],__str13500);a=754;break;case 383:m+=-4;C=HEAP[m];q=8;c=383;a=799;break;case 384:m+=-4;C=HEAP[m];HEAP[d+36]=m; -q=64;a=809;break;case 385:t=HEAP[m+-4];s=HEAP[m+-8];v=HEAP[m+-12];m+=-12;r=_exec_statement(d,v,s,t);HEAP[v]-=1;a=HEAP[v]==0?386:387;break;case 386:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=387;break;case 387:HEAP[s]-=1;a=HEAP[s]==0?388:389;break;case 388:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=389;break;case 389:HEAP[t]-=1;a=HEAP[t]==0?390:754;break;case 390:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=754;break;case 391:la=_PyFrame_BlockPop(d);a=((m-HEAP[d+32])/4|0)>HEAP[la+8]?392:12;break;case 392:m+= --4;s=HEAP[m];HEAP[s]-=1;a=HEAP[s]==0?394:393;break;case 393:a=((m-HEAP[d+32])/4|0)>HEAP[la+8]?392:12;break;case 394:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=393;break;case 395:n+=1;a=396;break;case 396:m+=-4;var P=s=HEAP[m];a=(HEAP[HEAP[s+4]+84]&8388608)!=0?397:399;break;case 397:q=HEAP[P+8];a=q==8|q==32?398:406;break;case 398:m+=-4;C=HEAP[m];a=406;break;case 399:a=HEAP[P+4]==_PyClass_Type?403:400;break;case 400:a=HEAP[HEAP[s+4]+84]>=0?402:401;break;case 401:a=(HEAP[s+84]&1073741824)!=0?403:402;break; -case 402:a=(HEAP[HEAP[s+4]+84]&134217728)!=0?403:404;break;case 403:m+=-4;t=HEAP[m];m+=-4;v=HEAP[m];_PyErr_Restore(s,t,v);q=4;c=403;a=755;break;case 404:a=s!=__Py_NoneStruct?405:406;break;case 405:_PyErr_SetString(HEAP[_PyExc_SystemError],__str14501);q=2;a=406;break;case 406:HEAP[s]-=1;a=HEAP[s]==0?407:754;break;case 407:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=754;break;case 408:v=HEAP[m+-4];s=HEAP[m+-8];t=HEAP[m+-12];m+=-8;u=_build_class(v,s,t);HEAP[m+-4]=u;HEAP[v]-=1;a=HEAP[v]==0?409:410;break; -case 409:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=410;break;case 410:HEAP[s]-=1;a=HEAP[s]==0?411:412;break;case 411:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=412;break;case 412:HEAP[t]-=1;a=HEAP[t]==0?413:754;break;case 413:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=754;break;case 414:t=HEAP[L+12+p*4];m+=-4;s=HEAP[m];u=HEAP[d+28];a=u!=0?415:421;break;case 415:var hb=u,Qa=t,mb=s;a=HEAP[u+4]==_PyDict_Type?416:417;break;case 416:r=_PyDict_SetItem(hb,Qa,mb);a=418;break;case 417:r=_PyObject_SetItem(hb,Qa,mb); -a=418;break;case 418:HEAP[s]-=1;a=HEAP[s]==0?419:420;break;case 419:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=420;break;case 420:a=r==0?12:754;break;case 421:a=_PyObject_Repr(t)+20;_PyErr_Format(HEAP[_PyExc_SystemError],__str15502,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=754;break;case 422:t=HEAP[L+12+p*4];u=HEAP[d+28];a=u!=0?423:425;break;case 423:r=_PyObject_DelItem(u,t);a=r!=0?424:754;break;case 424:_format_exc_check_arg(HEAP[_PyExc_NameError],__str16503,t);a=754;break;case 425:a=_PyObject_Repr(t)+ -20;_PyErr_Format(HEAP[_PyExc_SystemError],__str17504,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=754;break;case 426:p=HEAP[n+1]+HEAP[n+2]*256;n+=3;a=427;break;case 427:m+=-4;s=HEAP[m];a=HEAP[s+4]!=_PyTuple_Type?433:428;break;case 428:a=HEAP[s+8]!=p?433:429;break;case 429:ra=s+12;p=a=p-1;a=a!=-1?430:431;break;case 430:t=HEAP[ra+4*p];HEAP[t]+=1;HEAP[m]=t;m+=4;p=a=p-1;a=a!=-1?430:431;break;case 431:HEAP[s]-=1;a=HEAP[s]==0?432:12;break;case 432:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=12;break;case 433:a= -HEAP[s+4]!=_PyList_Type?437:434;break;case 434:a=HEAP[s+8]!=p?437:435;break;case 435:ya=HEAP[s+12];p=a=p-1;a=a!=-1?436:440;break;case 436:t=HEAP[ya+4*p];HEAP[t]+=1;HEAP[m]=t;m+=4;p=a=p-1;a=a!=-1?436:440;break;case 437:a=_unpack_iterable(s,p,m+4*p)!=0?438:439;break;case 438:m+=4*p;a=440;break;case 439:q=2;a=440;break;case 440:HEAP[s]-=1;a=HEAP[s]==0?441:754;break;case 441:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=754;break;case 442:t=HEAP[L+12+p*4];s=HEAP[m+-4];v=HEAP[m+-8];m+=-8;r=_PyObject_SetAttr(s, -t,v);HEAP[s]-=1;a=HEAP[s]==0?443:444;break;case 443:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=444;break;case 444:HEAP[v]-=1;a=HEAP[v]==0?445:446;break;case 445:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=446;break;case 446:a=r==0?12:754;break;case 447:t=HEAP[L+12+p*4];m+=-4;s=HEAP[m];r=_PyObject_SetAttr(s,t,0);HEAP[s]-=1;a=HEAP[s]==0?448:754;break;case 448:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=754;break;case 449:t=HEAP[L+12+p*4];m+=-4;s=HEAP[m];r=_PyDict_SetItem(HEAP[d+24],t,s);HEAP[s]-=1;a=HEAP[s]== -0?450:451;break;case 450:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=451;break;case 451:a=r==0?12:754;break;case 452:t=HEAP[L+12+p*4];r=_PyDict_DelItem(HEAP[d+24],t);a=r!=0?453:754;break;case 453:_format_exc_check_arg(HEAP[_PyExc_NameError],__str18505,t);a=754;break;case 454:t=HEAP[L+12+p*4];s=HEAP[d+28];a=s==0?455:456;break;case 455:q=_PyObject_Repr(t)+20;_PyErr_Format(HEAP[_PyExc_SystemError],__str19506,allocate([q,0,0,0],["i8*",0,0,0],ALLOC_STACK));q=2;c=455;a=755;break;case 456:var S=s,Ca=t;a=HEAP[s+ -4]==_PyDict_Type?457:459;break;case 457:u=_PyDict_GetItem(S,Ca);a=u!=0?458:464;break;case 458:HEAP[u]+=1;a=463;break;case 459:u=_PyObject_GetItem(S,Ca);a=u==0?460:468;break;case 460:a=_PyErr_Occurred()!=0?461:463;break;case 461:a=_PyErr_ExceptionMatches(HEAP[_PyExc_KeyError])==0?754:462;break;case 462:_PyErr_Clear();a=463;break;case 463:a=u==0?464:468;break;case 464:u=a=_PyDict_GetItem(HEAP[d+24],t);a=a==0?465:467;break;case 465:u=_PyDict_GetItem(HEAP[d+20],t);a=u==0?466:467;break;case 466:_format_exc_check_arg(HEAP[_PyExc_NameError], -__str16503,t);a=754;break;case 467:HEAP[u]+=1;a=468;break;case 468:HEAP[m]=u;m+=4;a=12;break;case 469:t=HEAP[L+12+p*4];a=HEAP[t+4]==_PyString_Type?470:479;break;case 470:Da=HEAP[t+12];a=Da!=-1?471:479;break;case 471:Ua=HEAP[d+24];Ua=FUNCTION_TABLE[HEAP[Ua+24]](Ua,t,Da);a=Ua==0?472:473;break;case 472:u=0;a=754;break;case 473:u=HEAP[Ua+8];a=u!=0?474:475;break;case 474:HEAP[u]+=1;HEAP[m]=u;m+=4;a=12;break;case 475:Ua=HEAP[d+20];Ua=FUNCTION_TABLE[HEAP[Ua+24]](Ua,t,Da);a=Ua==0?476:477;break;case 476:u= -0;a=754;break;case 477:u=HEAP[Ua+8];a=u!=0?478:481;break;case 478:HEAP[u]+=1;HEAP[m]=u;m+=4;a=12;break;case 479:u=a=_PyDict_GetItem(HEAP[d+24],t);a=a==0?480:482;break;case 480:u=_PyDict_GetItem(HEAP[d+20],t);a=u==0?481:482;break;case 481:_format_exc_check_arg(HEAP[_PyExc_NameError],__str18505,t);a=754;break;case 482:HEAP[u]+=1;HEAP[m]=u;m+=4;a=12;break;case 483:u=HEAP[y+4*p];a=u!=0?484:487;break;case 484:Na=HEAP[y+4*p];HEAP[y+4*p]=0;a=Na!=0?485:12;break;case 485:HEAP[Na]-=1;a=HEAP[Na]==0?486:12;break; -case 486:FUNCTION_TABLE[HEAP[HEAP[Na+4]+24]](Na);a=12;break;case 487:a=_PyTuple_GetItem(HEAP[G+36],p);_format_exc_check_arg(HEAP[_PyExc_UnboundLocalError],__str4491,a);a=754;break;case 488:u=HEAP[z+4*p];HEAP[u]+=1;HEAP[m]=u;m+=4;a=u!=0?12:754;break;case 489:u=HEAP[z+4*p];t=_PyCell_Get(u);a=t!=0?490:491;break;case 490:HEAP[m]=t;m+=4;a=12;break;case 491:r=-1;a=_PyErr_Occurred()!=0?754:492;break;case 492:var pa=G;a=HEAP[HEAP[G+44]+8]>p?493:494;break;case 493:s=HEAP[HEAP[pa+44]+12+p*4];_format_exc_check_arg(HEAP[_PyExc_UnboundLocalError], -__str4491,s);a=754;break;case 494:s=HEAP[HEAP[pa+40]+12+(p-HEAP[HEAP[G+44]+8])*4];_format_exc_check_arg(HEAP[_PyExc_NameError],__str20507,s);a=754;break;case 495:m+=-4;t=HEAP[m];u=HEAP[z+4*p];_PyCell_Set(u,t);HEAP[t]-=1;a=HEAP[t]==0?496:12;break;case 496:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=12;break;case 497:u=_PyTuple_New(p);a=u!=0?498:754;break;case 498:p=c=p-1;var Aa=m;c>=0?(c=498,a=499):(c=498,a=500);break;case 499:m=(c==499?ob:Aa)+-4;t=HEAP[m];HEAP[u+12+p*4]=t;p=c=p-1;var ob=m;c>=0?a=c=499: -(c=499,a=500);break;case 500:HEAP[c==498?Aa:ob]=u;m+=4;a=12;break;case 501:u=_PyList_New(p);a=u!=0?502:754;break;case 502:p=c=p-1;var ib=m;c>=0?(c=502,a=503):(c=502,a=504);break;case 503:m=(c==503?ca:ib)+-4;t=HEAP[m];HEAP[HEAP[u+12]+4*p]=t;p=c=p-1;var ca=m;c>=0?a=c=503:(c=503,a=504);break;case 504:HEAP[c==502?ib:ca]=u;m+=4;a=12;break;case 505:u=_PySet_New(0);a=u!=0?506:754;break;case 506:p=a=p-1;a=a>=0?507:512;break;case 507:m+=-4;t=HEAP[m];a=r==0?508:509;break;case 508:r=_PySet_Add(u,t);a=509;break; -case 509:HEAP[t]-=1;a=HEAP[t]==0?511:510;break;case 510:p=a=p-1;a=a>=0?507:512;break;case 511:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=510;break;case 512:a=r!=0?513:515;break;case 513:HEAP[u]-=1;a=HEAP[u]==0?514:754;break;case 514:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=754;break;case 515:HEAP[m]=u;m+=4;a=12;break;case 516:u=__PyDict_NewPresized(p);HEAP[m]=u;m+=4;a=u!=0?12:754;break;case 517:t=HEAP[m+-4];v=HEAP[m+-8];s=HEAP[m+-12];m+=-8;r=_PyDict_SetItem(s,t,v);HEAP[v]-=1;a=HEAP[v]==0?518:519;break; -case 518:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=519;break;case 519:HEAP[t]-=1;a=HEAP[t]==0?520:521;break;case 520:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=521;break;case 521:a=r==0?12:754;break;case 522:t=HEAP[m+-4];v=HEAP[m+-8];m+=-8;s=HEAP[m+4*(0-p)];r=_PyDict_SetItem(s,t,v);HEAP[v]-=1;a=HEAP[v]==0?523:524;break;case 523:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=524;break;case 524:HEAP[t]-=1;a=HEAP[t]==0?525:526;break;case 525:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=526;break;case 526:a=r==0?527: -754;break;case 527:a=HEAP[n]==113?634:12;break;case 528:t=HEAP[L+12+p*4];s=HEAP[m+-4];u=_PyObject_GetAttr(s,t);HEAP[s]-=1;a=HEAP[s]==0?529:530;break;case 529:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=530;break;case 530:HEAP[m+-4]=u;a=u!=0?12:754;break;case 531:m+=-4;t=HEAP[m];s=HEAP[m+-4];a=HEAP[t+4]!=_PyInt_Type?546:532;break;case 532:a=HEAP[s+4]!=_PyInt_Type?546:533;break;case 533:Pa=HEAP[s+8];wa=HEAP[t+8];a=p;a=a==0?534:a==1?535:a==2?536:a==3?537:a==4?538:a==5?539:a==8?540:a==9?541:546;break;case 534:var na= -Pawa,c=538;a=542;break;case 539:var Sa=Pa>=wa,c=539;a=542;break;case 540:var X=s==t,c=540;a=542;break;case 541:var oa=s!=t,c=541;a=542;break;case 542:a=(c==541?oa:c==540?X:c==539?Sa:c==538?ga:c==537?$:c==536?Ma:c==535?O:na)!=0?543:544;break;case 543:k=__Py_TrueStruct;a=545;break;case 544:k=__Py_ZeroStruct;a=545;break;case 545:u=k;HEAP[u]+= -1;a=547;break;case 546:u=_cmp_outcome(p,s,t);a=547;break;case 547:HEAP[s]-=1;a=HEAP[s]==0?548:549;break;case 548:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=549;break;case 549:HEAP[t]-=1;a=HEAP[t]==0?550:551;break;case 550:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=551;break;case 551:HEAP[m+-4]=u;a=u==0?754:552;break;case 552:var ab=n;a=HEAP[n]==114?586:553;break;case 553:a=HEAP[ab]==115?600:12;break;case 554:t=HEAP[L+12+p*4];u=_PyDict_GetItemString(HEAP[d+20],__str21508);a=u==0?555:556;break;case 555:_PyErr_SetString(HEAP[_PyExc_ImportError], -__str22509);a=754;break;case 556:HEAP[u]+=1;m+=-4;s=HEAP[m];v=HEAP[m+-4];a=_PyInt_AsLong(v)!=-1?558:557;break;case 557:a=_PyErr_Occurred()!=0?558:562;break;case 558:a=HEAP[d+28]!=0?559:560;break;case 559:j=HEAP[d+28];a=561;break;case 560:j=__Py_NoneStruct;a=561;break;case 561:t=_PyTuple_Pack(5,allocate([t,0,0,0,HEAP[d+24],0,0,0,j,0,0,0,s,0,0,0,v,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0, -0,0],ALLOC_STACK));a=566;break;case 562:a=HEAP[d+28]!=0?563:564;break;case 563:h=HEAP[d+28];a=565;break;case 564:h=__Py_NoneStruct;a=565;break;case 565:t=_PyTuple_Pack(4,allocate([t,0,0,0,HEAP[d+24],0,0,0,h,0,0,0,s,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=566;break;case 566:HEAP[s]-=1;a=HEAP[s]==0?567:568;break;case 567:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=568;break;case 568:HEAP[v]-=1;a=HEAP[v]== -0?569:570;break;case 569:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=570;break;case 570:a=t==0?571:574;break;case 571:m+=-4;v=HEAP[m];HEAP[u]-=1;a=HEAP[u]==0?572:573;break;case 572:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=573;break;case 573:u=0;a=754;break;case 574:s=u;u=_PyEval_CallObjectWithKeywords(s,t,0);HEAP[s]-=1;a=HEAP[s]==0?575:576;break;case 575:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=576;break;case 576:HEAP[t]-=1;a=HEAP[t]==0?577:578;break;case 577:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=578; -break;case 578:HEAP[m+-4]=u;a=u!=0?12:754;break;case 579:m+=-4;s=HEAP[m];_PyFrame_FastToLocals(d);u=HEAP[d+28];a=u==0?580:581;break;case 580:_PyErr_SetString(HEAP[_PyExc_SystemError],__str23510);a=754;break;case 581:r=_import_all_from(u,s);_PyFrame_LocalsToFast(d,0);HEAP[s]-=1;a=HEAP[s]==0?582:583;break;case 582:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=583;break;case 583:a=r==0?12:754;break;case 584:t=HEAP[L+12+p*4];s=HEAP[m+-4];u=_import_from(s,t);HEAP[m]=u;m+=4;a=u!=0?12:754;break;case 585:n+=p; -a=19;break;case 586:p=HEAP[n+1]+HEAP[ab+2]*256;n+=3;a=587;break;case 587:m+=-4;var Oa=HEAP[m];t=Oa;a=Oa==__Py_TrueStruct?588:590;break;case 588:HEAP[t]=HEAP[Oa]-1;a=HEAP[t]==0?589:19;break;case 589:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=19;break;case 590:var va=t;a=Oa==__Py_ZeroStruct?591:594;break;case 591:HEAP[t]=HEAP[va]-1;a=HEAP[t]==0?592:593;break;case 592:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=593;break;case 593:n=M+p;a=19;break;case 594:r=_PyObject_IsTrue(va);HEAP[t]-=1;a=HEAP[t]==0?595: -596;break;case 595:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=596;break;case 596:a=r>0?597:598;break;case 597:r=0;a=12;break;case 598:a=r==0?599:754;break;case 599:n=M+p;a=12;break;case 600:p=HEAP[n+1]+HEAP[n+2]*256;n+=3;a=601;break;case 601:m+=-4;var U=HEAP[m];t=U;a=U==__Py_ZeroStruct?602:604;break;case 602:HEAP[t]=HEAP[U]-1;a=HEAP[t]==0?603:19;break;case 603:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=19;break;case 604:var fb=t;a=U==__Py_TrueStruct?605:608;break;case 605:HEAP[t]=HEAP[fb]-1;a=HEAP[t]== -0?606:607;break;case 606:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=607;break;case 607:n=M+p;a=19;break;case 608:r=_PyObject_IsTrue(fb);HEAP[t]-=1;a=HEAP[t]==0?609:610;break;case 609:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=610;break;case 610:a=r>0?611:612;break;case 611:r=0;n=M+p;a=12;break;case 612:a=r!=0?754:12;break;case 613:t=HEAP[m+-4];a=t==__Py_TrueStruct?614:616;break;case 614:m+=-4;HEAP[t]-=1;a=HEAP[t]==0?615:19;break;case 615:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=19;break;case 616:a=t==__Py_ZeroStruct? -617:618;break;case 617:n=M+p;a=19;break;case 618:r=_PyObject_IsTrue(t);a=r>0?619:622;break;case 619:m+=-4;HEAP[t]-=1;a=HEAP[t]==0?620:621;break;case 620:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=621;break;case 621:r=0;a=12;break;case 622:a=r==0?623:754;break;case 623:n=M+p;a=12;break;case 624:t=HEAP[m+-4];a=t==__Py_ZeroStruct?625:627;break;case 625:m+=-4;HEAP[t]-=1;a=HEAP[t]==0?626:19;break;case 626:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=19;break;case 627:a=t==__Py_TrueStruct?628:629;break;case 628:n= -M+p;a=19;break;case 629:r=_PyObject_IsTrue(t);a=r>0?630:631;break;case 630:r=0;n=M+p;a=12;break;case 631:a=r==0?632:754;break;case 632:m+=-4;HEAP[t]-=1;a=HEAP[t]==0?633:12;break;case 633:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=12;break;case 634:p=HEAP[n+1]+HEAP[n+2]*256;n+=3;a=635;break;case 635:n=M+p;a=12;break;case 636:s=HEAP[m+-4];u=_PyObject_GetIter(s);HEAP[s]-=1;a=HEAP[s]==0?637:638;break;case 637:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=638;break;case 638:var Cb=m+-4;a=u!=0?639:640;break;case 639:HEAP[Cb]= -u;a=reSign(HEAP[n],8,1)==93?641:12;break;case 640:m=Cb;a=754;break;case 641:p=HEAP[n+1]+HEAP[n+2]*256;n+=3;a=642;break;case 642:s=HEAP[m+-4];u=a=FUNCTION_TABLE[HEAP[HEAP[s+4]+112]](s);a=a!=0?643:645;break;case 643:HEAP[m]=u;m+=4;var xb=n;a=HEAP[n]==125?32:644;break;case 644:a=HEAP[xb]==92?426:12;break;case 645:a=_PyErr_Occurred()!=0?646:648;break;case 646:a=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])==0?754:647;break;case 647:_PyErr_Clear();a=648;break;case 648:m+=-4;u=s=HEAP[m];HEAP[s]-= -1;a=HEAP[s]==0?649:650;break;case 649:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=650;break;case 650:n+=p;a=12;break;case 651:q=16;c=651;a=799;break;case 652:C=_PyInt_FromLong(p);a=C==0?653:654;break;case 653:u=0;a=754;break;case 654:q=32;c=654;a=799;break;case 655:_PyFrame_BlockSetup(d,o,p+n+(0-M),(m-HEAP[d+32])/4|0);a=12;break;case 656:t=HEAP[m+-4];u=_special_lookup(t,__str24511,_exit_8846);a=u==0?754:657;break;case 657:HEAP[m+-4]=u;v=_special_lookup(t,__str25512,_enter_8847);HEAP[t]-=1;a=HEAP[t]== -0?658:659;break;case 658:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=659;break;case 659:a=v==0?660:661;break;case 660:u=0;a=754;break;case 661:u=_PyObject_CallFunctionObjArgs(v,allocate(4,"i8*",ALLOC_STACK));HEAP[v]-=1;a=HEAP[v]==0?662:663;break;case 662:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=663;break;case 663:a=u==0?754:664;break;case 664:_PyFrame_BlockSetup(d,143,p+n+(0-M),(m-HEAP[d+32])/4|0);HEAP[m]=u;m+=4;a=12;break;case 665:m+=-4;v=HEAP[m];a=v==__Py_NoneStruct?666:667;break;case 666:Ya=HEAP[m+ --4];HEAP[m+-4]=v;s=t=__Py_NoneStruct;a=673;break;case 667:a=(HEAP[HEAP[v+4]+84]&8388608)!=0?668:672;break;case 668:a=HEAP[v+8];a=a==8?669:a==32?669:670;break;case 669:Ya=HEAP[m+-8];HEAP[m+-8]=HEAP[m+-4];HEAP[m+-4]=v;a=671;break;case 670:Ya=HEAP[m+-4];HEAP[m+-4]=v;a=671;break;case 671:v=s=t=__Py_NoneStruct;a=673;break;case 672:s=HEAP[m+-4];t=HEAP[m+-8];Ya=HEAP[m+-12];HEAP[m+-4]=v;HEAP[m+-8]=s;HEAP[m+-12]=t;a=673;break;case 673:u=_PyObject_CallFunctionObjArgs(Ya,allocate([v,0,0,0,s,0,0,0,t,0,0,0,0, -0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[Ya]-=1;a=HEAP[Ya]==0?674:675;break;case 674:FUNCTION_TABLE[HEAP[HEAP[Ya+4]+24]](Ya);a=675;break;case 675:a=u==0?754:676;break;case 676:a=v!=__Py_NoneStruct?677:678;break;case 677:r=_PyObject_IsTrue(u);a=679;break;case 678:r=0;a=679;break;case 679:HEAP[u]-=1;a=HEAP[u]==0?680:681;break;case 680:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=681;break;case 681:a=r<0?754:682;break; -case 682:a=r>0?683:689;break;case 683:r=0;m+=-8;HEAP[__Py_NoneStruct]+=1;HEAP[m+-4]=__Py_NoneStruct;HEAP[v]-=1;a=HEAP[v]==0?684:685;break;case 684:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=685;break;case 685:HEAP[s]-=1;a=HEAP[s]==0?686:687;break;case 686:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=687;break;case 687:HEAP[t]-=1;a=HEAP[t]==0?688:689;break;case 688:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=689;break;case 689:a=HEAP[n]==88?395:754;break;case 690:HEAP[Ha]=m;u=_call_function(Ha,p);m=HEAP[Ha];HEAP[m]= -u;m+=4;a=u!=0?12:754;break;case 691:ta=p&255;Va=p>>8&255;Ia=o-131&3;Wa=Va*2+ta;a=(Ia&1)!=0?692:693;break;case 692:Wa+=1;a=693;break;case 693:a=(Ia&2)!=0?694:695;break;case 694:Wa+=1;a=695;break;case 695:ia=m+4*(0-Wa)+-4;Ba=HEAP[ia];a=HEAP[Ba+4]!=_PyMethod_Type?700:696;break;case 696:a=HEAP[Ba+12]==0?700:697;break;case 697:Ta=HEAP[Ba+12];HEAP[Ta]+=1;Ba=HEAP[Ba+8];HEAP[Ba]+=1;a=HEAP[ia];HEAP[a]-=1;a=HEAP[a]==0?698:699;break;case 698:FUNCTION_TABLE[HEAP[HEAP[HEAP[ia]+4]+24]](HEAP[ia]);a=699;break;case 699:HEAP[ia]= -Ta;ta+=1;a=701;break;case 700:HEAP[Ba]+=1;a=701;break;case 701:HEAP[Xa]=m;u=_ext_do_call(Ba,Xa,Ia,ta,Va);m=HEAP[Xa];HEAP[Ba]-=1;a=HEAP[Ba]==0?702:703;break;case 702:FUNCTION_TABLE[HEAP[HEAP[Ba+4]+24]](Ba);a=703;break;case 703:var db=m;m>ia?(c=703,a=704):(c=703,a=707);break;case 704:m=(c==705?gb:db)+-4;t=HEAP[m];HEAP[t]-=1;a=HEAP[t]==0?706:705;break;case 705:var gb=m;m>ia?(c=705,a=704):(c=705,a=707);break;case 706:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=705;break;case 707:HEAP[c==703?db:gb]=u;m+=4; -a=u!=0?12:754;break;case 708:m+=-4;s=HEAP[m];u=_PyFunction_New(s,HEAP[d+24]);HEAP[s]-=1;a=HEAP[s]==0?709:710;break;case 709:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=710;break;case 710:a=u!=0?711:720;break;case 711:a=p>0?712:720;break;case 712:s=_PyTuple_New(p);a=s==0?714:713;break;case 713:p=a=p-1;a=a>=0?717:718;break;case 714:HEAP[u]-=1;a=HEAP[u]==0?715:716;break;case 715:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=716;break;case 716:u=0;a=754;break;case 717:m+=-4;t=HEAP[m];HEAP[s+12+p*4]=t;p=a=p-1;a= -a>=0?717:718;break;case 718:r=_PyFunction_SetDefaults(u,s);HEAP[s]-=1;a=HEAP[s]==0?719:720;break;case 719:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=720;break;case 720:HEAP[m]=u;m+=4;a=754;break;case 721:m+=-4;s=HEAP[m];u=_PyFunction_New(s,HEAP[d+24]);HEAP[s]-=1;a=HEAP[s]==0?722:723;break;case 722:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=723;break;case 723:a=u!=0?724:740;break;case 724:m+=-4;s=HEAP[m];a=_PyFunction_SetClosure(u,s)!=0?725:726;break;case 725:q=2;a=726;break;case 726:HEAP[s]-=1;a=HEAP[s]== -0?727:728;break;case 727:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=728;break;case 728:a=u!=0?729:740;break;case 729:a=p>0?730:740;break;case 730:s=_PyTuple_New(p);a=s==0?732:731;break;case 731:p=a=p-1;a=a>=0?735:736;break;case 732:HEAP[u]-=1;a=HEAP[u]==0?733:734;break;case 733:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=734;break;case 734:u=0;a=754;break;case 735:m+=-4;t=HEAP[m];HEAP[s+12+p*4]=t;p=a=p-1;a=a>=0?735:736;break;case 736:a=_PyFunction_SetDefaults(u,s)!=0?737:738;break;case 737:q=2;a=738;break; -case 738:HEAP[s]-=1;a=HEAP[s]==0?739:740;break;case 739:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=740;break;case 740:HEAP[m]=u;m+=4;a=754;break;case 741:a=p==3?742:743;break;case 742:m+=-4;t=HEAP[m];a=744;break;case 743:t=0;a=744;break;case 744:m+=-4;s=HEAP[m];v=HEAP[m+-4];u=_PySlice_New(v,s,t);HEAP[v]-=1;a=HEAP[v]==0?745:746;break;case 745:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=746;break;case 746:HEAP[s]-=1;a=HEAP[s]==0?747:748;break;case 747:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=748;break;case 748:a= -t!=0?749:751;break;case 749:HEAP[t]-=1;a=HEAP[t]==0?750:751;break;case 750:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=751;break;case 751:HEAP[m+-4]=u;a=u!=0?12:754;break;case 752:o=HEAP[n];n+=1;n+=2;p=HEAP[n+-2]+HEAP[n+-1]*256|p<<16;a=27;break;case 753:q=_PyFrame_GetLineNumber(d);_fprintf(HEAP[_stderr],__str26513,allocate([q,0,0,0,o,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));_PyErr_SetString(HEAP[_PyExc_SystemError],__str27514);q=2;c=753;a=755;break;case 754:var rb=q,c=754;a=755;break;case 755:a= -(c==754?rb:c==378?qa:c==379?2:c==753?2:c==455?2:c==403?4:c==16?2:2)==1?756:759;break;case 756:a=r==0?757:758;break;case 757:a=u!=0?12:758;break;case 758:q=2;u=__Py_NoneStruct;r=0;a=759;break;case 759:var sb=q;q==2|sb==4?(c=759,a=760):(c=759,a=763);break;case 760:a=_PyErr_Occurred()==0?761:762;break;case 761:_PyErr_SetString(HEAP[_PyExc_SystemError],__str28515);q=2;a=764;break;case 762:var Kb=q,c=762;a=763;break;case 763:a=(c==762?Kb:sb)==2?764:766;break;case 764:_PyTraceBack_Here(d);a=HEAP[A+28]!= -0?765:766;break;case 765:_call_exc_trace(HEAP[A+28],HEAP[A+36],d);a=766;break;case 766:var Gb=q;Gb==4?(c=766,a=767):(c=766,a=799);break;case 767:q=2;c=767;a=799;break;case 768:Ea=d+72+(HEAP[d+68]-1)*12;a=HEAP[Ea]==120?769:772;break;case 769:a=q==32?770:772;break;case 770:q=1;n=M+HEAP[C+8];HEAP[C]-=1;a=HEAP[C]==0?771:801;break;case 771:FUNCTION_TABLE[HEAP[HEAP[C+4]+24]](C);a=801;break;case 772:HEAP[d+68]-=1;a=((m-HEAP[d+32])/4|0)>HEAP[Ea+8]?773:777;break;case 773:m+=-4;s=HEAP[m];a=HEAP[m]!=0?775:774; -break;case 774:a=((m-HEAP[d+32])/4|0)>HEAP[Ea+8]?773:777;break;case 775:HEAP[s]-=1;a=HEAP[s]==0?776:774;break;case 776:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=774;break;case 777:a=HEAP[Ea]==120?778:780;break;case 778:a=q==16?779:780;break;case 779:q=1;n=M+HEAP[Ea+4];a=801;break;case 780:a=HEAP[Ea]==122?784:781;break;case 781:a=HEAP[Ea]!=121?783:782;break;case 782:a=q==2?785:783;break;case 783:a=HEAP[Ea]==143?784:798;break;case 784:a=q==2?785:794;break;case 785:_PyErr_Fetch(Ga,ka,Fa);a=HEAP[ka]==0? -786:787;break;case 786:HEAP[ka]=__Py_NoneStruct;HEAP[HEAP[ka]]+=1;a=787;break;case 787:a=HEAP[Ea]==121?789:788;break;case 788:a=HEAP[Ea]==143?789:790;break;case 789:_PyErr_NormalizeException(Ga,ka,Fa);_set_exc_info(A,HEAP[Ga],HEAP[ka],HEAP[Fa]);a=790;break;case 790:a=HEAP[Fa]==0?791:792;break;case 791:HEAP[__Py_NoneStruct]+=1;HEAP[m]=__Py_NoneStruct;m+=4;a=793;break;case 792:HEAP[m]=HEAP[Fa];m+=4;a=793;break;case 793:HEAP[m]=HEAP[ka];m+=4;HEAP[m]=HEAP[Ga];m+=4;a=797;break;case 794:a=(q&40)!=0?795: -796;break;case 795:HEAP[m]=C;m+=4;a=796;break;case 796:s=_PyInt_FromLong(q);HEAP[m]=s;m+=4;a=797;break;case 797:q=1;n=M+HEAP[Ea+4];a=801;break;case 798:var Nb=q,c=798;a=799;break;case 799:a=(c==798?Nb:c==383?8:c==651?16:c==654?32:c==766?Gb:2)==1?801:800;break;case 800:a=HEAP[d+68]>0?768:801;break;case 801:a=q!=1?802:12;break;case 802:a=m+3+(0-HEAP[d+32])>6?803:807;break;case 803:m+=-4;s=HEAP[m];a=HEAP[m]!=0?805:804;break;case 804:a=m+3+(0-HEAP[d+32])>6?803:807;break;case 805:HEAP[s]-=1;a=HEAP[s]== -0?806:804;break;case 806:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=804;break;case 807:a=q!=8?808:809;break;case 808:C=0;a=809;break;case 809:a=HEAP[A+20]!=0?810:827;break;case 810:a=HEAP[A+28]!=0?811:819;break;case 811:a=q==8|q==64?812:817;break;case 812:a=_call_trace(HEAP[A+28],HEAP[A+36],d,3,C)!=0?813:819;break;case 813:a=C!=0?814:816;break;case 814:HEAP[C]-=1;a=HEAP[C]==0?815:816;break;case 815:FUNCTION_TABLE[HEAP[HEAP[C+4]+24]](C);a=816;break;case 816:C=0;q=2;a=819;break;case 817:a=q==2?818:819; -break;case 818:_call_trace_protected(HEAP[A+28],HEAP[A+36],d,3,0);a=819;break;case 819:a=HEAP[A+24]!=0?820:827;break;case 820:var Ab=HEAP[A+32],Sb=HEAP[A+24],pb=d;a=q==2?821:822;break;case 821:_call_trace_protected(Sb,Ab,pb,3,0);a=827;break;case 822:a=_call_trace(Sb,Ab,pb,3,C)!=0?823:827;break;case 823:a=C!=0?824:826;break;case 824:HEAP[C]-=1;a=HEAP[C]==0?825:826;break;case 825:FUNCTION_TABLE[HEAP[HEAP[C+4]+24]](C);a=826;break;case 826:C=0;q=2;a=827;break;case 827:a=HEAP[HEAP[A+8]+44]!=0?828:829; -break;case 828:_reset_exc_info(A);a=829;break;case 829:HEAP[HEAP[__PyThreadState_Current]+12]-=1;HEAP[A+8]=HEAP[d+12];l=C;a=830;break;case 830:return d=l,STACKTOP=b,d;default:assert(0,"bad label: "+a)}} -function _PyEval_EvalCodeEx(g,e,b,a,c,d,f,h,j,k){var l;for(l=-1;;)switch(l){case -1:var m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V,Q,Z,K,N,H,ba,W,B,Y,fa,ha,la,ra,ya,Da,Ua,Na,Pa,wa,Ya,Ha;m=g;n=e;o=b;p=a;q=c;r=d;u=f;s=h;t=j;v=k;G=0;R=HEAP[__PyThreadState_Current];l=n==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str29516);C=0;l=123;break;case 2:A=_PyFrame_New(R,m,n,o);l=A==0?3:4;break;case 3:C=0;l=123;break;case 4:E=A+312;D=A+312+4*HEAP[m+12];l=HEAP[m+8]>0?6:5;break;case 5:l= -(HEAP[m+20]&12)!=0?6:89;break;case 6:I=q;J=0;l=(HEAP[m+20]&8)!=0?7:13;break;case 7:J=_PyDict_New();l=J==0?120:8;break;case 8:L=HEAP[m+8];l=(HEAP[m+20]&4)!=0?9:10;break;case 9:L+=1;l=10;break;case 10:F=HEAP[E+4*L];HEAP[E+4*L]=J;l=F!=0?11:13;break;case 11:HEAP[F]-=1;l=HEAP[F]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[F+4]+24]](F);l=13;break;case 13:l=HEAP[m+8]H?41:44;break;case 44:H=0;l=48;break;case 45:ba= -HEAP[Z+4*H];ba=_PyObject_RichCompareBool(K,ba,2);l=ba>0?54:46;break;case 46:l=ba<0?120:47;break;case 47:H+=1;l=48;break;case 48:l=HEAP[m+8]>H?45:49;break;case 49:l=J==0?50:53;break;case 50:W=_kwd_as_string(K);l=W!=0?51:120;break;case 51:l=_PyString_AsString(W);var Ia=_PyString_AsString(HEAP[m+52]);_PyErr_Format(HEAP[_PyExc_TypeError],__str35522,allocate([Ia,0,0,0,l,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[W]-=1;l=HEAP[W]==0?52:120;break;case 52:FUNCTION_TABLE[HEAP[HEAP[W+4]+24]](W);l=120; -break;case 53:_PyDict_SetItem(J,K,N);l=61;break;case 54:l=HEAP[E+4*H]!=0?55:58;break;case 55:B=_kwd_as_string(K);l=B!=0?56:120;break;case 56:l=_PyString_AsString(B);Ia=_PyString_AsString(HEAP[m+52]);_PyErr_Format(HEAP[_PyExc_TypeError],__str36523,allocate([Ia,0,0,0,l,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[B]-=1;l=HEAP[B]==0?57:120;break;case 57:FUNCTION_TABLE[HEAP[HEAP[B+4]+24]](B);l=120;break;case 58:HEAP[N]+=1;Y=HEAP[E+4*H];HEAP[E+4*H]=N;l=Y!=0?59:61;break;case 59:HEAP[Y]-=1;l=HEAP[Y]== -0?60:61;break;case 60:FUNCTION_TABLE[HEAP[HEAP[Y+4]+24]](Y);l=61;break;case 61:L+=1;l=62;break;case 62:l=Lq?64:92;break;case 64:fa=HEAP[m+8]-t;L=q;l=79;break;case 65:l=HEAP[E+4*L]==0?66:78;break;case 66:ha=la=0;l=HEAP[m+8]>ha?67:70;break;case 67:l=HEAP[E+4*ha]!=0?68:69;break;case 68:la+=1;l=69;break;case 69:ha+=1;l=HEAP[m+8]>ha?67:70;break;case 70:l=fa==1?71:72;break;case 71:x=__str3490;l=73;break;case 72:x=__str30517;l=73;break;case 73:l=(HEAP[m+20]&4)!=0?75:74; -break;case 74:l=t!=0?75:76;break;case 75:w=__str37524;l=77;break;case 76:w=__str32519;l=77;break;case 77:l=_PyString_AsString(HEAP[m+52]);_PyErr_Format(HEAP[_PyExc_TypeError],__str33520,allocate([l,0,0,0,w,0,0,0,fa,0,0,0,x,0,0,0,la,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));l=120;break;case 78:L+=1;l=79;break;case 79:l=Lfa?81:82;break;case 81:L=I-fa;l=83;break;case 82:L=0;l=83;break;case 83:l=L0?91:90;break;case 90:l=u>0?91:92;break;case 91:l=u+q;Ia=_PyString_AsString(HEAP[m+52]);_PyErr_Format(HEAP[_PyExc_TypeError],__str38525,allocate([Ia,0,0,0,l,0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));l=120;break;case 92:l=HEAP[HEAP[m+44]+ -8]!=0?93:111;break;case 93:Ua=HEAP[m+8];l=(HEAP[m+20]&4)!=0?94:95;break;case 94:Ua+=1;l=95;break;case 95:l=(HEAP[m+20]&8)!=0?96:97;break;case 96:Ua+=1;l=97;break;case 97:ya=0;l=110;break;case 98:Pa=HEAP[HEAP[m+44]+12+ya*4]+20;Da=Na=0;l=103;break;case 99:l=HEAP[HEAP[m+36]+12+Da*4]+20;l=_strcmp(Pa,l)==0?100:102;break;case 100:wa=_PyCell_New(HEAP[E+4*Da]);l=wa==0?120:101;break;case 101:HEAP[E+4*(ya+HEAP[m+12])]=wa;Na=1;l=109;break;case 102:Da+=1;l=103;break;case 103:l=Daya?98:111;break;case 111:l=HEAP[HEAP[m+40]+8]!=0?112:114;break;case 112:Ha=0;l=HEAP[HEAP[m+40]+8]>Ha?113:114;break;case 113:l=HEAP[v+12+Ha*4];HEAP[l]+=1;HEAP[D+4*(Ha+HEAP[HEAP[m+44]+ -8])]=l;Ha+=1;l=HEAP[HEAP[m+40]+8]>Ha?113:114;break;case 114:var Wa=A;l=(HEAP[m+20]&32)!=0?115:119;break;case 115:l=HEAP[Wa+12]!=0?116:118;break;case 116:l=HEAP[A+12];HEAP[l]-=1;l=HEAP[l]==0?117:118;break;case 117:FUNCTION_TABLE[HEAP[HEAP[HEAP[A+12]+4]+24]](HEAP[A+12]);l=118;break;case 118:HEAP[A+12]=0;C=_PyGen_New(A);l=123;break;case 119:G=_PyEval_EvalFrameEx(Wa,0);l=120;break;case 120:HEAP[R+12]+=1;HEAP[A]-=1;l=HEAP[A]==0?121:122;break;case 121:FUNCTION_TABLE[HEAP[HEAP[A+4]+24]](A);l=122;break;case 122:HEAP[R+ -12]-=1;C=G;l=123;break;case 123:return g=C;default:assert(0,"bad label: "+l)}} -function _special_lookup(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+4]==_PyInstance_Type?1:4;break;case 1:a=HEAP[f]==0?2:3;break;case 2:h=_PyObject_GetAttrString(c,d);a=8;break;case 3:h=_PyObject_GetAttr(c,HEAP[f]);a=8;break;case 4:j=__PyObject_LookupSpecial(c,d,f);a=j==0?5:7;break;case 5:a=_PyErr_Occurred()==0?6:7;break;case 6:_PyErr_SetObject(HEAP[_PyExc_AttributeError],HEAP[f]);h=0;a=8;break;case 7:h=j;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+ -a)}}function _kwd_as_string(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=(HEAP[HEAP[b+4]+84]&134217728)!=0?1:2;break;case 1:HEAP[b]=HEAP[c]+1;a=b;e=3;break;case 2:a=__PyUnicodeUCS2_AsDefaultEncodedString(c,__str39526);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _set_exc_info(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;k=HEAP[d+8];c=HEAP[k+44]==0?1:8;break;case 1:c=HEAP[d+52]==0?2:3;break;case 2:HEAP[__Py_NoneStruct]+=1;HEAP[d+52]=__Py_NoneStruct;c=3;break;case 3:HEAP[HEAP[d+52]]+=1;c=HEAP[d+56]!=0?4:5;break;case 4:HEAP[HEAP[d+56]]+=1;c=5;break;case 5:c=HEAP[d+60]!=0?6:7;break;case 6:HEAP[HEAP[d+60]]+=1;c=7;break;case 7:HEAP[k+44]=HEAP[d+52];HEAP[k+48]=HEAP[d+56];HEAP[k+52]=HEAP[d+60];c=8;break;case 8:l=HEAP[d+ -52];m=HEAP[d+56];n=HEAP[d+60];HEAP[f]+=1;c=h!=0?9:10;break;case 9:HEAP[h]+=1;c=10;break;case 10:c=j!=0?11:12;break;case 11:HEAP[j]+=1;c=12;break;case 12:HEAP[d+52]=f;HEAP[d+56]=h;HEAP[d+60]=j;c=l!=0?13:15;break;case 13:HEAP[l]-=1;c=HEAP[l]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=15;break;case 15:c=m!=0?16:18;break;case 16:HEAP[m]-=1;c=HEAP[m]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=18;break;case 18:c=n!=0?19:21;break;case 19:HEAP[n]-=1;c=HEAP[n]==0?20: -21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=21;break;case 21:_PySys_SetObject(__str40527,f);_PySys_SetObject(__str41528,h);_PySys_SetObject(__str42529,j);return;default:assert(0,"bad label: "+c)}} -function _reset_exc_info(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;a=HEAP[b+8];c=HEAP[b+52];d=HEAP[b+56];f=HEAP[b+60];HEAP[HEAP[a+44]]+=1;e=HEAP[a+48]!=0?1:2;break;case 1:HEAP[HEAP[a+48]]+=1;e=2;break;case 2:e=HEAP[a+52]!=0?3:4;break;case 3:HEAP[HEAP[a+52]]+=1;e=4;break;case 4:HEAP[b+52]=HEAP[a+44];HEAP[b+56]=HEAP[a+48];HEAP[b+60]=HEAP[a+52];e=c!=0?5:7;break;case 5:HEAP[c]-=1;e=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:e=d!=0?8:10;break;case 8:HEAP[d]-= -1;e=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=10;break;case 10:e=f!=0?11:13;break;case 11:HEAP[f]-=1;e=HEAP[f]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=13;break;case 13:_PySys_SetObject(__str40527,HEAP[a+44]);_PySys_SetObject(__str41528,HEAP[a+48]);_PySys_SetObject(__str42529,HEAP[a+52]);c=HEAP[a+44];d=HEAP[a+48];f=HEAP[a+52];HEAP[a+44]=0;HEAP[a+48]=0;HEAP[a+52]=0;HEAP[c]-=1;e=HEAP[c]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=15; -break;case 15:e=d!=0?16:18;break;case 16:HEAP[d]-=1;e=HEAP[d]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=18;break;case 18:e=f!=0?19:21;break;case 19:HEAP[f]-=1;e=HEAP[f]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=21;break;case 21:return;default:assert(0,"bad label: "+e)}} -function _do_raise(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c,d=null;for(c=-1;;)switch(c){case -1:var f=a,h=a+4,j=a+8,k,l,m,n,o;HEAP[f]=g;HEAP[h]=e;HEAP[j]=b;HEAP[f]==0?(d=-1,c=1):(d=-1,c=10);break;case 1:n=HEAP[__PyThreadState_Current];c=HEAP[n+52]!=0?2:3;break;case 2:m=HEAP[n+52];c=4;break;case 3:m=__Py_NoneStruct;c=4;break;case 4:HEAP[f]=m;HEAP[h]=HEAP[n+56];HEAP[j]=HEAP[n+60];c=HEAP[f]!=0?5:6;break;case 5:HEAP[HEAP[f]]+=1;c=6;break;case 6:c=HEAP[h]!=0?7:8;break;case 7:HEAP[HEAP[h]]+= -1;c=8;break;case 8:var p=HEAP[j];HEAP[j]!=0?(d=8,c=9):(d=8,c=14);break;case 9:HEAP[p]+=1;var q=HEAP[j],d=9;c=10;break;case 10:var r=HEAP[j];(d==9?q:b)==__Py_NoneStruct?(d=10,c=11):(d=10,c=14);break;case 11:HEAP[r]-=1;c=HEAP[r]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);c=13;break;case 13:HEAP[j]=0;c=17;break;case 14:c=(d==10?r:p)!=0?15:17;break;case 15:c=HEAP[HEAP[j]+4]!=_PyTraceBack_Type?16:17;break;case 16:_PyErr_SetString(HEAP[_PyExc_TypeError],__str43530);c=44;break; -case 17:c=HEAP[h]==0?18:21;break;case 18:HEAP[h]=__Py_NoneStruct;HEAP[HEAP[h]]+=1;c=21;break;case 19:o=HEAP[f];HEAP[f]=HEAP[HEAP[f]+12];HEAP[HEAP[f]]+=1;HEAP[o]-=1;c=HEAP[o]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=21;break;case 21:c=(HEAP[HEAP[HEAP[f]+4]+84]&67108864)==0?23:22;break;case 22:c=_PyTuple_Size(HEAP[f])>0?19:23;break;case 23:c=HEAP[HEAP[f]+4]==_PyClass_Type?26:24;break;case 24:c=HEAP[HEAP[HEAP[f]+4]+84]>=0?27:25;break;case 25:c=(HEAP[HEAP[f]+84]&1073741824)!=0?26: -27;break;case 26:_PyErr_NormalizeException(f,h,j);c=38;break;case 27:c=HEAP[HEAP[f]+4]==_PyInstance_Type?29:28;break;case 28:c=(HEAP[HEAP[HEAP[f]+4]+84]&1073741824)!=0?29:37;break;case 29:c=HEAP[h]!=__Py_NoneStruct?30:31;break;case 30:_PyErr_SetString(HEAP[_PyExc_TypeError],__str44531);c=44;break;case 31:c=HEAP[h];HEAP[c]-=1;c=HEAP[c]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);c=33;break;case 33:HEAP[h]=HEAP[f];var u=HEAP[f];c=HEAP[HEAP[f]+4]==_PyInstance_Type?34:35; -break;case 34:l=HEAP[u+8];c=36;break;case 35:l=HEAP[u+4];c=36;break;case 36:HEAP[f]=l;HEAP[HEAP[f]]+=1;c=38;break;case 37:_PyErr_Format(HEAP[_PyExc_TypeError],__str45532,allocate([HEAP[HEAP[HEAP[f]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=44;break;case 38:c=HEAP[_Py_Py3kWarningFlag]!=0?39:41;break;case 39:c=HEAP[HEAP[f]+4]==_PyClass_Type?40:41;break;case 40:c=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str46533,1)<0?44:41;break;case 41:_PyErr_Restore(HEAP[f],HEAP[h],HEAP[j]);c=HEAP[j]==0?42: -43;break;case 42:k=2;c=54;break;case 43:k=4;c=54;break;case 44:c=HEAP[h]!=0?45:47;break;case 45:c=HEAP[h];HEAP[c]-=1;c=HEAP[c]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);c=47;break;case 47:c=HEAP[f]!=0?48:50;break;case 48:c=HEAP[f];HEAP[c]-=1;c=HEAP[c]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);c=50;break;case 50:c=HEAP[j]!=0?51:53;break;case 51:c=HEAP[j];HEAP[c]-=1;c=HEAP[c]==0?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]); -c=53;break;case 53:k=2;c=54;break;case 54:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _unpack_iterable(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=0;c=_PyObject_GetIter(c);a=c==0?20:8;break;case 1:a=m?2:7;break;case 2:a=_PyErr_Occurred()==0?3:20;break;case 3:a=k==1?4:5;break;case 4:j=__str3490;a=6;break;case 5:j=__str30517;a=6;break;case 6:_PyErr_Format(HEAP[_PyExc_ValueError],__str47534,allocate([k,0,0,0,j,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=20;break;case 7:f+=-4;HEAP[f]=l;k+=1;a=8;break;case 8:a=k0?17:21;break;case 20:a=k>0?17:21;break;case 21:a=c!=0?22:24;break;case 22:HEAP[c]-=1;a=HEAP[c]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=24;break;case 24:h=0;a=25;break;case 25:return g=h;default:assert(0,"bad label: "+a)}} -function _call_exc_trace(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l=a+8,m,n;d=g;f=e;h=b;_PyErr_Fetch(j,k,l);c=HEAP[k]==0?1:2;break;case 1:HEAP[k]=__Py_NoneStruct;HEAP[HEAP[k]]+=1;c=2;break;case 2:m=c=_PyTuple_Pack(3,allocate([HEAP[j],0,0,0,HEAP[k],0,0,0,HEAP[l],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));c=c==0?3:4;break;case 3:_PyErr_Restore(HEAP[j],HEAP[k],HEAP[l]); -c=17;break;case 4:n=_call_trace(d,f,h,1,m);HEAP[m]-=1;c=HEAP[m]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=6;break;case 6:c=n==0?7:8;break;case 7:_PyErr_Restore(HEAP[j],HEAP[k],HEAP[l]);c=17;break;case 8:c=HEAP[j]!=0?9:11;break;case 9:c=HEAP[j];HEAP[c]-=1;c=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);c=11;break;case 11:c=HEAP[k]!=0?12:14;break;case 12:c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]); -c=14;break;case 14:c=HEAP[l]!=0?15:17;break;case 15:c=HEAP[l];HEAP[c]-=1;c=HEAP[c]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);c=17;break;case 17:STACKTOP=a;return;default:assert(0,"bad label: "+c)}} -function _call_trace_protected(g,e,b,a,c){var d=STACKTOP;STACKTOP+=12;_memset(d,0,12);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o=d+4,p=d+8;f=g;h=e;j=b;k=a;l=c;_PyErr_Fetch(n,o,p);f=_call_trace(f,h,j,k,l)==0?1:2;break;case 1:_PyErr_Restore(HEAP[n],HEAP[o],HEAP[p]);m=0;f=12;break;case 2:f=HEAP[n]!=0?3:5;break;case 3:f=HEAP[n];HEAP[f]-=1;f=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);f=5;break;case 5:f=HEAP[o]!=0?6:8;break;case 6:f=HEAP[o];HEAP[f]-=1;f=HEAP[f]== -0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);f=8;break;case 8:f=HEAP[p]!=0?9:11;break;case 9:f=HEAP[p];HEAP[f]-=1;f=HEAP[f]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[p]+4]+24]](HEAP[p]);f=11;break;case 11:m=-1;f=12;break;case 12:return g=m,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _call_trace(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;l=c;o=HEAP[j+56];d=HEAP[o+16]!=0?1:2;break;case 1:n=0;d=7;break;case 2:HEAP[o+16]+=1;HEAP[o+20]=0;p=FUNCTION_TABLE[f](h,j,k,l);d=HEAP[o+28]!=0?4:3;break;case 3:d=HEAP[o+24]!=0?4:5;break;case 4:m=1;d=6;break;case 5:m=0;d=6;break;case 6:HEAP[o+20]=m;HEAP[o+16]-=1;n=p;d=7;break;case 7:return g=n;default:assert(0,"bad label: "+d)}} -function __PyEval_CallTracing(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=_PyEval_GetFrame();f=HEAP[f+56];h=HEAP[f+16];j=HEAP[f+20];HEAP[f+16]=0;b=HEAP[f+28]!=0?2:1;break;case 1:b=HEAP[f+24]!=0?2:3;break;case 2:d=1;b=4;break;case 3:d=0;b=4;break;case 4:return HEAP[f+20]=d,a=_PyObject_Call(a,c,0),HEAP[f+16]=h,HEAP[f+20]=j,a;default:assert(0,"bad label: "+b)}} -function _maybe_call_line_trace(g,e,b,a,c,d){var f=STACKTOP;STACKTOP+=8;_memset(f,0,8);var h;for(h=-1;;)switch(h){case -1:var j,k,l,m,n,o,p,q,r=f;j=g;k=e;l=b;m=a;n=c;o=d;p=0;q=HEAP[l+64];h=HEAP[l+60]=HEAP[n]?2:3;break;case 2:q=__PyCode_CheckLineNumber(HEAP[l+16],HEAP[l+60],r);HEAP[m]=HEAP[r];HEAP[n]=HEAP[r+4];h=3;break;case 3:h=HEAP[l+60]==HEAP[m]?5:4;break;case 4:h=HEAP[l+60]>8&255;f=c*2+d;h=HEAP[a]+4*(0-f)+-4;j=HEAP[h];b=HEAP[j+4]!=_PyCFunction_Type?49:1;break;case 1:b=c!=0?49:2;break;case 2:m=HEAP[HEAP[j+8]+8];n=HEAP[__PyThreadState_Current];b=(m&12)!=0?3:34;break;case 3:o=HEAP[HEAP[j+8]+4];p=HEAP[j+12];b=(m&4)==0?17:4;break;case 4:b=d!=0?17:5;break;case 5:b=HEAP[n+20]==0?16:6;break;case 6:b=HEAP[n+24]==0?16:7;break;case 7:b=_call_trace(HEAP[n+24],HEAP[n+ -32],HEAP[n+8],4,j)!=0?8:9;break;case 8:k=0;b=60;break;case 9:k=FUNCTION_TABLE[o](p,0);b=HEAP[n+24]!=0?10:60;break;case 10:var s=HEAP[n+8],t=HEAP[n+32],v=HEAP[n+24],w=j;b=k==0?11:12;break;case 11:_call_trace_protected(v,t,s,5,w);b=60;break;case 12:b=_call_trace(v,t,s,6,w)!=0?13:60;break;case 13:HEAP[k]-=1;b=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=15;break;case 15:k=0;b=60;break;case 16:k=FUNCTION_TABLE[o](p,0);b=60;break;case 17:b=(m&8)==0?33:18;break;case 18:b=d!=1? -33:19;break;case 19:HEAP[a]+=-4;q=HEAP[HEAP[a]];b=HEAP[n+20]==0?30:20;break;case 20:b=HEAP[n+24]==0?30:21;break;case 21:b=_call_trace(HEAP[n+24],HEAP[n+32],HEAP[n+8],4,j)!=0?22:23;break;case 22:k=0;b=31;break;case 23:k=FUNCTION_TABLE[o](p,q);b=HEAP[n+24]!=0?24:31;break;case 24:var x=HEAP[n+8],y=HEAP[n+32],z=HEAP[n+24],C=j;b=k==0?25:26;break;case 25:_call_trace_protected(z,y,x,5,C);b=31;break;case 26:b=_call_trace(z,y,x,6,C)!=0?27:31;break;case 27:HEAP[k]-=1;b=HEAP[k]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);b=29;break;case 29:k=0;b=31;break;case 30:k=FUNCTION_TABLE[o](p,q);b=31;break;case 31:HEAP[q]-=1;b=HEAP[q]==0?32:60;break;case 32:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);b=60;break;case 33:_err_args(j,m,d);k=0;b=60;break;case 34:r=_load_args(a,d);b=HEAP[n+20]==0?45:35;break;case 35:b=HEAP[n+24]==0?45:36;break;case 36:b=_call_trace(HEAP[n+24],HEAP[n+32],HEAP[n+8],4,j)!=0?37:38;break;case 37:k=0;b=46;break;case 38:k=_PyCFunction_Call(j,r,0);b=HEAP[n+24]!=0?39:46;break;case 39:var A=HEAP[n+ -8],G=HEAP[n+32],E=HEAP[n+24],D=j;b=k==0?40:41;break;case 40:_call_trace_protected(E,G,A,5,D);b=46;break;case 41:b=_call_trace(E,G,A,6,D)!=0?42:46;break;case 42:HEAP[k]-=1;b=HEAP[k]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=44;break;case 44:k=0;b=46;break;case 45:k=_PyCFunction_Call(j,r,0);b=46;break;case 46:b=r!=0?47:60;break;case 47:HEAP[r]-=1;b=HEAP[r]==0?48:60;break;case 48:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);b=60;break;case 49:b=HEAP[j+4]!=_PyMethod_Type?54:50;break;case 50:b= -HEAP[j+12]==0?54:51;break;case 51:u=HEAP[j+12];HEAP[u]+=1;j=HEAP[j+8];HEAP[j]+=1;b=HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=53;break;case 53:HEAP[h]=u;d+=1;f+=1;b=55;break;case 54:HEAP[j]+=1;b=55;break;case 55:var R=j,M=a;b=HEAP[j+4]==_PyFunction_Type?56:57;break;case 56:k=_fast_function(R,M,f,d,c);b=58;break;case 57:k=_do_call(R,M,d,c);b=58;break;case 58:HEAP[j]-=1;b=HEAP[j]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j); -b=60;break;case 60:b=HEAP[a]>h?61:64;break;case 61:HEAP[a]+=-4;l=HEAP[HEAP[a]];HEAP[l]-=1;b=HEAP[l]==0?63:62;break;case 62:b=HEAP[a]>h?61:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=62;break;case 64:return a=k;default:assert(0,"bad label: "+b)}} -function _fast_function(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x;f=g;h=e;j=b;k=a;l=c;n=HEAP[f+8];o=HEAP[f+12];p=HEAP[f+16];r=q=0;d=p==0?1:12;break;case 1:d=HEAP[n+8]==j?2:11;break;case 2:d=l==0?3:11;break;case 3:d=HEAP[n+20]==67?4:11;break;case 4:s=0;t=HEAP[__PyThreadState_Current];u=_PyFrame_New(t,n,o,0);d=u==0?5:6;break;case 5:m=0;d=14;break;case 6:v=u+312;w=HEAP[h]+4*(0-j);x=0;d=x=0?7:24;break;case 24:l=m;c=25;break;case 25:return g=l;default:assert(0,"bad label: "+c)}} -function _update_star_args(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;l=_PyTuple_New(f+d);c=l==0?1:2;break;case 1:k=0;c=8;break;case 2:c=f!=0?3:5;break;case 3:m=0;c=m=0?6:7;break;case 6:HEAP[j]+=-4;c=HEAP[HEAP[j]];HEAP[l+12+d*4]=c;d=c=d-1;c=c>=0?6:7;break;case 7:k=l;c=8;break;case 8:return g=k;default:assert(0,"bad label: "+c)}} -function _load_args(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=_PyTuple_New(c);b=f==0?2:1;break;case 1:c=b=c-1;b=b>=0?3:4;break;case 2:d=0;b=5;break;case 3:HEAP[a]+=-4;b=HEAP[HEAP[a]];HEAP[f+12+c*4]=b;c=b=c-1;b=b>=0?3:4;break;case 4:d=f;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _do_call(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;m=l=k=0;c=j>0?1:2;break;case 1:l=_update_keyword_args(0,j,f,d);c=l==0?17:2;break;case 2:k=c=_load_args(f,h);c=c==0?20:3;break;case 3:c=HEAP[d+4]==_PyCFunction_Type?4:16;break;case 4:n=HEAP[__PyThreadState_Current];c=HEAP[n+20]==0?15:5;break;case 5:c=HEAP[n+24]==0?15:6;break;case 6:c=_call_trace(HEAP[n+24],HEAP[n+32],HEAP[n+8],4,d)!=0?7:8;break;case 7:m=0;c=17;break;case 8:m=_PyCFunction_Call(d,k,l);c= -HEAP[n+24]!=0?9:17;break;case 9:var o=HEAP[n+8],p=HEAP[n+32],q=HEAP[n+24],r=d;c=m==0?10:11;break;case 10:_call_trace_protected(q,p,o,5,r);c=17;break;case 11:c=_call_trace(q,p,o,6,r)!=0?12:17;break;case 12:HEAP[m]-=1;c=HEAP[m]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=14;break;case 14:m=0;c=17;break;case 15:m=_PyCFunction_Call(d,k,l);c=17;break;case 16:m=_PyObject_Call(d,k,l);c=17;break;case 17:c=k!=0?18:20;break;case 18:HEAP[k]-=1;c=HEAP[k]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);c=20;break;case 20:c=l!=0?21:23;break;case 21:HEAP[l]-=1;c=HEAP[l]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=23;break;case 23:return g=m;default:assert(0,"bad label: "+c)}} -function _ext_do_call(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s;f=g;h=e;j=b;k=a;l=c;q=p=o=n=m=0;d=(j&2)!=0?1:11;break;case 1:HEAP[h]+=-4;p=HEAP[HEAP[h]];d=(HEAP[HEAP[p+4]+84]&536870912)==0?2:11;break;case 2:r=_PyDict_New();d=r==0?37:3;break;case 3:d=_PyDict_Update(r,p)!=0?4:8;break;case 4:HEAP[r]-=1;d=HEAP[r]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=6;break;case 6:d=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?7:37;break;case 7:d=HEAP[HEAP[p+ -4]+12];var t=_PyEval_GetFuncDesc(f),v=_PyEval_GetFuncName(f);_PyErr_Format(HEAP[_PyExc_TypeError],__str57544,allocate([v,0,0,0,t,0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=37;break;case 8:HEAP[p]-=1;d=HEAP[p]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=10;break;case 10:p=r;d=11;break;case 11:d=(j&1)!=0?12:20;break;case 12:HEAP[h]+=-4;o=HEAP[HEAP[h]];d=(HEAP[HEAP[o+4]+84]&67108864)==0?13:19;break;case 13:u=_PySequence_Tuple(o);d=u==0?14:16;break;case 14:d= -_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?15:37;break;case 15:d=HEAP[HEAP[o+4]+12];t=_PyEval_GetFuncDesc(f);v=_PyEval_GetFuncName(f);_PyErr_Format(HEAP[_PyExc_TypeError],__str58545,allocate([v,0,0,0,t,0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=37;break;case 16:HEAP[o]-=1;d=HEAP[o]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=18;break;case 18:o=u;d=19;break;case 19:m=HEAP[o+8];d=20;break;case 20:d=l>0?21:22;break;case 21:p=_update_keyword_args(p, -l,h,f);d=p==0?37:22;break;case 22:n=d=_update_star_args(k,m,o,h);d=d==0?40:23;break;case 23:d=HEAP[f+4]==_PyCFunction_Type?24:36;break;case 24:s=HEAP[__PyThreadState_Current];d=HEAP[s+20]==0?35:25;break;case 25:d=HEAP[s+24]==0?35:26;break;case 26:d=_call_trace(HEAP[s+24],HEAP[s+32],HEAP[s+8],4,f)!=0?27:28;break;case 27:q=0;d=37;break;case 28:q=_PyCFunction_Call(f,n,p);d=HEAP[s+24]!=0?29:37;break;case 29:var w=HEAP[s+8],x=HEAP[s+32],y=HEAP[s+24],z=f;d=q==0?30:31;break;case 30:_call_trace_protected(y, -x,w,5,z);d=37;break;case 31:d=_call_trace(y,x,w,6,z)!=0?32:37;break;case 32:HEAP[q]-=1;d=HEAP[q]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=34;break;case 34:q=0;d=37;break;case 35:q=_PyCFunction_Call(f,n,p);d=37;break;case 36:q=_PyObject_Call(f,n,p);d=37;break;case 37:d=n!=0?38:40;break;case 38:HEAP[n]-=1;d=HEAP[n]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);d=40;break;case 40:d=p!=0?41:43;break;case 41:HEAP[p]-=1;d=HEAP[p]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[p+ -4]+24]](p);d=43;break;case 43:d=o!=0?44:46;break;case 44:HEAP[o]-=1;d=HEAP[o]==0?45:46;break;case 45:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=46;break;case 46:return g=q;default:assert(0,"bad label: "+d)}} -function __PyEval_SliceIndex(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=a!=0?1:11;break;case 1:var h=a;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?2:3;break;case 2:f=HEAP[h+8];b=10;break;case 3:b=HEAP[HEAP[h+4]+48]==0?9:4;break;case 4:b=(HEAP[HEAP[a+4]+84]&131072)==0?9:5;break;case 5:b=HEAP[HEAP[HEAP[a+4]+48]+152]==0?9:6;break;case 6:f=_PyNumber_AsSsize_t(a,0);b=f==-1?7:10;break;case 7:b=_PyErr_Occurred()!=0?8:10;break;case 8:d=0;b=12;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str59546);d=0;b=12;break;case 10:HEAP[c]=f;b=11;break;case 11:d=1;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}} -function _apply_slice(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m=a+4,n,o;d=g;f=e;h=b;k=HEAP[HEAP[d+4]+52];c=k==0?19:1;break;case 1:c=HEAP[k+16]==0?19:2;break;case 2:c=f==0?8:3;break;case 3:c=(HEAP[HEAP[f+4]+84]&8388608)!=0?8:4;break;case 4:c=(HEAP[HEAP[f+4]+84]&16777216)!=0?8:5;break;case 5:c=HEAP[HEAP[f+4]+48]==0?19:6;break;case 6:c=(HEAP[HEAP[f+4]+84]&131072)==0?19:7;break;case 7:c=HEAP[HEAP[HEAP[f+4]+48]+152]!=0?8:19;break;case 8:c=h== -0?14:9;break;case 9:c=(HEAP[HEAP[h+4]+84]&8388608)!=0?14:10;break;case 10:c=(HEAP[HEAP[h+4]+84]&16777216)!=0?14:11;break;case 11:c=HEAP[HEAP[h+4]+48]==0?19:12;break;case 12:c=(HEAP[HEAP[h+4]+84]&131072)==0?19:13;break;case 13:c=HEAP[HEAP[HEAP[h+4]+48]+152]!=0?14:19;break;case 14:HEAP[l]=0;HEAP[m]=2147483647;c=__PyEval_SliceIndex(f,l)==0?15:16;break;case 15:j=0;c=24;break;case 16:c=__PyEval_SliceIndex(h,m)==0?17:18;break;case 17:j=0;c=24;break;case 18:j=_PySequence_GetSlice(d,HEAP[l],HEAP[m]);c=24; -break;case 19:n=c=_PySlice_New(f,h,0);c=c!=0?20:23;break;case 20:o=_PyObject_GetItem(d,n);HEAP[n]-=1;c=HEAP[n]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=22;break;case 22:j=o;c=24;break;case 23:j=0;c=24;break;case 24:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _assign_slice(g,e,b,a){var c=STACKTOP;STACKTOP+=8;_memset(c,0,8);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n=c,o=c+4,p,q;f=g;h=e;j=b;k=a;m=HEAP[HEAP[f+4]+52];d=m==0?21:1;break;case 1:d=HEAP[m+24]==0?21:2;break;case 2:d=h==0?8:3;break;case 3:d=(HEAP[HEAP[h+4]+84]&8388608)!=0?8:4;break;case 4:d=(HEAP[HEAP[h+4]+84]&16777216)!=0?8:5;break;case 5:d=HEAP[HEAP[h+4]+48]==0?21:6;break;case 6:d=(HEAP[HEAP[h+4]+84]&131072)==0?21:7;break;case 7:d=HEAP[HEAP[HEAP[h+4]+48]+152]!=0?8:21;break;case 8:d= -j==0?14:9;break;case 9:d=(HEAP[HEAP[j+4]+84]&8388608)!=0?14:10;break;case 10:d=(HEAP[HEAP[j+4]+84]&16777216)!=0?14:11;break;case 11:d=HEAP[HEAP[j+4]+48]==0?21:12;break;case 12:d=(HEAP[HEAP[j+4]+84]&131072)==0?21:13;break;case 13:d=HEAP[HEAP[HEAP[j+4]+48]+152]!=0?14:21;break;case 14:HEAP[n]=0;HEAP[o]=2147483647;d=__PyEval_SliceIndex(h,n)==0?15:16;break;case 15:l=-1;d=29;break;case 16:d=__PyEval_SliceIndex(j,o)==0?17:18;break;case 17:l=-1;d=29;break;case 18:var r=HEAP[o],u=HEAP[n],s=f;d=k==0?19:20; -break;case 19:l=_PySequence_DelSlice(s,u,r);d=29;break;case 20:l=_PySequence_SetSlice(s,u,r,k);d=29;break;case 21:p=d=_PySlice_New(h,j,0);d=d!=0?22:28;break;case 22:var t=f,v=p;d=k!=0?23:24;break;case 23:q=_PyObject_SetItem(t,v,k);d=25;break;case 24:q=_PyObject_DelItem(t,v);d=25;break;case 25:HEAP[p]-=1;d=HEAP[p]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=27;break;case 27:l=q;d=29;break;case 28:l=-1;d=29;break;case 29:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _cmp_outcome(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;l=0;a=d;a=a==6?3:a==7?5:a==8?1:a==9?2:a==10?8:31;break;case 1:var p=f==h;l=p;c=1;a=32;break;case 2:var q=f!=h;l=q;c=2;a=32;break;case 3:var r=l=_PySequence_Contains(h,f);r<0?(c=3,a=4):(c=3,a=32);break;case 4:k=0;a=36;break;case 5:l=_PySequence_Contains(h,f);a=l<0?6:7;break;case 6:k=0;a=36;break;case 7:var u=l==0;l=u;c=7;a=32;break;case 8:var s=h;a=(HEAP[HEAP[h+4]+84]&67108864)!=0?9:21;break;case 9:n= -_PyTuple_Size(s);m=0;a=20;break;case 10:o=HEAP[h+12+m*4];a=(HEAP[HEAP[o+4]+84]&134217728)!=0?11:13;break;case 11:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str60547,1);a=a<0?12:19;break;case 12:k=0;a=36;break;case 13:a=HEAP[_Py_Py3kWarningFlag]!=0?14:19;break;case 14:a=(HEAP[HEAP[o+4]+84]&67108864)==0?15:19;break;case 15:a=HEAP[HEAP[o+4]+84]>=0?17:16;break;case 16:a=(HEAP[o+84]&1073741824)==0?17:19;break;case 17:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str61548,1)<0?18:19;break;case 18:k= -0;a=36;break;case 19:m+=1;a=20;break;case 20:a=m=0?28:27;break;case 27:a=(HEAP[h+84]&1073741824)==0?28:30;break;case 28:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str61548,1)<0? -29:30;break;case 29:k=0;a=36;break;case 30:var t=_PyErr_GivenExceptionMatches(f,h);l=t;c=30;a=32;break;case 31:k=_PyObject_RichCompare(f,h,d);a=36;break;case 32:a=(c==3?r:c==30?t:c==7?u:c==2?q:p)!=0?33:34;break;case 33:j=__Py_TrueStruct;a=35;break;case 34:j=__Py_ZeroStruct;a=35;break;case 35:f=j;HEAP[f]+=1;k=f;a=36;break;case 36:return g=k;default:assert(0,"bad label: "+a)}} -function _import_from(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;a=_PyObject_GetAttr(a,c);b=a==0?1:3;break;case 1:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?2:3;break;case 2:b=_PyString_AsString(c);_PyErr_Format(HEAP[_PyExc_ImportError],__str62549,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=3;break;case 3:return c=a;default:assert(0,"bad label: "+b)}} -function _import_all_from(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;f=_PyObject_GetAttrString(c,__str63550);l=0;b=f==0?1:12;break;case 1:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?2:3;break;case 2:d=-1;b=37;break;case 3:_PyErr_Clear();h=_PyObject_GetAttrString(c,__str64551);b=h==0?4:7;break;case 4:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?5:6;break;case 5:d=-1;b=37;break;case 6:_PyErr_SetString(HEAP[_PyExc_ImportError],__str65552);d=-1; -b=37;break;case 7:f=_PyObject_CallMethod(h,__str66553,0,allocate(1,"i32",ALLOC_STACK));HEAP[h]-=1;b=HEAP[h]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=9;break;case 9:b=f==0?10:11;break;case 10:d=-1;b=37;break;case 11:l=1;b=12;break;case 12:n=m=0;b=13;break;case 13:j=b=_PySequence_GetItem(f,m);b=b==0?14:17;break;case 14:b=_PyErr_ExceptionMatches(HEAP[_PyExc_IndexError])==0?15:16;break;case 15:n=-1;b=34;break;case 16:_PyErr_Clear();b=34;break;case 17:b=l!=0?18:22;break;case 18:b=(HEAP[HEAP[j+ -4]+84]&134217728)!=0?19:22;break;case 19:b=HEAP[j+20]==95?20:22;break;case 20:HEAP[j]-=1;b=HEAP[j]==0?21:33;break;case 21:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=33;break;case 22:k=b=_PyObject_GetAttr(c,j);b=b==0?23:24;break;case 23:n=-1;b=27;break;case 24:var o=a,p=j,q=k;b=HEAP[a+4]==_PyDict_Type?25:26;break;case 25:n=_PyDict_SetItem(o,p,q);b=27;break;case 26:n=_PyObject_SetItem(o,p,q);b=27;break;case 27:HEAP[j]-=1;b=HEAP[j]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=29;break; -case 29:b=k!=0?30:32;break;case 30:HEAP[k]-=1;b=HEAP[k]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=32;break;case 32:b=n!=0?34:33;break;case 33:m+=1;b=13;break;case 34:HEAP[f]-=1;b=HEAP[f]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=36;break;case 36:d=n;b=37;break;case 37:return a=d;default:assert(0,"bad label: "+b)}} -function _build_class(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o=a,p=a+4,q=a+8,r;f=g;h=e;j=b;k=0;c=(HEAP[HEAP[f+4]+84]&536870912)!=0?1:2;break;case 1:var u=_PyDict_GetItemString(f,__str67554);k=u;d=1;c=3;break;case 2:var s=k,d=2;c=3;break;case 3:c=(d==2?s:u)!=0?4:5;break;case 4:HEAP[k]+=1;c=16;break;case 5:c=(HEAP[HEAP[h+4]+84]&67108864)==0?9:6;break;case 6:c=HEAP[h+8]<=0?9:7;break;case 7:m=HEAP[h+12];k=_PyObject_GetAttrString(m, -__str85);c=k==0?8:16;break;case 8:_PyErr_Clear();k=HEAP[m+4];HEAP[k]+=1;c=16;break;case 9:n=c=_PyEval_GetGlobals();c=c!=0?10:12;break;case 10:c=(HEAP[HEAP[n+4]+84]&536870912)!=0?11:12;break;case 11:var t=_PyDict_GetItemString(n,__str67554);k=t;d=11;c=13;break;case 12:var v=k,d=12;c=13;break;case 13:c=(d==12?v:t)==0?14:15;break;case 14:k=_PyClass_Type;c=15;break;case 15:HEAP[k]+=1;c=16;break;case 16:l=_PyObject_CallFunctionObjArgs(k,allocate([j,0,0,0,h,0,0,0,f,0,0,0,0,0,0,0],["%struct.NullImporter*", -0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[k]-=1;c=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);c=18;break;case 18:c=l==0?19:26;break;case 19:c=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?20:26;break;case 20:_PyErr_Fetch(o,p,q);c=(HEAP[HEAP[HEAP[p]+4]+84]&134217728)!=0?21:25;break;case 21:r=_PyString_FromFormat(__str69556,allocate([HEAP[p]+20,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=r!=0?22:25;break;case 22:c=HEAP[p]; -HEAP[c]-=1;c=HEAP[c]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[HEAP[p]+4]+24]](HEAP[p]);c=24;break;case 24:HEAP[p]=r;c=25;break;case 25:_PyErr_Restore(HEAP[o],HEAP[p],HEAP[q]);c=26;break;case 26:return g=l,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _exec_statement(g,e,b,a){var c=STACKTOP;STACKTOP+=12;_memset(c,0,12);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u=c,s,t=c+4,v=c+8;h=g;j=e;k=b;l=a;p=0;d=(HEAP[HEAP[j+4]+84]&67108864)!=0?1:7;break;case 1:d=k==__Py_NoneStruct?2:13;break;case 2:d=l==__Py_NoneStruct?3:7;break;case 3:n=_PyTuple_Size(j);d=n==2|n==3?4:7;break;case 4:k=_PyTuple_GetItem(j,1);d=n==3?5:6;break;case 5:l=_PyTuple_GetItem(j,2);d=6;break;case 6:j=_PyTuple_GetItem(j,0);d=7;break;case 7:d=k==__Py_NoneStruct? -8:13;break;case 8:var w=_PyEval_GetGlobals();k=w;l==__Py_NoneStruct?(f=8,d=9):(f=8,d=10);break;case 9:l=_PyEval_GetLocals();p=1;var x=k,f=9;d=10;break;case 10:d=(f==9?x:w)==0?12:11;break;case 11:d=l==0?12:15;break;case 12:_PyErr_SetString(HEAP[_PyExc_SystemError],__str70557);m=-1;d=57;break;case 13:d=l==__Py_NoneStruct?14:15;break;case 14:l=k;d=15;break;case 15:d=(HEAP[HEAP[j+4]+84]&134217728)==0?16:21;break;case 16:d=(HEAP[HEAP[j+4]+84]&268435456)==0?17:21;break;case 17:d=HEAP[j+4]!=_PyCode_Type? -18:21;break;case 18:d=HEAP[j+4]!=_PyFile_Type?19:21;break;case 19:d=_PyType_IsSubtype(HEAP[j+4],_PyFile_Type)==0?20:21;break;case 20:_PyErr_SetString(HEAP[_PyExc_TypeError],__str71558);m=-1;d=57;break;case 21:d=(HEAP[HEAP[k+4]+84]&536870912)==0?22:23;break;case 22:_PyErr_SetString(HEAP[_PyExc_TypeError],__str72559);m=-1;d=57;break;case 23:d=_PyMapping_Check(l)==0?24:25;break;case 24:_PyErr_SetString(HEAP[_PyExc_TypeError],__str73560);m=-1;d=57;break;case 25:d=_PyDict_GetItemString(k,__str74561)== -0?26:27;break;case 26:_PyDict_SetItemString(k,__str74561,HEAP[h+20]);d=27;break;case 27:var y=j;d=HEAP[j+4]==_PyCode_Type?28:31;break;case 28:d=HEAP[HEAP[y+40]+8]>0?29:30;break;case 29:_PyErr_SetString(HEAP[_PyExc_TypeError],__str75562);m=-1;d=57;break;case 30:o=_PyEval_EvalCode(j,k,l);d=50;break;case 31:d=HEAP[y+4]==_PyFile_Type?33:32;break;case 32:d=_PyType_IsSubtype(HEAP[j+4],_PyFile_Type)!=0?33:38;break;case 33:q=_PyFile_AsFile(j);r=_PyFile_Name(j);r=d=_PyString_AsString(r);d=d==0?34:35;break; -case 34:m=-1;d=57;break;case 35:HEAP[u]=0;d=_PyEval_MergeCompilerFlags(u);var z=q,C=r,A=k,G=l;d=d!=0?36:37;break;case 36:o=_PyRun_FileExFlags(z,C,257,A,G,0,u);d=50;break;case 37:o=_PyRun_FileExFlags(z,C,257,A,G,0,0);d=50;break;case 38:s=0;HEAP[v]=0;d=(HEAP[HEAP[j+4]+84]&268435456)!=0?39:42;break;case 39:s=_PyUnicodeUCS2_AsUTF8String(j);d=s==0?40:41;break;case 40:m=-1;d=57;break;case 41:j=s;HEAP[v]|=256;d=42;break;case 42:d=_PyString_AsStringAndSize(j,t,0)!=0?43:44;break;case 43:m=-1;d=57;break;case 44:d= -_PyEval_MergeCompilerFlags(v);var E=HEAP[t],D=k,R=l;d=d!=0?45:46;break;case 45:o=_PyRun_StringFlags(E,257,D,R,v);d=47;break;case 46:o=_PyRun_StringFlags(E,257,D,R,0);d=47;break;case 47:d=s!=0?48:50;break;case 48:HEAP[s]-=1;d=HEAP[s]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=50;break;case 50:d=p!=0?51:52;break;case 51:_PyFrame_LocalsToFast(h,0);d=52;break;case 52:d=o==0?53:54;break;case 53:m=-1;d=57;break;case 54:HEAP[o]-=1;d=HEAP[o]==0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[o+ -4]+24]](o);d=56;break;case 56:m=0;d=57;break;case 57:return g=m,STACKTOP=c,g;default:assert(0,"bad label: "+d)}}function _format_exc_check_arg(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=f==0?3:1;break;case 1:h=_PyString_AsString(f);a=h==0?3:2;break;case 2:_PyErr_Format(c,d,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=3;break;case 3:return;default:assert(0,"bad label: "+a)}} -function _string_concatenate(g,e,b,a){var c=STACKTOP;STACKTOP+=4;_memset(c,0,4);var d;for(d=-1;;)switch(d){case -1:var f=c,h,j,k,l,m,n,o,p,q,r,u,s,t;HEAP[f]=g;h=e;j=b;k=a;m=HEAP[HEAP[f]+8];n=HEAP[h+8];o=n+m;d=o<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str76563);l=0;d=20;break;case 2:d=HEAP[HEAP[f]]==2?3:14;break;case 3:d=HEAP[k];d=d==90?10:d==125?4:d==137?8:14;break;case 4:p=HEAP[k+1]+HEAP[k+2]*256;q=j+312;d=HEAP[q+4*p]==HEAP[f]?5:14;break;case 5:r=HEAP[q+4*p];HEAP[q+4*p]= -0;d=r!=0?6:14;break;case 6:HEAP[r]-=1;d=HEAP[r]==0?7:14;break;case 7:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=14;break;case 8:u=j+312+4*HEAP[HEAP[j+16]+12];u=HEAP[u+4*(HEAP[k+1]+HEAP[k+2]*256)];d=HEAP[u+8]==HEAP[f]?9:14;break;case 9:_PyCell_Set(u,0);d=14;break;case 10:s=HEAP[HEAP[j+16]+32];s=HEAP[s+12+(HEAP[k+1]+HEAP[k+2]*256)*4];t=HEAP[j+28];d=HEAP[t+4]==_PyDict_Type?11:14;break;case 11:d=_PyDict_GetItem(t,s)==HEAP[f]?12:14;break;case 12:d=_PyDict_DelItem(t,s)!=0?13:14;break;case 13:_PyErr_Clear(); -d=14;break;case 14:d=HEAP[HEAP[f]]!=1?19:15;break;case 15:d=HEAP[HEAP[f]+16]!=0?19:16;break;case 16:d=__PyString_Resize(f,o)!=0?17:18;break;case 17:l=0;d=20;break;case 18:_llvm_memcpy_p0i8_p0i8_i32(HEAP[f]+20+m,h+20,n,1,0);l=HEAP[f];d=20;break;case 19:_PyString_Concat(f,h);l=HEAP[f];d=20;break;case 20:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyClass_New(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m,n,o,p,q,r;d=g;f=e;h=b;c=HEAP[_docstr_8341]==0?1:3;break;case 1:c=_PyString_InternFromString(__str572);HEAP[_docstr_8341]=c;c=HEAP[_docstr_8341]==0?2:3;break;case 2:j=0;c=55;break;case 3:c=HEAP[_modstr_8342]==0?4:6;break;case 4:c=_PyString_InternFromString(__str1573);HEAP[_modstr_8342]=c;c=HEAP[_modstr_8342]==0?5:6;break;case 5:j=0;c=55;break;case 6:c=HEAP[_namestr_8343]==0? -7:9;break;case 7:c=_PyString_InternFromString(__str2574);HEAP[_namestr_8343]=c;c=HEAP[_namestr_8343]==0?8:9;break;case 8:j=0;c=55;break;case 9:c=h==0?11:10;break;case 10:c=(HEAP[HEAP[h+4]+84]&134217728)==0?11:12;break;case 11:_PyErr_SetString(HEAP[_PyExc_TypeError],__str3575);j=0;c=55;break;case 12:c=f==0?14:13;break;case 13:c=(HEAP[HEAP[f+4]+84]&536870912)==0?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_TypeError],__str4576);j=0;c=55;break;case 15:c=_PyDict_GetItem(f,HEAP[_docstr_8341])==0?16: -18;break;case 16:c=_PyDict_SetItem(f,HEAP[_docstr_8341],__Py_NoneStruct)<0?17:18;break;case 17:j=0;c=55;break;case 18:c=_PyDict_GetItem(f,HEAP[_modstr_8342])==0?19:23;break;case 19:m=_PyEval_GetGlobals();c=m!=0?20:23;break;case 20:n=_PyDict_GetItem(m,HEAP[_namestr_8343]);c=n!=0?21:23;break;case 21:c=_PyDict_SetItem(f,HEAP[_modstr_8342],n)<0?22:23;break;case 22:j=0;c=55;break;case 23:c=d==0?24:26;break;case 24:d=_PyTuple_New(0);c=d==0?25:36;break;case 25:j=0;c=55;break;case 26:c=(HEAP[HEAP[d+4]+84]& -67108864)==0?27:28;break;case 27:_PyErr_SetString(HEAP[_PyExc_TypeError],__str5577);j=0;c=55;break;case 28:p=_PyTuple_Size(d);o=0;c=34;break;case 29:q=HEAP[u+12+o*4];c=HEAP[q+4]!=_PyClass_Type?30:33;break;case 30:c=_PyCallable_Check(HEAP[q+4])!=0?31:32;break;case 31:j=_PyObject_CallFunctionObjArgs(HEAP[q+4],allocate([h,0,0,0,d,0,0,0,f,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=55;break;case 32:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str6578);j=0;c=55;break;case 33:o+=1;c=34;break;case 34:var u=d;c=o=0?19:20;break;case 19:d=l>0;b=21;break;case 20:d=-1;b=21;break;case 21:return a=d;default:assert(0,"bad label: "+b)}} -function _generic_unary_op(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;c=_instance_getattr(g,e);b=c==0?1:2;break;case 1:a=0;b=5;break;case 2:d=_PyEval_CallObjectWithKeywords(c,0,0);HEAP[c]-=1;b=HEAP[c]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=4;break;case 4:a=d;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _generic_binary_op(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;j=_PyObject_GetAttrString(a,b);a=j==0?1:4;break;case 1:a=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?2:3;break;case 2:d=0;a=13;break;case 3:_PyErr_Clear();HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;a=13;break;case 4:h=_PyTuple_Pack(1,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));var k=j;a=h==0?5:8;break;case 5:HEAP[j]=HEAP[k]-1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+ -4]+24]](j);a=7;break;case 7:d=0;a=13;break;case 8:f=_PyEval_CallObjectWithKeywords(k,h,0);HEAP[h]-=1;a=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=10;break;case 10:HEAP[j]-=1;a=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=12;break;case 12:d=f;a=13;break;case 13:return g=d;default:assert(0,"bad label: "+a)}} -function _half_binop(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r;f=g;h=e;j=b;k=a;l=c;p=0;d=HEAP[f+4]!=_PyInstance_Type?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;m=__Py_NotImplementedStruct;d=41;break;case 2:d=HEAP[_coerce_obj]==0?3:5;break;case 3:d=_PyString_InternFromString(__str73646);HEAP[_coerce_obj]=d;d=HEAP[_coerce_obj]==0?4:5;break;case 4:m=0;d=41;break;case 5:o=d=_PyObject_GetAttr(f,HEAP[_coerce_obj]);d=d==0?6:9;break;case 6:d=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])== -0?7:8;break;case 7:m=0;d=41;break;case 8:_PyErr_Clear();m=_generic_binary_op(f,h,j);d=41;break;case 9:n=_PyTuple_Pack(1,allocate([h,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));var u=o;d=n==0?10:13;break;case 10:HEAP[o]=HEAP[u]-1;d=HEAP[o]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=12;break;case 12:m=0;d=41;break;case 13:p=_PyEval_CallObjectWithKeywords(u,n,0);HEAP[n]-=1;d=HEAP[n]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);d=15;break;case 15:HEAP[o]-= -1;d=HEAP[o]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=17;break;case 17:d=p==0?18:19;break;case 18:m=0;d=41;break;case 19:var s=p;d=p==__Py_NoneStruct|p==__Py_NotImplementedStruct?20:23;break;case 20:HEAP[p]=HEAP[s]-1;d=HEAP[p]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=22;break;case 22:m=_generic_binary_op(f,h,j);d=41;break;case 23:d=(HEAP[HEAP[s+4]+84]&67108864)==0?25:24;break;case 24:d=_PyTuple_Size(p)!=2?25:28;break;case 25:HEAP[p]-=1;d=HEAP[p]==0?26:27; -break;case 26:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=27;break;case 27:_PyErr_SetString(HEAP[_PyExc_TypeError],__str74647);m=0;d=41;break;case 28:q=_PyTuple_GetItem(p,0);h=_PyTuple_GetItem(p,1);d=HEAP[q+4]!=HEAP[f+4]?31:29;break;case 29:d=HEAP[f+4]!=_PyInstance_Type?31:30;break;case 30:r=_generic_binary_op(q,h,j);d=38;break;case 31:d=HEAP[__PyThreadState_Current];HEAP[d+12]+=1;d=HEAP[d+12]>HEAP[__Py_CheckRecursionLimit]?32:34;break;case 32:d=__Py_CheckRecursiveCall(__str75648)!=0?33:34;break;case 33:m= -0;d=41;break;case 34:var t=k;d=l!=0?35:36;break;case 35:r=FUNCTION_TABLE[t](h,q);d=37;break;case 36:r=FUNCTION_TABLE[t](q,h);d=37;break;case 37:HEAP[HEAP[__PyThreadState_Current]+12]-=1;d=38;break;case 38:HEAP[p]-=1;d=HEAP[p]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=40;break;case 40:m=r;d=41;break;case 41:return g=m;default:assert(0,"bad label: "+d)}} -function _do_binop(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l;f=g;h=e;d=b;j=a;k=c;l=_half_binop(f,h,d,k,0);d=l==__Py_NotImplementedStruct?1:4;break;case 1:HEAP[l]-=1;d=HEAP[l]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);d=3;break;case 3:l=_half_binop(h,f,j,k,1);d=4;break;case 4:return g=l;default:assert(0,"bad label: "+d)}} -function _do_binop_inplace(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;f=b;k=a;l=c;m=d;n=_half_binop(h,j,f,m,0);f=n==__Py_NotImplementedStruct?1:4;break;case 1:HEAP[n]-=1;f=HEAP[n]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);f=3;break;case 3:n=_do_binop(h,j,k,l,m);f=4;break;case 4:return g=n;default:assert(0,"bad label: "+f)}} -function _instance_coerce(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;f=HEAP[a];h=HEAP[c];b=HEAP[_coerce_obj]==0?1:3;break;case 1:b=_PyString_InternFromString(__str73646);HEAP[_coerce_obj]=b;b=HEAP[_coerce_obj]==0?2:3;break;case 2:d=-1;b=27;break;case 3:j=b=_PyObject_GetAttr(f,HEAP[_coerce_obj]);b=b==0?4:7;break;case 4:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?5:6;break;case 5:d=-1;b=27;break;case 6:_PyErr_Clear();d=1;b=27;break;case 7:k=_PyTuple_Pack(1,allocate([h, -0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=k==0?8:9;break;case 8:d=-1;b=27;break;case 9:l=_PyEval_CallObjectWithKeywords(j,k,0);HEAP[k]-=1;b=HEAP[k]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=11;break;case 11:HEAP[j]-=1;b=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=13;break;case 13:b=l==0?14:15;break;case 14:d=-1;b=27;break;case 15:var m=l;b=l==__Py_NoneStruct|l==__Py_NotImplementedStruct?16:19;break;case 16:HEAP[l]=HEAP[m]-1;b=HEAP[l]==0? -17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=18;break;case 18:d=1;b=27;break;case 19:b=(HEAP[HEAP[m+4]+84]&67108864)==0?21:20;break;case 20:b=_PyTuple_Size(l)!=2?21:24;break;case 21:HEAP[l]-=1;b=HEAP[l]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=23;break;case 23:_PyErr_SetString(HEAP[_PyExc_TypeError],__str74647);d=-1;b=27;break;case 24:b=_PyTuple_GetItem(l,0);HEAP[a]=b;b=_PyTuple_GetItem(l,1);HEAP[c]=b;HEAP[HEAP[a]]+=1;HEAP[HEAP[c]]+=1;HEAP[l]-=1;b=HEAP[l]==0?25: -26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=26;break;case 26:d=0;b=27;break;case 27:return a=d;default:assert(0,"bad label: "+b)}}function _instance_neg(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_10701]==0?1:3;break;case 1:e=_PyString_InternFromString(__str76649);HEAP[_o_10701]=e;e=HEAP[_o_10701]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_10701]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_pos(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_10716]==0?1:3;break;case 1:e=_PyString_InternFromString(__str77650);HEAP[_o_10716]=e;e=HEAP[_o_10716]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_10716]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_abs(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_10731]==0?1:3;break;case 1:e=_PyString_InternFromString(__str78651);HEAP[_o_10731]=e;e=HEAP[_o_10731]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_10731]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}}function _instance_or(g,e){return _do_binop(g,e,__str79652,__str80653,8)}function _instance_and(g,e){return _do_binop(g,e,__str81654,__str82655,10)} -function _instance_xor(g,e){return _do_binop(g,e,__str83656,__str84657,12)}function _instance_lshift(g,e){return _do_binop(g,e,__str85658,__str86659,14)}function _instance_rshift(g,e){return _do_binop(g,e,__str87660,__str88661,16)}function _instance_add(g,e){return _do_binop(g,e,__str89662,__str90663,18)}function _instance_sub(g,e){return _do_binop(g,e,__str91664,__str92665,20)}function _instance_mul(g,e){return _do_binop(g,e,__str93666,__str94667,22)} -function _instance_div(g,e){return _do_binop(g,e,__str95668,__str96669,24)}function _instance_mod(g,e){return _do_binop(g,e,__str97670,__str98671,26)}function _instance_divmod(g,e){return _do_binop(g,e,__str99672,__str100673,28)}function _instance_floordiv(g,e){return _do_binop(g,e,__str101674,__str102675,30)}function _instance_truediv(g,e){return _do_binop(g,e,__str103676,__str104677,32)}function _instance_ior(g,e){return _do_binop_inplace(g,e,__str105678,__str79652,__str80653,34)} -function _instance_ixor(g,e){return _do_binop_inplace(g,e,__str106679,__str83656,__str84657,36)}function _instance_iand(g,e){return _do_binop_inplace(g,e,__str107680,__str81654,__str82655,38)}function _instance_ilshift(g,e){return _do_binop_inplace(g,e,__str108681,__str85658,__str86659,40)}function _instance_irshift(g,e){return _do_binop_inplace(g,e,__str109682,__str87660,__str88661,42)}function _instance_iadd(g,e){return _do_binop_inplace(g,e,__str110683,__str89662,__str90663,44)} -function _instance_isub(g,e){return _do_binop_inplace(g,e,__str111684,__str91664,__str92665,46)}function _instance_imul(g,e){return _do_binop_inplace(g,e,__str112685,__str93666,__str94667,48)}function _instance_idiv(g,e){return _do_binop_inplace(g,e,__str113686,__str95668,__str96669,50)}function _instance_imod(g,e){return _do_binop_inplace(g,e,__str114687,__str97670,__str98671,52)}function _instance_ifloordiv(g,e){return _do_binop_inplace(g,e,__str115688,__str101674,__str102675,54)} -function _instance_itruediv(g,e){return _do_binop_inplace(g,e,__str116689,__str103676,__str104677,56)} -function _half_cmp(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;b=HEAP[_cmp_obj_10922]==0?1:3;break;case 1:b=_PyString_InternFromString(__str51624);HEAP[_cmp_obj_10922]=b;b=HEAP[_cmp_obj_10922]==0?2:3;break;case 2:h=-2;b=31;break;case 3:k=b=_PyObject_GetAttr(c,HEAP[_cmp_obj_10922]);b=b==0?4:7;break;case 4:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?5:6;break;case 5:h=-2;b=31;break;case 6:_PyErr_Clear();h=2;b=31;break;case 7:j=_PyTuple_Pack(1,allocate([d, -0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));var n=k;b=j==0?8:11;break;case 8:HEAP[k]=HEAP[n]-1;b=HEAP[k]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=10;break;case 10:h=-2;b=31;break;case 11:l=_PyEval_CallObjectWithKeywords(n,j,0);HEAP[j]-=1;b=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=13;break;case 13:HEAP[k]-=1;b=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=15;break;case 15:b=l==0?16:17;break;case 16:h=-2;b=31;break; -case 17:var o=l;b=l==__Py_NotImplementedStruct?18:21;break;case 18:HEAP[l]=HEAP[o]-1;b=HEAP[l]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=20;break;case 20:h=2;b=31;break;case 21:m=_PyInt_AsLong(o);HEAP[l]-=1;b=HEAP[l]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=23;break;case 23:var p=m;p==-1?(a=23,b=24):(a=23,b=27);break;case 24:b=_PyErr_Occurred()!=0?25:26;break;case 25:_PyErr_SetString(HEAP[_PyExc_TypeError],__str117690);h=-2;b=31;break;case 26:var q=m,a=26; -b=27;break;case 27:b=(a==26?q:p)>=0?28:29;break;case 28:f=m>0;b=30;break;case 29:f=-1;b=30;break;case 30:h=f;b=31;break;case 31:return a=h;default:assert(0,"bad label: "+b)}} -function _instance_compare(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h,j;HEAP[c]=g;HEAP[d]=e;j=_PyNumber_CoerceEx(c,d);a=j<0?1:2;break;case 1:h=-2;a=37;break;case 2:var k=HEAP[c];a=j==0?3:15;break;case 3:a=HEAP[k+4]!=_PyInstance_Type?4:16;break;case 4:a=HEAP[HEAP[d]+4]!=_PyInstance_Type?5:16;break;case 5:j=_PyObject_Compare(HEAP[c],HEAP[d]);a=HEAP[c];HEAP[a]-=1;a=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[c]+4]+24]](HEAP[c]);a= -7;break;case 7:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=9;break;case 9:a=_PyErr_Occurred()!=0?10:11;break;case 10:h=-2;a=37;break;case 11:a=j>=0?12:13;break;case 12:f=j>0;a=14;break;case 13:f=-1;a=14;break;case 14:h=f;a=37;break;case 15:HEAP[k]+=1;HEAP[HEAP[d]]+=1;a=16;break;case 16:a=HEAP[HEAP[c]+4]==_PyInstance_Type?17:23;break;case 17:j=_half_cmp(HEAP[c],HEAP[d]);a=j<=1?18:23;break;case 18:a=HEAP[c];HEAP[a]-=1;a=HEAP[a]==0?19:20;break; -case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[c]+4]+24]](HEAP[c]);a=20;break;case 20:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=22;break;case 22:h=j;a=37;break;case 23:a=HEAP[HEAP[d]+4]==_PyInstance_Type?24:32;break;case 24:j=_half_cmp(HEAP[d],HEAP[c]);a=j<=1?25:32;break;case 25:a=HEAP[c];HEAP[a]-=1;a=HEAP[a]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[HEAP[c]+4]+24]](HEAP[c]);a=27;break;case 27:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?28:29;break; -case 28:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=29;break;case 29:a=j>=-1?30:31;break;case 30:j=0-j;a=31;break;case 31:h=j;a=37;break;case 32:a=HEAP[c];HEAP[a]-=1;a=HEAP[a]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[HEAP[c]+4]+24]](HEAP[c]);a=34;break;case 34:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=36;break;case 36:h=2;a=37;break;case 37:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _instance_nonzero(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=HEAP[_nonzerostr_11141]==0?1:3;break;case 1:e=_PyString_InternFromString(__str118691);HEAP[_nonzerostr_11141]=e;e=HEAP[_nonzerostr_11141]==0?2:3;break;case 2:a=-1;e=26;break;case 3:c=e=_instance_getattr(b,HEAP[_nonzerostr_11141]);e=e==0?4:13;break;case 4:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?5:6;break;case 5:a=-1;e=26;break;case 6:_PyErr_Clear();e=HEAP[_lenstr]==0?7:9;break;case 7:e=_PyString_InternFromString(__str54627); -HEAP[_lenstr]=e;e=HEAP[_lenstr]==0?8:9;break;case 8:a=-1;e=26;break;case 9:c=e=_instance_getattr(b,HEAP[_lenstr]);e=e==0?10:13;break;case 10:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?11:12;break;case 11:a=-1;e=26;break;case 12:_PyErr_Clear();a=1;e=26;break;case 13:d=_PyEval_CallObjectWithKeywords(c,0,0);HEAP[c]-=1;e=HEAP[c]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=15;break;case 15:e=d==0?16:17;break;case 16:a=-1;e=26;break;case 17:var h=d;e=(HEAP[HEAP[d+4]+84]& -8388608)==0?18:21;break;case 18:HEAP[d]=HEAP[h]-1;e=HEAP[d]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=20;break;case 20:_PyErr_SetString(HEAP[_PyExc_TypeError],__str119692);a=-1;e=26;break;case 21:f=_PyInt_AsLong(h);HEAP[d]-=1;e=HEAP[d]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=23;break;case 23:e=f<0?24:25;break;case 24:_PyErr_SetString(HEAP[_PyExc_ValueError],__str120693);a=-1;e=26;break;case 25:a=f>0;e=26;break;case 26:return g=a;default:assert(0,"bad label: "+ -e)}} -function _instance_index(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[_indexstr_11213]==0?1:3;break;case 1:e=_PyString_InternFromString(__str121694);HEAP[_indexstr_11213]=e;e=HEAP[_indexstr_11213]==0?2:3;break;case 2:a=0;e=10;break;case 3:c=e=_instance_getattr(b,HEAP[_indexstr_11213]);e=e==0?4:7;break;case 4:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?5:6;break;case 5:a=0;e=10;break;case 6:_PyErr_Clear();_PyErr_SetString(HEAP[_PyExc_TypeError],__str122695);a=0;e=10;break; -case 7:d=_PyEval_CallObjectWithKeywords(c,0,0);HEAP[c]-=1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=9;break;case 9:a=d;e=10;break;case 10:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_invert(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_11243]==0?1:3;break;case 1:e=_PyString_InternFromString(__str123696);HEAP[_o_11243]=e;e=HEAP[_o_11243]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_11243]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function __instance_trunc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_11258]==0?1:3;break;case 1:e=_PyString_InternFromString(__str58);HEAP[_o_11258]=e;e=HEAP[_o_11258]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_11258]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_int(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_int_name_11274]==0?1:3;break;case 1:e=_PyString_InternFromString(__str57);HEAP[_int_name_11274]=e;e=HEAP[_int_name_11274]==0?2:3;break;case 2:a=0;e=6;break;case 3:e=_PyObject_HasAttr(b,HEAP[_int_name_11274])!=0?4:5;break;case 4:a=_generic_unary_op(b,HEAP[_int_name_11274]);e=6;break;case 5:a=__instance_trunc(b);a=__PyNumber_ConvertIntegralToInt(a,__str60);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_long(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_11296]==0?1:3;break;case 1:e=_PyString_InternFromString(__str127700);HEAP[_o_11296]=e;e=HEAP[_o_11296]==0?2:3;break;case 2:a=0;e=6;break;case 3:e=_PyObject_HasAttr(b,HEAP[_o_11296])!=0?4:5;break;case 4:a=_generic_unary_op(b,HEAP[_o_11296]);e=6;break;case 5:a=_instance_int(b);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_float(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_11317]==0?1:3;break;case 1:e=_PyString_InternFromString(__str128701);HEAP[_o_11317]=e;e=HEAP[_o_11317]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_11317]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_oct(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_11332]==0?1:3;break;case 1:e=_PyString_InternFromString(__str129702);HEAP[_o_11332]=e;e=HEAP[_o_11332]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_11332]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_hex(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_o_11347]==0?1:3;break;case 1:e=_PyString_InternFromString(__str130703);HEAP[_o_11347]=e;e=HEAP[_o_11347]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_generic_unary_op(b,HEAP[_o_11347]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}}function _bin_power(g,e){return _PyNumber_Power(g,e,__Py_NoneStruct)} -function _instance_pow(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;a=g;c=e;d=b;var l=a;a=d==__Py_NoneStruct?1:2;break;case 1:f=_do_binop(l,c,__str131704,__str132705,58);a=13;break;case 2:h=_PyObject_GetAttrString(l,__str131704);a=h==0?3:4;break;case 3:f=0;a=13;break;case 4:j=_PyTuple_Pack(2,allocate([c,0,0,0,d,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));var m=h;a=j==0?5:8;break;case 5:HEAP[h]=HEAP[m]-1;a=HEAP[h]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);a=7;break;case 7:f=0;a=13;break;case 8:k=_PyEval_CallObjectWithKeywords(m,j,0);HEAP[h]-=1;a=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=10;break;case 10:HEAP[j]-=1;a=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=12;break;case 12:f=k;a=13;break;case 13:return g=f;default:assert(0,"bad label: "+a)}}function _bin_inplace_power(g,e){return _PyNumber_InPlacePower(g,e,__Py_NoneStruct)} -function _instance_ipow(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;var m=c;a=f==__Py_NoneStruct?1:2;break;case 1:h=_do_binop_inplace(m,d,__str133706,__str131704,__str132705,60);a=15;break;case 2:j=_PyObject_GetAttrString(m,__str133706);a=j==0?3:6;break;case 3:a=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?4:5;break;case 4:h=0;a=15;break;case 5:_PyErr_Clear();h=_instance_pow(c,d,f);a=15;break;case 6:k=_PyTuple_Pack(2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter*", -0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));var n=j;a=k==0?7:10;break;case 7:HEAP[j]=HEAP[n]-1;a=HEAP[j]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=9;break;case 9:h=0;a=15;break;case 10:l=_PyEval_CallObjectWithKeywords(n,k,0);HEAP[j]-=1;a=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=12;break;case 12:HEAP[k]-=1;a=HEAP[k]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=14;break;case 14:h=l;a=15;break;case 15:return g=h;default:assert(0, -"bad label: "+a)}} -function _init_name_op(){var g=STACKTOP;STACKTOP+=24;_memset(g,0,24);var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d=g;HEAP[d]=__str134707;HEAP[d+4]=__str135708;HEAP[d+8]=__str50623;HEAP[d+12]=__str136709;HEAP[d+16]=__str137710;HEAP[d+20]=__str138711;e=_malloc(24);HEAP[_name_op]=e;e=e==0?1:2;break;case 1:a=-1;e=8;break;case 2:c=0;b=2;e=6;break;case 3:e=HEAP[_name_op];var f=_PyString_InternFromString(HEAP[d+c*4]);HEAP[e+4*c]=f;e=HEAP[HEAP[_name_op]+4*c]==0?4:5;break;case 4:a=-1;e=8;break;case 5:var h= -c+1;c=h;b=5;e=6;break;case 6:e=(b==5?h:0)<=5?3:7;break;case 7:a=0;e=8;break;case 8:return b=a,STACKTOP=g,b;default:assert(0,"bad label: "+e)}} -function _half_richcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;a=HEAP[_name_op]==0?1:3;break;case 1:a=_init_name_op()<0?2:3;break;case 2:j=0;a=21;break;case 3:var n=HEAP[HEAP[_name_op]+4*h],o=d;a=HEAP[HEAP[d+8]+20]==0?4:5;break;case 4:var p=_instance_getattr2(o,n);k=p;c=4;a=6;break;case 5:var q=_PyObject_GetAttr(o,n);k=q;c=5;a=6;break;case 6:a=(c==5?q:p)==0?7:12;break;case 7:a=_PyErr_Occurred()!=0?8:11;break;case 8:a=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])== -0?9:10;break;case 9:j=0;a=21;break;case 10:_PyErr_Clear();a=11;break;case 11:m=__Py_NotImplementedStruct;HEAP[m]+=1;j=m;a=21;break;case 12:l=_PyTuple_Pack(1,allocate([f,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));var r=k;a=l==0?13:16;break;case 13:HEAP[k]=HEAP[r]-1;a=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=15;break;case 15:j=0;a=21;break;case 16:m=_PyEval_CallObjectWithKeywords(r,l,0);HEAP[l]-=1;a=HEAP[l]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[l+4]+ -24]](l);a=18;break;case 18:HEAP[k]-=1;a=HEAP[k]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=20;break;case 20:j=m;a=21;break;case 21:return g=j;default:assert(0,"bad label: "+a)}} -function _instance_richcompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+4]==_PyInstance_Type?1:5;break;case 1:var k=j=_half_richcompare(c,d,f);a=j!=__Py_NotImplementedStruct?2:3;break;case 2:h=k;a=11;break;case 3:HEAP[j]=HEAP[k]-1;a=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=5;break;case 5:a=HEAP[d+4]==_PyInstance_Type?6:10;break;case 6:var l=j=_half_richcompare(d,c,HEAP[__Py_SwappedOp+f*4]);a=j!=__Py_NotImplementedStruct?7:8;break;case 7:h= -l;a=11;break;case 8:HEAP[j]=HEAP[l]-1;a=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=10;break;case 10:HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct;a=11;break;case 11:return g=h;default:assert(0,"bad label: "+a)}} -function _instance_getiter(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[_iterstr]==0?1:3;break;case 1:e=_PyString_InternFromString(__str139712);HEAP[_iterstr]=e;e=HEAP[_iterstr]==0?2:3;break;case 2:a=0;e=24;break;case 3:e=HEAP[_getitemstr]==0?4:6;break;case 4:e=_PyString_InternFromString(__str67);HEAP[_getitemstr]=e;e=HEAP[_getitemstr]==0?5:6;break;case 5:a=0;e=24;break;case 6:c=e=_instance_getattr(b,HEAP[_iterstr]);e=e!=0?7:17;break;case 7:d=_PyEval_CallObjectWithKeywords(c,0,0); -HEAP[c]-=1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=9;break;case 9:e=d!=0?10:16;break;case 10:e=(HEAP[HEAP[d+4]+84]&128)==0?13:11;break;case 11:e=HEAP[HEAP[d+4]+112]==0?13:12;break;case 12:e=HEAP[HEAP[d+4]+112]==6?13:16;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str140713,allocate([HEAP[HEAP[d+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[d]-=1;e=HEAP[d]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=15;break;case 15:d=0;e=16;break;case 16:a= -d;e=24;break;case 17:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?18:19;break;case 18:a=0;e=24;break;case 19:_PyErr_Clear();c=_instance_getattr(b,HEAP[_getitemstr]);e=c==0?20:21;break;case 20:_PyErr_SetString(HEAP[_PyExc_TypeError],__str141714);a=0;e=24;break;case 21:HEAP[c]-=1;e=HEAP[c]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=23;break;case 23:a=_PySeqIter_New(b);e=24;break;case 24:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_iternext(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[_nextstr]==0?1:3;break;case 1:e=_PyString_InternFromString(__str142715);HEAP[_nextstr]=e;e=HEAP[_nextstr]==0?2:3;break;case 2:a=0;e=12;break;case 3:c=e=_instance_getattr(b,HEAP[_nextstr]);e=e!=0?4:11;break;case 4:d=_PyEval_CallObjectWithKeywords(c,0,0);HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:e=d!=0?7:8;break;case 7:a=d;e=12;break;case 8:e=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!= -0?9:10;break;case 9:_PyErr_Clear();a=0;e=12;break;case 10:a=0;e=12;break;case 11:_PyErr_SetString(HEAP[_PyExc_TypeError],__str143716);a=0;e=12;break;case 12:return g=a;default:assert(0,"bad label: "+e)}} -function _instance_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=_PyObject_GetAttrString(c,__str144717);a=k==0?1:4;break;case 1:l=c;a=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])==0?2:3;break;case 2:h=0;a=11;break;case 3:_PyErr_Clear();h=_PyString_AsString(HEAP[HEAP[l+8]+16]);_PyErr_Format(HEAP[_PyExc_AttributeError],__str145718,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=11;break;case 4:a=HEAP[__PyThreadState_Current];HEAP[a+12]+=1;a=HEAP[a+12]<= -HEAP[__Py_CheckRecursionLimit]?7:5;break;case 5:a=__Py_CheckRecursiveCall(__str146719)==0?7:6;break;case 6:j=0;a=8;break;case 7:j=_PyObject_Call(k,d,f);HEAP[HEAP[__PyThreadState_Current]+12]-=1;a=8;break;case 8:HEAP[k]-=1;a=HEAP[k]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=10;break;case 10:h=j;a=11;break;case 11:return g=h;default:assert(0,"bad label: "+a)}} -function _PyMethod_New(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[_free_list];a=j!=0?1:2;break;case 1:HEAP[_free_list]=HEAP[j+12];HEAP[j+4]=_PyMethod_Type;HEAP[j]=1;HEAP[_numfree]-=1;a=4;break;case 2:j=__PyObject_GC_New(_PyMethod_Type);a=j==0?3:4;break;case 3:h=0;a=11;break;case 4:HEAP[j+20]=0;HEAP[c]+=1;HEAP[j+8]=c;a=d!=0?5:6;break;case 5:HEAP[d]+=1;a=6;break;case 6:HEAP[j+12]=d;a=f!=0?7:8;break;case 7:HEAP[f]+=1;a=8;break;case 8:HEAP[j+16]=f;k=j+-12;a=HEAP[k+8]!= --2?9:10;break;case 9:throw _Py_FatalError(__str10582),"Reached an unreachable!";case 10:HEAP[k+8]=-3;HEAP[k]=HEAP[__PyGC_generation0];HEAP[k+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[k+4]]=k;HEAP[HEAP[__PyGC_generation0]+4]=k;h=j;a=11;break;case 11:return g=h;default:assert(0,"bad label: "+a)}} -function _instancemethod_get_doc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_docstr_11784]==0?1:3;break;case 1:e=_PyString_InternFromString(__str572);HEAP[_docstr_11784]=e;e=HEAP[_docstr_11784]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=_PyObject_GetAttr(HEAP[b+8],HEAP[_docstr_11784]);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _instancemethod_getattro(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;h=c;j=HEAP[c+4];k=0;b=(HEAP[j+84]&256)!=0?1:5;break;case 1:b=HEAP[j+132]==0?2:4;break;case 2:b=_PyType_Ready(j)<0?3:4;break;case 3:f=0;b=13;break;case 4:var m=__PyType_Lookup(j,d);k=m;a=4;b=6;break;case 5:var n=k,a=5;b=6;break;case 6:b=(a==5?n:m)!=0?7:12;break;case 7:b=(HEAP[HEAP[k+4]+84]&256)!=0?9:8;break;case 8:l=0;b=11;break;case 9:l=HEAP[HEAP[k+4]+136];b=HEAP[HEAP[k+4]+136]!=0?10:11;break; -case 10:f=FUNCTION_TABLE[l](k,c,HEAP[c+4]);b=13;break;case 11:HEAP[k]+=1;f=k;b=13;break;case 12:f=_PyObject_GetAttr(HEAP[h+8],d);b=13;break;case 13:return b=f;default:assert(0,"bad label: "+b)}} -function _instancemethod_new(g,e,b){g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4,j=g+8;c=e;a=b;HEAP[j]=0;a=__PyArg_NoKeywords(__str156730,a)==0?1:2;break;case 1:d=0;a=12;break;case 2:a=_PyArg_UnpackTuple(c,__str156730,2,3,allocate([f,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:d=0;a=12;break;case 4:a=_PyCallable_Check(HEAP[f])==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str157731);d=0;a=12;break;case 6:var k=HEAP[h];a=k==__Py_NoneStruct?7:8;break;case 7:HEAP[h]=0;a=9;break;case 8:a=k==0?9:11;break;case 9:a=HEAP[j]==0?10:11;break;case 10:_PyErr_SetString(HEAP[_PyExc_TypeError],__str158732);d=0;a=12;break;case 11:d=_PyMethod_New(HEAP[f],HEAP[h],HEAP[j]);a=12;break;case 12:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _instancemethod_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+20]!=0?1:2;break;case 1:_PyObject_ClearWeakRefs(b);e=2;break;case 2:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=4;break;case 4:e=HEAP[b+12]!=0?5:7;break;case 5:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+ -12]);e=7;break;case 7:e=HEAP[b+16]!=0?8:10;break;case 8:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=10;break;case 10:e=HEAP[_numfree]<=255?11:12;break;case 11:HEAP[b+12]=HEAP[_free_list];HEAP[_free_list]=b;HEAP[_numfree]+=1;e=13;break;case 12:_PyObject_GC_Del(b);e=13;break;case 13:return;default:assert(0,"bad label: "+e)}} -function _instancemethod_compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_PyObject_Compare(HEAP[a+8],HEAP[c+8]);b=h!=0?1:2;break;case 1:f=h;b=11;break;case 2:b=HEAP[a+12]==HEAP[c+12]?3:4;break;case 3:f=0;b=11;break;case 4:b=HEAP[a+12]==0?6:5;break;case 5:b=HEAP[c+12]==0?6:10;break;case 6:b=HEAP[a+12]0?2:3;break;case 2:var x=HEAP[h+12];m=x;d=2;c=4;break;case 3:var y=m,d=3;c=4;break;case 4:c=(d==3?y:x)==0?5:6;break;case 5:c=9;break;case 6:p=_PyObject_IsInstance(m,n);c=p<0?7:8;break;case 7:l=0;c=24;break;case 8:c=p==0?9:13;break; -case 9:_getclassname(n,q,256);_getinstclassname(m,r);c=m==0?10:11;break;case 10:k=__str21593;c=12;break;case 11:k=__str162736;c=12;break;case 12:l=_PyEval_GetFuncDesc(f);c=_PyEval_GetFuncName(f);_PyErr_Format(HEAP[_PyExc_TypeError],__str163737,allocate([c,0,0,0,l,0,0,0,q,0,0,0,r,0,0,0,k,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));l=0;c=24;break;case 13:HEAP[h]+=1;c=21;break;case 14:u=w;s=_PyTuple_New(u+1);c=s==0?15:16;break;case 15:l=0;c=24;break;case 16:HEAP[m]+= -1;HEAP[s+12]=m;t=0;c=t=0?3:7;break;case 3:b=HEAP[_PyCObject_Type+16]!=0?4:5;break;case 4:d=HEAP[_PyCObject_Type+16];b=6;break;case 5:d=1;b=6;break;case 6:f=_malloc(d);b=8;break;case 7:f=0;b=8;break;case 8:j=b=_PyObject_Init(f,_PyCObject_Type);b=b==0?9:10;break;case 9:h=0;b=11;break;case 10:HEAP[j+8]=a;HEAP[j+16]=c;HEAP[j+12]= -0;h=j;b=11;break;case 11:return a=h;default:assert(0,"bad label: "+b)}} -function _PyCObject_FromVoidPtrAndDesc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;a=_cobject_deprecation_warning()!=0?1:2;break;case 1:k=0;a=13;break;case 2:a=d==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1741);k=0;a=13;break;case 4:a=HEAP[_PyCObject_Type+16]>=0?5:9;break;case 5:a=HEAP[_PyCObject_Type+16]!=0?6:7;break;case 6:h=HEAP[_PyCObject_Type+16];a=8;break;case 7:h=1;a=8;break;case 8:j=_malloc(h);a=10;break;case 9:j=0;a=10;break;case 10:l=a=_PyObject_Init(j, -_PyCObject_Type);a=a==0?11:12;break;case 11:k=0;a=13;break;case 12:HEAP[l+8]=c;HEAP[l+16]=f;HEAP[l+12]=d;k=l;a=13;break;case 13:return g=k;default:assert(0,"bad label: "+a)}} -function _PyCObject_AsVoidPtr(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b!=0?1:6;break;case 1:var c=b;e=HEAP[b+4]==_PyCapsule_Type?2:3;break;case 2:e=_PyCapsule_GetName(c);a=_PyCapsule_GetPointer(b,e);e=9;break;case 3:e=HEAP[c+4]==_PyCObject_Type?4:5;break;case 4:a=HEAP[b+8];e=9;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError],__str2742);e=6;break;case 6:e=_PyErr_Occurred()==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str3743);e=8;break;case 8:a=0;e=9;break;case 9:return g= -a;default:assert(0,"bad label: "+e)}}function _PyCObject_GetDesc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b!=0?1:4;break;case 1:e=HEAP[b+4]==_PyCObject_Type?2:3;break;case 2:a=HEAP[b+12];e=7;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str4744);e=4;break;case 4:e=_PyErr_Occurred()==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError],__str5745);e=6;break;case 6:a=0;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _PyCObject_Import(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;f=0;c=_PyImport_ImportModule(b);b=c!=0?1:6;break;case 1:d=_PyObject_GetAttrString(c,a);b=d!=0?2:4;break;case 2:f=_PyCObject_AsVoidPtr(d);HEAP[d]-=1;b=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=4;break;case 4:HEAP[c]-=1;b=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=6;break;case 6:return a=f;default:assert(0,"bad label: "+b)}} -function _PyCObject_SetVoidPtr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;d=b;b=d==0?3:1;break;case 1:b=HEAP[d+4]!=_PyCObject_Type?3:2;break;case 2:b=HEAP[d+16]!=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str6746);c=0;b=5;break;case 4:HEAP[d+8]=a;c=1;b=5;break;case 5:return a=c;default:assert(0,"bad label: "+b)}} -function _PyCObject_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+16]!=0?1:4;break;case 1:var a=HEAP[b+16];e=HEAP[b+12]!=0?2:3;break;case 2:FUNCTION_TABLE[a](HEAP[b+8],HEAP[b+12]);e=4;break;case 3:FUNCTION_TABLE[a](HEAP[b+8]);e=4;break;case 4:_free(b);return;default:assert(0,"bad label: "+e)}} -function _codec_register(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=_PyCodec_Register(e)!=0?1:2;break;case 1:a=0;b=3;break;case 2:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _codec_lookup(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=__PyArg_ParseTuple_SizeT(e,__str748,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=__PyCodec_Lookup(HEAP[d]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _codec_encode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=e;HEAP[d]=0;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1749,allocate([h,0,0,0,d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=HEAP[d]==0?3:4;break;case 3:a=_PyUnicodeUCS2_GetDefaultEncoding();HEAP[d]=a;a=4;break;case 4:c=_PyCodec_Encode(HEAP[h],HEAP[d],HEAP[f]);a=5;break;case 5:return STACKTOP= -b,c;default:assert(0,"bad label: "+a)}} -function _codec_decode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=e;HEAP[d]=0;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str2750,allocate([h,0,0,0,d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=HEAP[d]==0?3:4;break;case 3:a=_PyUnicodeUCS2_GetDefaultEncoding();HEAP[d]=a;a=4;break;case 4:c=_PyCodec_Decode(HEAP[h],HEAP[d],HEAP[f]);a=5;break;case 5:return STACKTOP= -b,c;default:assert(0,"bad label: "+a)}}function _codec_tuple(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=a==0?1:2;break;case 1:d=0;b=5;break;case 2:f=__Py_BuildValue_SizeT(__str3751,allocate([a,0,0,0,c,0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[a]-=1;b=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=4;break;case 4:d=f;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _escape_decode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h=b+8;a=e;HEAP[c]=0;a=__PyArg_ParseTuple_SizeT(a,__str4752,allocate([f,0,0,0,h,0,0,0,c,0,0,0],["i8**",0,0,0,"i32*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=HEAP[h];a=_PyString_DecodeEscape(HEAP[f],HEAP[h],HEAP[c],0,0);d=_codec_tuple(a,d);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _escape_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str5753,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:h=HEAP[HEAP[d]+8];a=_PyString_Repr(HEAP[d],0);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:a=HEAP[d]+20;f=HEAP[HEAP[d]+8];_llvm_memmove_p0i8_p0i8_i32(a,a+1,f-2,1,0);a=__PyString_Resize(d, -f-2)<0?5:6;break;case 5:c=0;a=7;break;case 6:c=_codec_tuple(HEAP[d],h);a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_internal_decode(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h=b+8,j=b+12;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str6754,allocate([c,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:var k=HEAP[c];a=(HEAP[HEAP[HEAP[c]+4]+84]&268435456)!=0?3:4;break;case 3:HEAP[k]+=1;d=_codec_tuple(HEAP[c],HEAP[HEAP[c]+8]);a=7;break;case 4:a=_PyObject_AsReadBuffer(k, -h,j)!=0?5:6;break;case 5:d=0;a=7;break;case 6:d=HEAP[j];a=__PyUnicode_DecodeUnicodeInternal(HEAP[h],HEAP[j],HEAP[f]);d=_codec_tuple(a,d);a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_7_decode(g,e){var b=STACKTOP;STACKTOP+=64;_memset(b,0,64);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l;a=e;HEAP[h]=0;l=HEAP[j]=0;a=__PyArg_ParseTuple_SizeT(a,__str7755,allocate([f,0,0,0,h,0,0,0,j,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[k]=HEAP[f+8];a=HEAP[j]==0?3:4;break;case 3:c=k;a=5;break;case 4:c=0;a=5;break;case 5:l=_PyUnicode_DecodeUTF7Stateful(HEAP[f],HEAP[f+8],HEAP[h],c); -_PyBuffer_Release(f);a=l==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(l,HEAP[k]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_8_decode(g,e){var b=STACKTOP;STACKTOP+=64;_memset(b,0,64);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l;a=e;HEAP[h]=0;l=HEAP[j]=0;a=__PyArg_ParseTuple_SizeT(a,__str8756,allocate([f,0,0,0,h,0,0,0,j,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[k]=HEAP[f+8];a=HEAP[j]==0?3:4;break;case 3:c=k;a=5;break;case 4:c=0;a=5;break;case 5:l=_PyUnicodeUCS2_DecodeUTF8Stateful(HEAP[f],HEAP[f+8],HEAP[h], -c);_PyBuffer_Release(f);a=l==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(l,HEAP[k]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l=b+64,m;a=e;HEAP[h]=0;HEAP[j]=0;HEAP[k]=0;a=__PyArg_ParseTuple_SizeT(a,__str9757,allocate([f,0,0,0,h,0,0,0,k,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[l]=HEAP[f+8];a=HEAP[k]==0?3:4;break;case 3:c=l;a=5;break;case 4:c=0;a=5;break;case 5:m=_PyUnicodeUCS2_DecodeUTF16Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=m==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(m,HEAP[l]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_le_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l=b+64,m;a=e;HEAP[h]=0;HEAP[j]=-1;m=HEAP[k]=0;a=__PyArg_ParseTuple_SizeT(a,__str10758,allocate([f,0,0,0,h,0,0,0,k,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[l]=HEAP[f+8];a=HEAP[k]==0?3:4;break;case 3:c=l;a=5;break;case 4:c=0;a=5;break;case 5:m=_PyUnicodeUCS2_DecodeUTF16Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=m==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(m,HEAP[l]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_be_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l=b+64,m;a=e;HEAP[h]=0;HEAP[j]=1;m=HEAP[k]=0;a=__PyArg_ParseTuple_SizeT(a,__str11759,allocate([f,0,0,0,h,0,0,0,k,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[l]=HEAP[f+8];a=HEAP[k]==0?3:4;break;case 3:c=l;a=5;break;case 4:c=0;a=5;break;case 5:m=_PyUnicodeUCS2_DecodeUTF16Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=m==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(m,HEAP[l]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_ex_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k,l,m=b+60,n=b+64;a=e;HEAP[h]=0;HEAP[j]=0;HEAP[m]=0;a=__PyArg_ParseTuple_SizeT(a,__str12760,allocate([f,0,0,0,h,0,0,0,j,0,0,0,m,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=10;break;case 2:HEAP[n]=HEAP[f+8];a=HEAP[m]==0?3:4;break;case 3:c=n;a=5;break;case 4:c=0;a=5;break;case 5:k=_PyUnicodeUCS2_DecodeUTF16Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=k==0?6:7;break;case 6:d=0;a=10;break;case 7:l=__Py_BuildValue_SizeT(__str13761,allocate([k,0,0,0,HEAP[n],0,0,0,HEAP[j],0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[k]-=1;a=HEAP[k]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=9;break;case 9:d=l;a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l=b+64,m;a=e;HEAP[h]=0;HEAP[j]=0;HEAP[k]=0;a=__PyArg_ParseTuple_SizeT(a,__str14762,allocate([f,0,0,0,h,0,0,0,k,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[l]=HEAP[f+8];a=HEAP[k]==0?3:4;break;case 3:c=l;a=5;break;case 4:c=0;a=5;break;case 5:m=_PyUnicodeUCS2_DecodeUTF32Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=m==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(m,HEAP[l]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_le_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l=b+64,m;a=e;HEAP[h]=0;HEAP[j]=-1;HEAP[k]=0;a=__PyArg_ParseTuple_SizeT(a,__str15763,allocate([f,0,0,0,h,0,0,0,k,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[l]=HEAP[f+8];a=HEAP[k]==0?3:4;break;case 3:c=l;a=5;break;case 4:c=0;a=5;break;case 5:m=_PyUnicodeUCS2_DecodeUTF32Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=m==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(m,HEAP[l]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_be_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k=b+60,l=b+64,m;a=e;HEAP[h]=0;HEAP[j]=1;HEAP[k]=0;a=__PyArg_ParseTuple_SizeT(a,__str16764,allocate([f,0,0,0,h,0,0,0,k,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:HEAP[l]=HEAP[f+8];a=HEAP[k]==0?3:4;break;case 3:c=l;a=5;break;case 4:c=0;a=5;break;case 5:m=_PyUnicodeUCS2_DecodeUTF32Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=m==0?6:7;break;case 6:d=0;a=8;break;case 7:d=_codec_tuple(m,HEAP[l]);a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_ex_decode(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+52,j=b+56,k,l,m=b+60,n=b+64;a=e;HEAP[h]=0;HEAP[j]=0;HEAP[m]=0;a=__PyArg_ParseTuple_SizeT(a,__str17765,allocate([f,0,0,0,h,0,0,0,j,0,0,0,m,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=10;break;case 2:HEAP[n]=HEAP[f+8];a=HEAP[m]==0?3:4;break;case 3:c=n;a=5;break;case 4:c=0;a=5;break;case 5:k=_PyUnicodeUCS2_DecodeUTF32Stateful(HEAP[f], -HEAP[f+8],HEAP[h],j,c);_PyBuffer_Release(f);a=k==0?6:7;break;case 6:d=0;a=10;break;case 7:l=__Py_BuildValue_SizeT(__str13761,allocate([k,0,0,0,HEAP[n],0,0,0,HEAP[j],0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[k]-=1;a=HEAP[k]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=9;break;case 9:d=l;a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_escape_decode(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+52;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str18766,allocate([c,0,0,0,f,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyUnicodeUCS2_DecodeUnicodeEscape(HEAP[c],HEAP[c+8],HEAP[f]);_PyBuffer_Release(c);d=_codec_tuple(d,HEAP[c+8]);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+ -a)}} -function _raw_unicode_escape_decode(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+52;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str19767,allocate([c,0,0,0,f,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyUnicodeUCS2_DecodeRawUnicodeEscape(HEAP[c],HEAP[c+8],HEAP[f]);_PyBuffer_Release(c);d=_codec_tuple(d,HEAP[c+8]);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _latin_1_decode(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+52;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str20768,allocate([c,0,0,0,f,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyUnicodeUCS2_DecodeLatin1(HEAP[c],HEAP[c+8],HEAP[f]);_PyBuffer_Release(c);d=_codec_tuple(d,HEAP[c+8]);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _ascii_decode(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+52;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str21769,allocate([c,0,0,0,f,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyUnicodeUCS2_DecodeASCII(HEAP[c],HEAP[c+8],HEAP[f]);_PyBuffer_Release(c);d=_codec_tuple(d,HEAP[c+8]);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _charmap_decode(g,e){var b=STACKTOP;STACKTOP+=60;_memset(b,0,60);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+52,h=b+56;a=e;HEAP[f]=0;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str22770,allocate([c,0,0,0,f,0,0,0,h,0,0,0],["%struct.Py_buffer*",0,0,0,"i8**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=5;break;case 2:a=HEAP[h]==__Py_NoneStruct?3:4;break;case 3:HEAP[h]=0;a=4;break;case 4:d=_PyUnicodeUCS2_DecodeCharmap(HEAP[c],HEAP[c+8],HEAP[h],HEAP[f]); -_PyBuffer_Release(c);d=_codec_tuple(d,HEAP[c+8]);a=5;break;case 5:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _readbuffer_encode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h=b+8;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str23771,allocate([c,0,0,0,f,0,0,0,h,0,0,0],["i8**",0,0,0,"i32*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=HEAP[f];a=_PyString_FromStringAndSize(HEAP[c],HEAP[f]);d=_codec_tuple(a,d);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _charbuffer_encode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h=b+8;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str24772,allocate([c,0,0,0,f,0,0,0,h,0,0,0],["i8**",0,0,0,"i32*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=HEAP[f];a=_PyString_FromStringAndSize(HEAP[c],HEAP[f]);d=_codec_tuple(a,d);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_internal_encode(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h=b+8,j=b+12;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str25773,allocate([c,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:var k=HEAP[c];a=(HEAP[HEAP[HEAP[c]+4]+84]&268435456)!=0?3:4;break;case 3:HEAP[h]=HEAP[k+12];HEAP[j]=HEAP[HEAP[c]+8]*2;d=HEAP[HEAP[c]+8];a=_PyString_FromStringAndSize(HEAP[h], -HEAP[j]);d=_codec_tuple(a,d);a=7;break;case 4:a=_PyObject_AsReadBuffer(k,h,j)!=0?5:6;break;case 5:d=0;a=7;break;case 6:d=HEAP[j];a=_PyString_FromStringAndSize(HEAP[h],HEAP[j]);d=_codec_tuple(a,d);a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_7_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str26774,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicode_EncodeUTF7(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],0,0,HEAP[h]);f=_codec_tuple(a, -f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_8_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str27775,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF8(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h]);f=_codec_tuple(a, -f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_encode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4,j=b+8;a=e;HEAP[h]=0;HEAP[j]=0;a=__PyArg_ParseTuple_SizeT(a,__str28776,allocate([d,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF16(HEAP[HEAP[d]+ -12],HEAP[HEAP[d]+8],HEAP[h],HEAP[j]);f=_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_le_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str29777,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF16(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h],-1);f= -_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_16_be_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str30778,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF16(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h],1);f=_codec_tuple(a, -f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_encode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4,j=b+8;a=e;HEAP[h]=0;HEAP[j]=0;a=__PyArg_ParseTuple_SizeT(a,__str31779,allocate([d,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF32(HEAP[HEAP[d]+ -12],HEAP[HEAP[d]+8],HEAP[h],HEAP[j]);f=_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_le_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str32780,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF32(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h],-1);f= -_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _utf_32_be_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str33781,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUTF32(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h],1);f=_codec_tuple(a, -f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_escape_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str34782,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeUnicodeEscape(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8]); -f=_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _raw_unicode_escape_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str35783,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeRawUnicodeEscape(HEAP[HEAP[d]+12],HEAP[HEAP[d]+ -8]);f=_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _latin_1_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str36784,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeLatin1(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h]);f=_codec_tuple(a, -f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _ascii_encode(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4;a=e;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str37785,allocate([d,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=HEAP[d]==0?3:4;break;case 3:c=0;a=7;break;case 4:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeASCII(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[h]);f=_codec_tuple(a, -f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:c=f;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _charmap_encode(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h=b+4,j=b+8;a=e;HEAP[h]=0;HEAP[j]=0;a=__PyArg_ParseTuple_SizeT(a,__str38786,allocate([d,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=9;break;case 2:a=HEAP[j]==__Py_NoneStruct?3:4;break;case 3:HEAP[j]=0;a=4;break;case 4:a=_PyUnicodeUCS2_FromObject(HEAP[d]);HEAP[d]=a;a=a==0?5:6;break;case 5:c= -0;a=9;break;case 6:f=HEAP[HEAP[d]+8];a=_PyUnicodeUCS2_EncodeCharmap(HEAP[HEAP[d]+12],HEAP[HEAP[d]+8],HEAP[j],HEAP[h]);f=_codec_tuple(a,f);a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=8;break;case 8:c=f;a=9;break;case 9:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _charmap_build(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=__PyArg_ParseTuple_SizeT(e,__str39787,allocate([d,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyUnicode_BuildEncodingMap(HEAP[d]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _register_error(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str40788,allocate([d,0,0,0,f,0,0,0],["i8**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_PyCodec_RegisterError(HEAP[d],HEAP[f])!=0?3:4;break;case 3:c=0;a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _lookup_error(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=__PyArg_ParseTuple_SizeT(e,__str41789,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyCodec_LookupError(HEAP[d]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _init_codecs(){_Py_InitModule4(__str83831,__codecs_functions,0,0,1013)} -function _PyCodec_Register(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[HEAP[__PyThreadState_Current]+4];e=HEAP[c+24]==0?1:2;break;case 1:e=__PyCodecRegistry_Init()!=0?7:2;break;case 2:e=b==0?3:4;break;case 3:_PyErr_BadArgument();e=7;break;case 4:e=_PyCallable_Check(b)==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError],__str832);e=7;break;case 6:a=_PyList_Append(HEAP[c+24],b);e=8;break;case 7:a=-1;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _normalizestring(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;d=_strlen(b);e=d<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str1833);a=0;e=10;break;case 2:h=_PyString_FromStringAndSize(0,d);e=h==0?3:4;break;case 3:a=0;e=10;break;case 4:f=h+20;c=0;e=cl?8:18;break;case 8:b=HEAP[l]<=9?9:10;break;case 9:o+=4;b=17;break;case 10:b=HEAP[l]<=99?11:12;break;case 11:o+=5;b=17;break;case 12:b=HEAP[l]<=999?13:14;break;case 13:o+=6;b=17;break;case 14:var s=o;b=HEAP[l]<=9999?15:16;break;case 15:o=s+7;b=17;break;case 16:o=s+8;b=17;break;case 17:l+=2;b=m+2*HEAP[j]>l?8:18;break;case 18:k=b=_PyUnicodeUCS2_FromUnicode(0,o);b=b==0?19:22;break;case 19:HEAP[f]-=1;b=HEAP[f]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f); -b=21;break;case 21:c=0;b=41;break;case 22:l=m+2*HEAP[h];n=HEAP[k+12];b=m+2*HEAP[j]>l?23:35;break;case 23:p=HEAP[l];HEAP[n]=38;n+=2;HEAP[n]=35;n+=2;b=HEAP[l]<=9?24:25;break;case 24:r=q=1;b=32;break;case 25:b=HEAP[l]<=99?26:27;break;case 26:q=2;r=10;b=32;break;case 27:b=HEAP[l]<=999?28:29;break;case 28:q=3;r=100;b=32;break;case 29:b=HEAP[l]<=9999?30:31;break;case 30:q=4;r=1E3;b=32;break;case 31:q=5;r=1E4;b=32;break;case 32:b=q>0;q-=1;b=b!=0?33:34;break;case 33:HEAP[n]=((p/r|0)&65535)+48;n+=2;p=p%r& -65535;r=r/10|0;b=q>0;q-=1;b=b!=0?33:34;break;case 34:HEAP[n]=59;n+=2;l+=2;b=m+2*HEAP[j]>l?23:35;break;case 35:d=_Py_BuildValue(__str20852,allocate([k,0,0,0,HEAP[j],0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[k]-=1;b=HEAP[k]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=37;break;case 37:HEAP[f]-=1;b=HEAP[f]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=39;break;case 39:c=d;b=41;break;case 40:_wrong_exception_type(u);c=0;b=41;break;case 41:return g= -c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyCodec_BackslashReplaceErrors(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=e,j=e+4,k,l,m,n,o,p;a=g;b=_PyObject_IsInstance(a,HEAP[_PyExc_UnicodeEncodeError]);var q=a;b=b!=0?1:24;break;case 1:b=_PyUnicodeEncodeError_GetStart(q,h)!=0?2:3;break;case 2:c=0;b=25;break;case 3:b=_PyUnicodeEncodeError_GetEnd(a,j)!=0?4:5;break;case 4:c=0;b=25;break;case 5:f=_PyUnicodeEncodeError_GetObject(a);b=f==0?6:7;break;case 6:c=0;b=25;break;case 7:m=HEAP[f+12]; -l=m+2*HEAP[h];o=0;b=m+2*HEAP[j]>l?8:12;break;case 8:var r=o;b=HEAP[l]>255?9:10;break;case 9:o=r+6;b=11;break;case 10:o=r+4;b=11;break;case 11:l+=2;b=m+2*HEAP[j]>l?8:12;break;case 12:k=b=_PyUnicodeUCS2_FromUnicode(0,o);b=b==0?13:14;break;case 13:c=0;b=25;break;case 14:l=m+2*HEAP[h];n=HEAP[k+12];b=m+2*HEAP[j]>l?15:19;break;case 15:p=HEAP[l];HEAP[n]=92;n+=2;var u=n;b=p>255?16:17;break;case 16:HEAP[u]=117;n+=2;HEAP[n]=HEAP[_hexdigits+(p>>>12&15)*2];n+=2;HEAP[n]=HEAP[_hexdigits+(p>>>8&15)*2];n+=2;b=18; -break;case 17:HEAP[u]=120;n+=2;b=18;break;case 18:HEAP[n]=HEAP[_hexdigits+(p>>>4&15)*2];n+=2;HEAP[n]=HEAP[_hexdigits+(p&15)*2];n+=2;l+=2;b=m+2*HEAP[j]>l?15:19;break;case 19:d=_Py_BuildValue(__str20852,allocate([k,0,0,0,HEAP[j],0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[k]-=1;b=HEAP[k]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=21;break;case 21:HEAP[f]-=1;b=HEAP[f]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=23;break;case 23:c=d;b=25; -break;case 24:_wrong_exception_type(q);c=0;b=25;break;case 25:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _strict_errors(g,e){return _PyCodec_StrictErrors(e)}function _ignore_errors(g,e){return _PyCodec_IgnoreErrors(e)}function _replace_errors(g,e){return _PyCodec_ReplaceErrors(e)}function _xmlcharrefreplace_errors(g,e){return _PyCodec_XMLCharRefReplaceErrors(e)}function _backslashreplace_errors(g,e){return _PyCodec_BackslashReplaceErrors(e)} -function __PyCodecRegistry_Init(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a,c,d,f,h;a=HEAP[HEAP[__PyThreadState_Current]+4];g=HEAP[a+24]!=0?1:2;break;case 1:b=0;g=23;break;case 2:g=_PyList_New(0);HEAP[a+24]=g;g=_PyDict_New();HEAP[a+28]=g;g=_PyDict_New();HEAP[a+32]=g;g=HEAP[a+32]!=0?3:12;break;case 3:d=0;e=3;g=11;break;case 4:f=_PyCFunction_NewEx(_methods_9223+d*20+4,0,0);g=f==0?5:6;break;case 5:throw _Py_FatalError(__str35867),"Reached an unreachable!";case 6:h=_PyCodec_RegisterError(HEAP[_methods_9223+ -d*20],f);HEAP[f]-=1;g=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);g=8;break;case 8:g=h!=0?9:10;break;case 9:throw _Py_FatalError(__str35867),"Reached an unreachable!";case 10:var j=d+1;d=j;e=10;g=11;break;case 11:g=(e==10?j:0)<=4?4:12;break;case 12:g=HEAP[a+24]==0?15:13;break;case 13:g=HEAP[a+28]==0?15:14;break;case 14:g=HEAP[a+32]==0?15:16;break;case 15:throw _Py_FatalError(__str36868),"Reached an unreachable!";case 16:c=_PyImport_ImportModuleLevel(__str37869,0,0,0,0);g=c== -0?17:20;break;case 17:g=_PyErr_ExceptionMatches(HEAP[_PyExc_ImportError])!=0?18:19;break;case 18:_PyErr_Clear();b=0;g=23;break;case 19:b=-1;g=23;break;case 20:HEAP[c]-=1;g=HEAP[c]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=22;break;case 22:b=0;g=23;break;case 23:return e=b;default:assert(0,"bad label: "+g)}} -function _all_name_chars(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[_ok_name_char_8322+48]==0?1:5;break;case 1:c=__str876;e=HEAP[c]!=0?2:5;break;case 2:HEAP[_ok_name_char_8322+HEAP[c]]=1;c+=1;e=HEAP[c]!=0?2:5;break;case 3:e=HEAP[_ok_name_char_8322+HEAP[b]]==0;b+=1;e=e!=0?4:5;break;case 4:a=0;e=7;break;case 5:e=HEAP[b]!=0?3:6;break;case 6:a=1;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _intern_strings(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=HEAP[b+8];e=5;break;case 1:c=HEAP[b+12+a*4];e=c==0?3:2;break;case 2:e=HEAP[c+4]!=_PyString_Type?3:4;break;case 3:throw _Py_FatalError(__str1877),"Reached an unreachable!";case 4:_PyString_InternInPlace(b+12+a*4);e=5;break;case 5:a=e=a-1;e=e>=0?1:6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _PyCode_New(g,e,b,a,c,d,f,h,j,k,l,m,n,o){var p;for(p=-1;;)switch(p){case -1:var q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J;q=g;r=e;u=b;s=a;t=c;v=d;w=f;x=h;y=j;z=k;C=l;A=m;G=n;E=o;p=q<0?20:1;break;case 1:p=r<0?20:2;break;case 2:p=t==0?20:3;break;case 3:p=v==0?20:4;break;case 4:p=(HEAP[HEAP[v+4]+84]&67108864)==0?20:5;break;case 5:p=w==0?20:6;break;case 6:p=(HEAP[HEAP[w+4]+84]&67108864)==0?20:7;break;case 7:p=x==0?20:8;break;case 8:p=(HEAP[HEAP[x+4]+84]&67108864)==0?20:9;break;case 9:p=y==0?20: -10;break;case 10:p=(HEAP[HEAP[y+4]+84]&67108864)==0?20:11;break;case 11:p=z==0?20:12;break;case 12:p=(HEAP[HEAP[z+4]+84]&67108864)==0?20:13;break;case 13:p=A==0?20:14;break;case 14:p=(HEAP[HEAP[A+4]+84]&134217728)==0?20:15;break;case 15:p=C==0?20:16;break;case 16:p=(HEAP[HEAP[C+4]+84]&134217728)==0?20:17;break;case 17:p=E==0?20:18;break;case 18:p=(HEAP[HEAP[E+4]+84]&134217728)==0?20:19;break;case 19:p=_PyObject_CheckReadBuffer(t)==0?20:21;break;case 20:__PyErr_BadInternalCall(__str2878,64);M=0;p= -35;break;case 21:_intern_strings(w);_intern_strings(x);_intern_strings(y);_intern_strings(z);I=_PyTuple_Size(v);I=p=I-1;p=p>=0?22:26;break;case 22:J=_PyTuple_GetItem(v,I);p=(HEAP[HEAP[J+4]+84]&134217728)==0?23:24;break;case 23:I=p=I-1;p=p>=0?22:26;break;case 24:p=_all_name_chars(J+20)==0?23:25;break;case 25:_PyString_InternInPlace(v+12+I*4);p=23;break;case 26:p=HEAP[_PyCode_Type+16]>=0?27:31;break;case 27:p=HEAP[_PyCode_Type+16]!=0?28:29;break;case 28:D=HEAP[_PyCode_Type+16];p=30;break;case 29:D= -1;p=30;break;case 30:R=_malloc(D);p=32;break;case 31:R=0;p=32;break;case 32:L=p=_PyObject_Init(R,_PyCode_Type);p=p!=0?33:34;break;case 33:HEAP[L+8]=q;HEAP[L+12]=r;HEAP[L+16]=u;HEAP[L+20]=s;HEAP[t]+=1;HEAP[L+24]=t;HEAP[v]+=1;HEAP[L+28]=v;HEAP[w]+=1;HEAP[L+32]=w;HEAP[x]+=1;HEAP[L+36]=x;HEAP[y]+=1;HEAP[L+40]=y;HEAP[z]+=1;HEAP[L+44]=z;HEAP[C]+=1;HEAP[L+48]=C;HEAP[A]+=1;HEAP[L+52]=A;HEAP[L+56]=G;HEAP[E]+=1;HEAP[L+60]=E;HEAP[L+64]=0;HEAP[L+68]=0;p=34;break;case 34:M=L;p=35;break;case 35:return g=M;default:assert(0, -"bad label: "+p)}} -function _PyCode_NewEmpty(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;k=j=h=0;a=HEAP[_emptystring_8489]==0?1:2;break;case 1:a=_PyString_FromString(__str3879);HEAP[_emptystring_8489]=a;a=HEAP[_emptystring_8489]==0?7:2;break;case 2:a=HEAP[_nulltuple_8490]==0?3:4;break;case 3:a=_PyTuple_New(0);HEAP[_nulltuple_8490]=a;a=HEAP[_nulltuple_8490]==0?7:4;break;case 4:j=a=_PyString_FromString(d);a=a==0?10:5;break;case 5:h=_PyString_FromString(c);a=h==0?7:6;break;case 6:k=_PyCode_New(0, -0,0,0,HEAP[_emptystring_8489],HEAP[_nulltuple_8490],HEAP[_nulltuple_8490],HEAP[_nulltuple_8490],HEAP[_nulltuple_8490],HEAP[_nulltuple_8490],h,j,f,HEAP[_emptystring_8489]);a=7;break;case 7:a=j!=0?8:10;break;case 8:HEAP[j]-=1;a=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=10;break;case 10:a=h!=0?11:13;break;case 11:HEAP[h]-=1;a=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=13;break;case 13:return g=k;default:assert(0,"bad label: "+a)}} -function _validate_and_copy_tuple(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;h=HEAP[b+8];c=_PyTuple_New(h);e=c==0?1:2;break;case 1:a=0;e=16;break;case 2:f=0;e=14;break;case 3:var j=d=HEAP[b+12+f*4];e=HEAP[d+4]==_PyString_Type?4:5;break;case 4:HEAP[d]=HEAP[j]+1;e=13;break;case 5:var k=d;e=(HEAP[HEAP[j+4]+84]&134217728)==0?6:9;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str18894,allocate([HEAP[HEAP[k+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[c]-=1;e=HEAP[c]==0?7:8;break; -case 7:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=8;break;case 8:a=0;e=16;break;case 9:d=_PyString_FromStringAndSize(d+20,HEAP[k+8]);e=d==0?10:13;break;case 10:HEAP[c]-=1;e=HEAP[c]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=12;break;case 12:a=0;e=16;break;case 13:HEAP[c+12+f*4]=d;f+=1;e=14;break;case 14:e=f -0?18:19;break;case 18:f=1;b=22;break;case 19:b=h<0?20:21;break;case 20:f=-1;b=22;break;case 21:f=0;b=22;break;case 22:return b=f;default:assert(0,"bad label: "+b)}} -function _code_richcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;a=h!=2&h!=3?3:1;break;case 1:a=HEAP[d+4]!=_PyCode_Type?3:2;break;case 2:a=HEAP[f+4]!=_PyCode_Type?3:7;break;case 3:a=HEAP[_Py_Py3kWarningFlag]!=0?4:6;break;case 4:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str24900,1)<0?5:6;break;case 5:j=0;a=27;break;case 6:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;a=27;break;case 7:k=d;l=f;var n=a=_PyObject_RichCompareBool(HEAP[k+ -52],HEAP[l+52],2);n<=0?(c=7,a=21):(c=7,a=8);break;case 8:a=HEAP[k+8]==HEAP[l+8];a=a==0?23:9;break;case 9:a=HEAP[k+12]==HEAP[l+12];a=a==0?23:10;break;case 10:a=HEAP[k+20]==HEAP[l+20];a=a==0?23:11;break;case 11:a=HEAP[k+56]==HEAP[l+56];a=a==0?23:12;break;case 12:var o=a=_PyObject_RichCompareBool(HEAP[k+24],HEAP[l+24],2);o<=0?(c=12,a=21):(c=12,a=13);break;case 13:var p=a=_PyObject_RichCompareBool(HEAP[k+28],HEAP[l+28],2);p<=0?(c=13,a=21):(c=13,a=14);break;case 14:var q=a=_PyObject_RichCompareBool(HEAP[k+ -32],HEAP[l+32],2);q<=0?(c=14,a=21):(c=14,a=15);break;case 15:var r=a=_PyObject_RichCompareBool(HEAP[k+36],HEAP[l+36],2);r<=0?(c=15,a=21):(c=15,a=16);break;case 16:var u=a=_PyObject_RichCompareBool(HEAP[k+40],HEAP[l+40],2);u<=0?(c=16,a=21):(c=16,a=17);break;case 17:var s=a=_PyObject_RichCompareBool(HEAP[k+44],HEAP[l+44],2);s<=0?(c=17,a=21):(c=17,a=18);break;case 18:a=h==2?19:20;break;case 19:m=__Py_TrueStruct;a=26;break;case 20:m=__Py_ZeroStruct;a=26;break;case 21:a=(c==17?s:c==16?u:c==15?r:c==14? -q:c==13?p:c==12?o:n)<0?22:23;break;case 22:j=0;a=27;break;case 23:a=h==3?24:25;break;case 24:m=__Py_TrueStruct;a=26;break;case 25:m=__Py_ZeroStruct;a=26;break;case 26:HEAP[m]+=1;j=m;a=27;break;case 27:return g=j;default:assert(0,"bad label: "+a)}} -function _code_hash(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m;b=g;d=_PyObject_Hash(HEAP[b+52]);e=d==-1?1:2;break;case 1:a=-1;e=17;break;case 2:f=_PyObject_Hash(HEAP[b+24]);e=f==-1?3:4;break;case 3:a=-1;e=17;break;case 4:h=_PyObject_Hash(HEAP[b+28]);e=h==-1?5:6;break;case 5:a=-1;e=17;break;case 6:j=_PyObject_Hash(HEAP[b+32]);e=j==-1?7:8;break;case 7:a=-1;e=17;break;case 8:k=_PyObject_Hash(HEAP[b+36]);e=k==-1?9:10;break;case 9:a=-1;e=17;break;case 10:l=_PyObject_Hash(HEAP[b+40]); -e=l==-1?11:12;break;case 11:a=-1;e=17;break;case 12:m=_PyObject_Hash(HEAP[b+44]);e=m==-1?13:14;break;case 13:a=-1;e=17;break;case 14:c=f^d^h^j^k^l^m^HEAP[b+8]^HEAP[b+12]^HEAP[b+20];e=c==-1?15:16;break;case 15:c=-2;e=16;break;case 16:a=c;e=17;break;case 17:return g=a;default:assert(0,"bad label: "+e)}} -function _PyCode_Addr2Line(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;d=_PyString_Size(HEAP[a+60])/2|0;f=_PyString_AsString(HEAP[a+60]);a=HEAP[a+56];h=0;b=3;break;case 1:h=HEAP[f]+h;f+=1;b=h>c?4:2;break;case 2:a=HEAP[f]+a;f+=1;b=3;break;case 3:d=b=d-1;b=b>=0?1:4;break;case 4:return c=a;default:assert(0,"bad label: "+b)}} -function __PyCode_CheckLineNumber(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,c=g;d=e;f=b;l=HEAP[c+60]+20;h=HEAP[HEAP[c+60]+8]/2|0;j=0;k=HEAP[c+56];HEAP[f]=0;var m=h,c=-1;a=5;break;case 1:a=HEAP[l]+j>d?6:2;break;case 2:j=HEAP[l]+j;l+=1;a=HEAP[l]!=0?3:4;break;case 3:HEAP[f]=j;a=4;break;case 4:k=HEAP[l]+k;l+=1;var n=h-1;h=n;c=4;a=5;break;case 5:a=(c==4?n:m)>0?1:6;break;case 6:a=h>0?8:10;break;case 7:j=HEAP[l]+j;l+=1;a=HEAP[l]!=0;l+=1;a=a!=0?9:8;break;case 8:h=a=h-1;a=a>=0?7:9;break; -case 9:HEAP[f+4]=j;a=11;break;case 10:HEAP[f+4]=2147483647;a=11;break;case 11:return g=k;default:assert(0,"bad label: "+a)}} -function __Py_Mangle(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;j=_PyString_AsString(d);b=c==0?5:1;break;case 1:b=(HEAP[HEAP[c+4]+84]&134217728)==0?5:2;break;case 2:b=j==0?5:3;break;case 3:b=HEAP[j]!=95?5:4;break;case 4:b=HEAP[j+1]!=95?5:6;break;case 5:HEAP[d]+=1;f=d;b=17;break;case 6:h=_PyString_AsString(c);k=_strlen(j);b=HEAP[j+(k-1)]!=95?8:7;break;case 7:b=HEAP[j+(k-2)]==95?10:8;break;case 8:b=_strchr(j,46)!=0?10:9;break;case 9:var m=h;HEAP[h]==95?(a=9,b=11):(a=9, -b=12);break;case 10:HEAP[d]+=1;f=d;b=17;break;case 11:var n=h=(a==11?n:m)+1;HEAP[h]==95?b=a=11:(a=11,b=12);break;case 12:b=HEAP[a==9?m:n]==0?13:14;break;case 13:HEAP[d]+=1;f=d;b=17;break;case 14:l=_strlen(h);d=_PyString_FromStringAndSize(0,k+1+l);b=d==0?15:16;break;case 15:f=0;b=17;break;case 16:b=d+20;HEAP[b]=95;_strncpy(b+1,h,l);_strcpy(b+1+l,j);f=d;b=17;break;case 17:return a=f;default:assert(0,"bad label: "+b)}} -function _compiler_init(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;_llvm_memset_p0i8_i32(e,0,36,1,0);var a=_PyList_New(0);HEAP[e+28]=a;e=HEAP[e+28]==0?1:2;break;case 1:b=0;e=3;break;case 2:b=1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _PyAST_Compile(g,e,b,a){var c=STACKTOP;STACKTOP+=40;_memset(c,0,40);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c,n,o=c+36;f=g;h=e;j=b;k=a;n=0;d=HEAP[___doc__]==0?1:3;break;case 1:d=_PyString_InternFromString(__str905);HEAP[___doc__]=d;d=HEAP[___doc__]==0?2:3;break;case 2:l=0;d=13;break;case 3:d=_compiler_init(m)==0?4:5;break;case 4:l=0;d=13;break;case 5:HEAP[m]=h;HEAP[m+32]=k;d=_PyFuture_FromAST(f,h);HEAP[m+8]=d;d=HEAP[m+8]==0?12:6;break;case 6:d=j==0?7:8;break;case 7:HEAP[o]=0;j= -o;d=8;break;case 8:d=HEAP[j]|HEAP[HEAP[m+8]];HEAP[HEAP[m+8]]=d;HEAP[j]=d;HEAP[m+12]=j;HEAP[m+20]=0;d=_PySymtable_Build(f,h,HEAP[m+8]);HEAP[m+4]=d;d=HEAP[m+4]==0?9:11;break;case 9:d=_PyErr_Occurred()==0?10:12;break;case 10:_PyErr_SetString(HEAP[_PyExc_SystemError],__str1906);d=12;break;case 11:n=_compiler_mod(m,f);d=12;break;case 12:_compiler_free(m);l=n;d=13;break;case 13:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyNode_Compile(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=0;j=_PyArena_New();b=j==0?1:2;break;case 1:d=0;b=5;break;case 2:h=_PyAST_FromNode(a,0,c,j);b=h!=0?3:4;break;case 3:f=_PyAST_Compile(h,c,0,j);b=4;break;case 4:_PyArena_Free(j);d=f;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _compiler_free(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+4]!=0?1:2;break;case 1:_PySymtable_Free(HEAP[b+4]);e=2;break;case 2:e=HEAP[b+8]!=0?3:4;break;case 3:_PyObject_Free(HEAP[b+8]);e=4;break;case 4:e=HEAP[b+28];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+28]+4]+24]](HEAP[b+28]);e=6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _list2dict(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;j=_PyDict_New();e=j==0?1:2;break;case 1:a=0;e=24;break;case 2:d=_PyList_Size(b);c=0;e=22;break;case 3:f=_PyInt_FromLong(c);e=f==0?4:7;break;case 4:HEAP[j]-=1;e=HEAP[j]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=6;break;case 6:a=0;e=24;break;case 7:h=HEAP[HEAP[b+12]+4*c];h=_PyTuple_Pack(2,allocate([h,0,0,0,HEAP[h+4],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0],ALLOC_STACK));e=h== -0?12:8;break;case 8:e=_PyDict_SetItem(j,h,f);var k=h;e=e<0?9:17;break;case 9:e=k!=0?10:12;break;case 10:HEAP[h]-=1;e=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=12;break;case 12:HEAP[f]-=1;e=HEAP[f]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=14;break;case 14:HEAP[j]-=1;e=HEAP[j]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=16;break;case 16:a=0;e=24;break;case 17:HEAP[h]=HEAP[k]-1;e=HEAP[h]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);e=19;break;case 19:HEAP[f]-=1;e=HEAP[f]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=21;break;case 21:c+=1;e=22;break;case 22:e=c>11&7;d=d==h?4:3;break;case 3:d=(j&HEAP[HEAP[o]+8])!=0?4:22;break;case 4:r=d=_PyInt_FromLong(k);d=d==0?5:8;break;case 5:HEAP[p]-=1;d=HEAP[p]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=7;break;case 7:l=0;d=24;break;case 8:k+=1;q=_PyTuple_Pack(2, -allocate([HEAP[n],0,0,0,HEAP[HEAP[n]+4],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0],ALLOC_STACK));d=q==0?10:9;break;case 9:d=_PyDict_SetItem(p,q,r)<0?10:18;break;case 10:HEAP[r]-=1;d=HEAP[r]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=12;break;case 12:HEAP[p]-=1;d=HEAP[p]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=14;break;case 14:d=q!=0?15:17;break;case 15:HEAP[q]-=1;d=HEAP[q]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q); -d=17;break;case 17:l=0;d=24;break;case 18:HEAP[r]-=1;d=HEAP[r]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=20;break;case 20:HEAP[q]-=1;d=HEAP[q]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=22;break;case 22:d=_PyDict_Next(f,m,n,o)!=0?2:23;break;case 23:l=p;d=24;break;case 24:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _compiler_unit_check(g){var a;var e;for(e=-1;;)switch(e){case -1:var b;e=g;b=HEAP[e+36];e=HEAP[e+36]!=0?1:2;break;case 1:a=e=HEAP[b],b=a;e=e!=0?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _compiler_unit_free(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m;b=g;_compiler_unit_check(b);a=HEAP[b+36];e=HEAP[b+36]!=0?1:4;break;case 1:e=HEAP[a+12]!=0?2:3;break;case 2:_PyObject_Free(HEAP[a+12]);e=3;break;case 3:e=HEAP[a];_PyObject_Free(a);a=e;e=e!=0?1:4;break;case 4:e=HEAP[b]!=0?5:7;break;case 5:c=HEAP[b];HEAP[b]=0;HEAP[c]-=1;e=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:e=HEAP[b+4]!=0?8:10;break;case 8:d=HEAP[b+4];HEAP[b+4]=0; -HEAP[d]-=1;e=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=10;break;case 10:e=HEAP[b+8]!=0?11:13;break;case 11:f=HEAP[b+8];HEAP[b+8]=0;HEAP[f]-=1;e=HEAP[f]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=13;break;case 13:e=HEAP[b+12]!=0?14:16;break;case 14:h=HEAP[b+12];HEAP[b+12]=0;HEAP[h]-=1;e=HEAP[h]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=16;break;case 16:e=HEAP[b+16]!=0?17:19;break;case 17:j=HEAP[b+16];HEAP[b+16]=0;HEAP[j]-=1;e=HEAP[j]== -0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=19;break;case 19:e=HEAP[b+24]!=0?20:22;break;case 20:k=HEAP[b+24];HEAP[b+24]=0;HEAP[k]-=1;e=HEAP[k]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=22;break;case 22:e=HEAP[b+20]!=0?23:25;break;case 23:l=HEAP[b+20];HEAP[b+20]=0;HEAP[l]-=1;e=HEAP[l]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=25;break;case 25:e=HEAP[b+28]!=0?26:28;break;case 26:m=HEAP[b+28];HEAP[b+28]=0;HEAP[m]-=1;e=HEAP[m]==0?27:28;break; -case 27:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);e=28;break;case 28:_PyObject_Free(b);return;default:assert(0,"bad label: "+e)}} -function _compiler_enter_scope(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;l=_PyObject_Malloc(220);c=l==0?1:2;break;case 1:_PyErr_NoMemory();k=0;c=27;break;case 2:_llvm_memset_p0i8_i32(l,0,220,1,0);HEAP[l+32]=0;c=_PySymtable_Lookup(HEAP[d+4],h);HEAP[l]=c;c=HEAP[l]==0?3:4;break;case 3:_compiler_unit_free(l);k=0;c=27;break;case 4:HEAP[f]+=1;HEAP[l+4]=f;c=_list2dict(HEAP[HEAP[l]+20]);HEAP[l+16]=c;c=_dictbytype(HEAP[HEAP[l]+12],5,0,0);HEAP[l+20]=c;c=HEAP[l+16]==0?6:5; -break;case 5:c=HEAP[l+20]==0?6:7;break;case 6:_compiler_unit_free(l);k=0;c=27;break;case 7:var n=_PyDict_Size(HEAP[l+20]),n=_dictbytype(HEAP[HEAP[l]+12],4,32,n);HEAP[l+24]=n;n=l;c=HEAP[l+24]==0?8:9;break;case 8:_compiler_unit_free(n);k=0;c=27;break;case 9:HEAP[n+36]=0;HEAP[l+44]=0;HEAP[l+208]=j;HEAP[l+212]=0;HEAP[l+216]=0;c=_PyDict_New();HEAP[l+8]=c;c=HEAP[l+8]==0?10:11;break;case 10:_compiler_unit_free(l);k=0;c=27;break;case 11:var o=_PyDict_New();HEAP[l+12]=o;o=l;c=HEAP[l+12]==0?12:13;break;case 12:_compiler_unit_free(o); -k=0;c=27;break;case 13:HEAP[o+28]=0;c=HEAP[d+24]!=0?14:24;break;case 14:m=_PyCapsule_New(HEAP[d+24],__str2907,0);c=m==0?19:15;break;case 15:c=_PyList_Append(HEAP[d+28],m);var p=m;c=c<0?16:20;break;case 16:c=p!=0?17:19;break;case 17:HEAP[m]-=1;c=HEAP[m]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=19;break;case 19:_compiler_unit_free(l);k=0;c=27;break;case 20:HEAP[m]=HEAP[p]-1;c=HEAP[m]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=22;break;case 22:HEAP[l+28]=HEAP[HEAP[d+ -24]+28];c=HEAP[l+28]!=0?23:24;break;case 23:HEAP[HEAP[l+28]]+=1;c=24;break;case 24:HEAP[d+24]=l;HEAP[d+20]+=1;c=_compiler_use_new_block(d)==0?25:26;break;case 25:k=0;c=27;break;case 26:k=1;c=27;break;case 27:return g=k;default:assert(0,"bad label: "+c)}} -function _compiler_exit_scope(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;HEAP[b+20]-=1;_compiler_unit_free(HEAP[b+24]);a=HEAP[HEAP[b+28]+8]-1;var c=b;e=a>=0?1:4;break;case 1:e=HEAP[HEAP[HEAP[c+28]+12]+4*a];e=_PyCapsule_GetPointer(e,__str2907);HEAP[b+24]=e;e=_PySequence_DelItem(HEAP[b+28],a)<0?2:3;break;case 2:throw _Py_FatalError(__str3908),"Reached an unreachable!";case 3:_compiler_unit_check(HEAP[b+24]);e=5;break;case 4:HEAP[c+24]=0;e=5;break;case 5:return;default:assert(0,"bad label: "+ -e)}}function _compiler_new_block(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;c=HEAP[g+24];a=_PyObject_Malloc(32);e=a==0?1:2;break;case 1:_PyErr_NoMemory();b=0;e=3;break;case 2:_llvm_memset_p0i8_i32(a,0,32,1,0);HEAP[a]=HEAP[c+36];b=HEAP[c+36]=a;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _compiler_use_new_block(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=_compiler_new_block(b);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:a=HEAP[HEAP[b+24]+40]=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _compiler_next_block(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=_compiler_new_block(b);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:HEAP[HEAP[HEAP[b+24]+40]+16]=c;a=HEAP[HEAP[b+24]+40]=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _compiler_use_next_block(g,e){HEAP[HEAP[HEAP[g+24]+40]+16]=e;HEAP[HEAP[g+24]+40]=e} -function _compiler_next_instr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=e;b=HEAP[a+12]==0?1:4;break;case 1:b=_PyObject_Malloc(256);HEAP[a+12]=b;b=HEAP[a+12]==0?2:3;break;case 2:_PyErr_NoMemory();c=-1;b=13;break;case 3:HEAP[a+8]=16;_llvm_memset_p0i8_i32(HEAP[a+12],0,256,1,0);b=12;break;case 4:b=HEAP[a+4]==HEAP[a+8]?5:12;break;case 5:f=HEAP[a+8]*16;h=f<<1;b=f<0?6:7;break;case 6:_PyErr_NoMemory();c=-1;b=13;break;case 7:b=h==0?8:9;break;case 8:_PyErr_NoMemory();c=-1;b=13;break;case 9:HEAP[a+ -8]<<=1;d=_PyObject_Realloc(HEAP[a+12],h);b=d==0?10:11;break;case 10:_PyErr_NoMemory();c=-1;b=13;break;case 11:HEAP[a+12]=d;_llvm_memset_p0i8_i32(HEAP[a+12]+f,0,h-f,1,0);b=12;break;case 12:c=HEAP[a+4];HEAP[a+4]+=1;b=13;break;case 13:return a=c;default:assert(0,"bad label: "+b)}} -function _compiler_set_lineno(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=HEAP[HEAP[a+24]+216]!=0?2:1;break;case 1:HEAP[HEAP[a+24]+216]=1;b=HEAP[HEAP[a+24]+40];HEAP[HEAP[b+12]+16*c+12]=HEAP[HEAP[a+24]+212];b=2;break;case 2:return;default:assert(0,"bad label: "+b)}} -function _opcode_stack_effect(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=a;b=b==1?1:b==2?2:b==3?2:b==4?3:b==5?4:b==10?5:b==11?5:b==12?5:b==13?5:b==15?5:b==19?8:b==20?8:b==21?8:b==22?8:b==23?8:b==24?8:b==25?8:b==26?8:b==27?8:b==28?9:b==29?9:b==30?10:b==31?11:b==32?12:b==33?13:b==40?14:b==41?15:b==42?16:b==43?17:b==50?18:b==51?19:b==52?20:b==53?21:b==54?24:b==55?22:b==56?22:b==57?22:b==58?22:b==59?22:b==60?23:b==61?25:b==62?26:b==63?26:b==64?26:b==65?26:b==66?26:b==67?27:b==68?28:b== -70?29:b==71?30:b==72?31:b==73?32:b==74?33:b==75?34:b==76?34:b==77?34:b==78?34:b==79?34:b==80?35:b==81?37:b==82?38:b==83?39:b==84?40:b==85?41:b==86?42:b==87?43:b==88?44:b==89?45:b==90?46:b==91?47:b==92?48:b==93?49:b==94?6:b==95?50:b==96?51:b==97?52:b==98?53:b==99?54:b==100?55:b==101?56:b==102?57:b==103?57:b==104?57:b==105?58:b==106?59:b==107?60:b==108?61:b==109?62:b==110?63:b==111?63:b==112?63:b==113?63:b==114?64:b==115?64:b==116?65:b==119?66:b==120?67:b==121?67:b==122?67:b==124?68:b==125?69:b==126? -70:b==130?71:b==131?72:b==132?75:b==133?76:b==134?79:b==135?80:b==136?81:b==137?82:b==140?73:b==141?73:b==142?74:b==143?36:b==146?6:b==147?7:83;break;case 1:d=-1;b=84;break;case 2:d=0;b=84;break;case 3:d=1;b=84;break;case 4:d=0;b=84;break;case 5:d=0;b=84;break;case 6:d=-1;b=84;break;case 7:d=-2;b=84;break;case 8:d=-1;b=84;break;case 9:d=-1;b=84;break;case 10:d=0;b=84;break;case 11:d=-1;b=84;break;case 12:d=-1;b=84;break;case 13:d=-2;b=84;break;case 14:d=-2;b=84;break;case 15:d=-3;b=84;break;case 16:d= --3;b=84;break;case 17:d=-4;b=84;break;case 18:d=-1;b=84;break;case 19:d=-2;b=84;break;case 20:d=-2;b=84;break;case 21:d=-3;b=84;break;case 22:d=-1;b=84;break;case 23:d=-3;b=84;break;case 24:d=-2;b=84;break;case 25:d=-2;b=84;break;case 26:d=-1;b=84;break;case 27:d=-1;b=84;break;case 28:d=0;b=84;break;case 29:d=-1;b=84;break;case 30:d=-1;b=84;break;case 31:d=0;b=84;break;case 32:d=-2;b=84;break;case 33:d=-1;b=84;break;case 34:d=-1;b=84;break;case 35:d=0;b=84;break;case 36:d=4;b=84;break;case 37:d=-1; -b=84;break;case 38:d=1;b=84;break;case 39:d=-1;b=84;break;case 40:d=-1;b=84;break;case 41:d=-3;b=84;break;case 42:d=0;b=84;break;case 43:d=0;b=84;break;case 44:d=-3;b=84;break;case 45:d=-2;b=84;break;case 46:d=-1;b=84;break;case 47:d=0;b=84;break;case 48:d=c-1;b=84;break;case 49:d=1;b=84;break;case 50:d=-2;b=84;break;case 51:d=-1;b=84;break;case 52:d=-1;b=84;break;case 53:d=0;b=84;break;case 54:d=c;b=84;break;case 55:d=1;b=84;break;case 56:d=1;b=84;break;case 57:d=1-c;b=84;break;case 58:d=1;b=84; -break;case 59:d=0;b=84;break;case 60:d=-1;b=84;break;case 61:d=-1;b=84;break;case 62:d=1;b=84;break;case 63:d=0;b=84;break;case 64:d=-1;b=84;break;case 65:d=1;b=84;break;case 66:d=0;b=84;break;case 67:d=0;b=84;break;case 68:d=1;b=84;break;case 69:d=-1;b=84;break;case 70:d=0;b=84;break;case 71:d=0-c;b=84;break;case 72:d=(c/256|0)*-2-c%256;b=84;break;case 73:d=(c/256|0)*-2+-1+(0-c%256);b=84;break;case 74:d=(c/256|0)*-2+-2+(0-c%256);b=84;break;case 75:d=0-c;b=84;break;case 76:b=c==3?77:78;break;case 77:d= --2;b=84;break;case 78:d=-1;b=84;break;case 79:d=c^-1;b=84;break;case 80:d=1;b=84;break;case 81:d=1;b=84;break;case 82:d=-1;b=84;break;case 83:throw _fprintf(HEAP[_stderr],__str4909,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK)),_Py_FatalError(__str5910),"Reached an unreachable!";case 84:return a=d;default:assert(0,"bad label: "+b)}} -function _compiler_addop(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_compiler_next_instr(a,HEAP[HEAP[a+24]+40]);b=h<0?1:2;break;case 1:d=0;b=5;break;case 2:f=HEAP[HEAP[a+24]+40];b=HEAP[f+12]+16*h;HEAP[b+1]=c&255;HEAP[b]&=-5;b=c==83?3:4;break;case 3:HEAP[f+20]=HEAP[f+20]&-3|2;b=4;break;case 4:_compiler_set_lineno(a,h);d=1;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _compiler_add_o(g,e,b){g=STACKTOP;STACKTOP+=16;_memset(g,0,16);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p=g,q,r;d=e;f=b;a=HEAP[f+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[f+4],_PyFloat_Type)!=0?2:6;break;case 2:o=HEAP[f+8];a=HEAP[f+8]!=0?5:3;break;case 3:a=_copysign(1,o)>=0?5:4;break;case 4:var u=_PyTuple_Pack(3,allocate([f,0,0,0,HEAP[f+4],0,0,0,__Py_NoneStruct,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*", -0,0,0],ALLOC_STACK));l=u;c=4;a=25;break;case 5:var s=_PyTuple_Pack(2,allocate([f,0,0,0,HEAP[f+4],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0],ALLOC_STACK));l=s;c=5;a=25;break;case 6:a=HEAP[f+4]==_PyComplex_Type?8:7;break;case 7:a=_PyType_IsSubtype(HEAP[f+4],_PyComplex_Type)!=0?8:24;break;case 8:_PyComplex_AsCComplex(p,f);a=HEAP[p]!=0?11:9;break;case 9:a=_copysign(1,HEAP[p])>=0?11:10;break;case 10:k=1;a=12;break;case 11:k=0;a=12;break;case 12:q=k;a=HEAP[p+8]!=0?15:13;break; -case 13:a=_copysign(1,HEAP[p+8])>=0?15:14;break;case 14:j=1;a=16;break;case 15:j=0;a=16;break;case 16:var t=j;r=t;a=q==0?19:17;break;case 17:a=r==0?21:18;break;case 18:var v=_PyTuple_Pack(5,allocate([f,0,0,0,HEAP[f+4],0,0,0,__Py_NoneStruct,0,0,0,__Py_NoneStruct,0,0,0,__Py_NoneStruct,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));l=v;c=18;a=25;break;case 19:a=t!=0?20:21;break; -case 20:var w=_PyTuple_Pack(4,allocate([f,0,0,0,HEAP[f+4],0,0,0,__Py_NoneStruct,0,0,0,__Py_NoneStruct,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));l=w;c=20;a=25;break;case 21:var x=HEAP[f+4],y=f;a=q!=0?22:23;break;case 22:var z=_PyTuple_Pack(3,allocate([y,0,0,0,x,0,0,0,__Py_NoneStruct,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));l=z; -c=22;a=25;break;case 23:var C=_PyTuple_Pack(2,allocate([y,0,0,0,x,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0],ALLOC_STACK));l=C;c=23;a=25;break;case 24:var A=_PyTuple_Pack(2,allocate([f,0,0,0,HEAP[f+4],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0],ALLOC_STACK));l=A;c=24;a=25;break;case 25:a=(c==18?v:c==20?w:c==22?z:c==23?C:c==4?u:c==5?s:A)==0?26:27;break;case 26:h=-1;a=44;break;case 27:m=_PyDict_GetItem(d,l);a=m==0?28:40;break;case 28:n=_PyDict_Size(d); -m=_PyInt_FromLong(n);a=m==0?29:32;break;case 29:HEAP[l]-=1;a=HEAP[l]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=31;break;case 31:h=-1;a=44;break;case 32:a=_PyDict_SetItem(d,l,m)<0?33:38;break;case 33:HEAP[l]-=1;a=HEAP[l]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=35;break;case 35:HEAP[m]-=1;a=HEAP[m]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=37;break;case 37:h=-1;a=44;break;case 38:HEAP[m]-=1;a=HEAP[m]==0?39:41;break;case 39:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);a=41;break;case 40:n=_PyInt_AsLong(m);a=41;break;case 41:HEAP[l]-=1;a=HEAP[l]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=43;break;case 43:h=n;a=44;break;case 44:return e=h,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _compiler_addop_o(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j;d=g;f=e;j=_compiler_add_o(d,b,a);c=j<0?1:2;break;case 1:h=0;c=3;break;case 2:h=_compiler_addop_i(d,f,j);c=3;break;case 3:return g=h;default:assert(0,"bad label: "+c)}} -function _compiler_addop_name(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;l=__Py_Mangle(HEAP[HEAP[d+24]+28],a);c=l==0?1:2;break;case 1:j=0;c=7;break;case 2:k=_compiler_add_o(d,h,l);HEAP[l]-=1;c=HEAP[l]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=4;break;case 4:c=k<0?5:6;break;case 5:j=0;c=7;break;case 6:j=_compiler_addop_i(d,f,k);c=7;break;case 7:return g=j;default:assert(0,"bad label: "+c)}} -function _compiler_addop_i(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=_compiler_next_instr(c,HEAP[HEAP[c+24]+40]);a=j<0?1:2;break;case 1:h=0;a=3;break;case 2:a=HEAP[HEAP[HEAP[c+24]+40]+12]+16*j;HEAP[a+1]=d&255;HEAP[a+4]=f;HEAP[a]=HEAP[a]&-5|4;_compiler_set_lineno(c,j);h=1;a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _compiler_addop_j(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;j=a;l=_compiler_next_instr(d,HEAP[HEAP[d+24]+40]);c=l<0?1:2;break;case 1:k=0;c=6;break;case 2:c=HEAP[HEAP[HEAP[d+24]+40]+12]+16*l;HEAP[c+1]=f&255;HEAP[c+8]=h;HEAP[c]=HEAP[c]&-5|4;var m=c,n=HEAP[m];c=j!=0?3:4;break;case 3:HEAP[m]=n&-2|1;c=5;break;case 4:HEAP[m]=n&-3|2;c=5;break;case 5:_compiler_set_lineno(d,l);k=1;c=6;break;case 6:return g=k;default:assert(0,"bad label: "+c)}} -function _compiler_isdocstring(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b]!=20?1:2;break;case 1:a=0;e=3;break;case 2:a=HEAP[HEAP[b+4]]==17;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _compiler_body(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=0;b=c==0?2:1;break;case 1:b=HEAP[c]==0?2:3;break;case 2:f=1;b=16;break;case 3:j=HEAP[c+4];b=_compiler_isdocstring(j)!=0&HEAP[_Py_OptimizeFlag]<=1?4:11;break;case 4:h=1;b=_compiler_visit_expr(a,HEAP[j+4])==0?5:6;break;case 5:f=0;b=16;break;case 6:b=_compiler_nameop(a,HEAP[___doc__],2)==0?7:11;break;case 7:f=0;b=16;break;case 8:b=_compiler_visit_stmt(a,HEAP[c+4+h*4])==0?9:10;break;case 9:f=0;b=16;break;case 10:h+= -1;b=11;break;case 11:b=c!=0?12:13;break;case 12:d=HEAP[c];b=14;break;case 13:d=0;b=14;break;case 14:b=d>h?8:15;break;case 15:f=1;b=16;break;case 16:return b=f;default:assert(0,"bad label: "+b)}} -function _compiler_mod(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;j=1;b=HEAP[_module_10269]==0?1:3;break;case 1:b=_PyString_InternFromString(__str6911);HEAP[_module_10269]=b;b=HEAP[_module_10269]==0?2:3;break;case 2:h=0;b=22;break;case 3:b=_compiler_enter_scope(c,HEAP[_module_10269],d,0)==0?4:5;break;case 4:h=0;b=22;break;case 5:b=HEAP[d];b=b==1?6:b==2?8:b==3?16:b==4?19:20;break;case 6:b=_compiler_body(c,HEAP[d+4])==0?7:21;break;case 7:_compiler_exit_scope(c);h=0;b=22; -break;case 8:HEAP[c+16]=1;var m=HEAP[d+4];l=m;k=0;a=8;b=12;break;case 9:b=HEAP[l+4+k*4];b=_compiler_visit_stmt(c,b)==0?10:11;break;case 10:_compiler_exit_scope(c);h=0;b=22;break;case 11:k+=1;var n=l,a=11;b=12;break;case 12:b=(a==11?n:m)!=0?13:14;break;case 13:f=HEAP[l];b=15;break;case 14:f=0;b=15;break;case 15:b=f>k?9:21;break;case 16:b=_compiler_visit_expr(c,HEAP[d+4])==0?17:18;break;case 17:_compiler_exit_scope(c);h=0;b=22;break;case 18:j=0;b=21;break;case 19:_PyErr_SetString(HEAP[_PyExc_SystemError], -__str7912);h=0;b=22;break;case 20:_PyErr_Format(HEAP[_PyExc_SystemError],__str8913,allocate([HEAP[d],0,0,0],["i32",0,0,0],ALLOC_STACK));h=0;b=22;break;case 21:h=_assemble(c,j);_compiler_exit_scope(c);b=22;break;case 22:return a=h;default:assert(0,"bad label: "+b)}} -function _get_ref_type(g,e){var b=STACKTOP;STACKTOP+=350;_memset(b,0,350);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;f=_PyST_GetScope(HEAP[HEAP[c+24]],d);a=f==0?1:2;break;case 1:b=_PyObject_Repr(HEAP[HEAP[c+24]+12])+20;a=_PyObject_Repr(HEAP[HEAP[c+24]+16])+20;f=_PyObject_Repr(HEAP[HEAP[HEAP[c+24]]+12])+20;var j=HEAP[c],k=_PyObject_Repr(HEAP[HEAP[HEAP[c+24]]+8])+20;_PyOS_snprintf(h,350,__str9914,allocate([d+20,0,0,0,HEAP[HEAP[c+24]+4]+20,0,0,0,k,0,0,0,j,0,0,0,f,0,0,0,a,0,0,0,b,0,0,0], -["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));_Py_FatalError(h);throw"Reached an unreachable!";case 2:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _compiler_lookup_arg(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;b=e;d=_PyTuple_Pack(2,allocate([b,0,0,0,HEAP[b+4],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.PyTypeObject*",0,0,0],ALLOC_STACK));b=d==0?1:2;break;case 1:c=-1;b=7;break;case 2:f=_PyDict_GetItem(a,d);HEAP[d]-=1;b=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=4;break;case 4:b=f==0?5:6;break;case 5:c=-1;b=7;break;case 6:c=HEAP[f+8];b=7;break;case 7:return a=c;default:assert(0,"bad label: "+ -b)}} -function _compiler_make_closure(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;m=HEAP[HEAP[f+40]+8];a=m==0?1:6;break;case 1:a=_compiler_addop_o(d,100,HEAP[HEAP[d+24]+8],f)==0?2:3;break;case 2:k=0;a=23;break;case 3:a=_compiler_addop_i(d,132,h)==0?4:5;break;case 4:k=0;a=23;break;case 5:k=1;a=23;break;case 6:l=0;a=15;break;case 7:n=HEAP[HEAP[f+40]+12+l*4];o=_get_ref_type(d,n);var p=HEAP[d+24];a=o==5?8:9;break;case 8:var q=_compiler_lookup_arg(HEAP[p+20],n);j=q;c=8; -a=10;break;case 9:var r=_compiler_lookup_arg(HEAP[p+24],n);j=r;c=9;a=10;break;case 10:a=(c==9?r:q)==-1?11:12;break;case 11:throw g=_PyObject_Repr(HEAP[f+40])+20,f=HEAP[f+52]+20,d=HEAP[HEAP[d+24]+4]+20,n=_PyObject_Repr(n)+20,_printf(__str10915,allocate([n,0,0,0,d,0,0,0,o,0,0,0,j,0,0,0,f,0,0,0,g,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK)),_Py_FatalError(__str11916),"Reached an unreachable!";case 12:a=_compiler_addop_i(d,135,j)==0?13:14;break;case 13:k= -0;a=23;break;case 14:l+=1;a=15;break;case 15:a=lh?3:10;break;case 10:f=1;b=11;break;case 11:return b=f;default:assert(0,"bad label: "+b)}} -function _compiler_arguments(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;b=HEAP[c]!=0?1:2;break;case 1:d=HEAP[HEAP[c]];b=3;break;case 2:d=0;b=3;break;case 3:h=d;f=0;b=16;break;case 4:j=HEAP[HEAP[c]+4+f*4];b=HEAP[j]==22?5:15;break;case 5:k=_PyString_FromFormat(__str12917,allocate([f,0,0,0],["i32",0,0,0],ALLOC_STACK));b=k==0?6:7;break;case 6:b=18;break;case 7:b=_compiler_nameop(a,k,1)==0;HEAP[k]-=1;var l=HEAP[k]==0;b=b?8:11;break;case 8:b=l?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);b=10;break;case 10:b=18;break;case 11:b=l?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=13;break;case 13:b=_compiler_visit_expr(a,j)==0?14:15;break;case 14:b=18;break;case 15:f+=1;b=16;break;case 16:b=fv?4:11;break;case 11:b=_compiler_enter_scope(c,HEAP[d+4],d,HEAP[d+20])==0?12:13;break;case 12:m=0;b=44;break;case 13:r=HEAP[HEAP[d+4+8]+4];t=_compiler_isdocstring(r);b=t!=0&HEAP[_Py_OptimizeFlag]<=1?14:15;break;case 14:o=HEAP[HEAP[r+4]+4];b=15;break;case 15:b=_compiler_add_o(c,HEAP[HEAP[c+24]+8],o);var z=c;b=b<0?16:17;break;case 16:_compiler_exit_scope(z);m=0;b=44;break;case 17:_compiler_arguments(z,p);var C=HEAP[c+24];b=HEAP[p]!=0?18:19;break;case 18:k=HEAP[HEAP[p]];b=20; -break;case 19:k=0;b=20;break;case 20:HEAP[C+32]=k;b=HEAP[d+4+8]!=0?21:22;break;case 21:j=HEAP[HEAP[d+4+8]];b=23;break;case 22:j=0;b=23;break;case 23:s=j;u=t;b=27;break;case 24:r=HEAP[HEAP[d+4+8]+4+u*4];b=_compiler_visit_stmt(c,r)==0?25:26;break;case 25:_compiler_exit_scope(c);m=0;b=44;break;case 26:u+=1;b=27;break;case 27:b=uu?36:43;break;case 43:m=_compiler_nameop(c,HEAP[d+4],2);b=44;break;case 44:return a=m;default:assert(0,"bad label: "+b)}} -function _compiler_class(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q;c=g;d=e;o=HEAP[d+4+12];b=_compiler_decorators(c,o)==0?1:2;break;case 1:j=0;b=63;break;case 2:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],HEAP[d+4])==0?3:4;break;case 3:j=0;b=63;break;case 4:b=HEAP[d+4+4]!=0?6:5;break;case 5:k=0;b=15;break;case 6:k=HEAP[HEAP[d+4+4]];b=HEAP[HEAP[d+4+4]]>0?7:15;break;case 7:var r=HEAP[d+4+4];q=r;p=0;a=7;b=11;break;case 8:b=HEAP[q+4+p*4];b=_compiler_visit_expr(c,b)==0? -9:10;break;case 9:j=0;b=63;break;case 10:p+=1;var u=q,a=10;b=11;break;case 11:b=(a==10?u:r)!=0?12:13;break;case 12:h=HEAP[q];b=14;break;case 13:h=0;b=14;break;case 14:b=h>p?8:15;break;case 15:b=_compiler_addop_i(c,102,k)==0?16:17;break;case 16:j=0;b=63;break;case 17:b=_compiler_enter_scope(c,HEAP[d+4],d,HEAP[d+20])==0?18:19;break;case 18:j=0;b=63;break;case 19:b=HEAP[HEAP[c+24]+28]!=0?20:22;break;case 20:b=HEAP[HEAP[c+24]+28];HEAP[b]-=1;b=HEAP[b]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[HEAP[HEAP[c+ -24]+28]+4]+24]](HEAP[HEAP[c+24]+28]);b=22;break;case 22:HEAP[HEAP[c+24]+28]=HEAP[d+4];HEAP[HEAP[HEAP[c+24]+28]]+=1;n=b=_PyString_InternFromString(__str13918);b=b==0?27:23;break;case 23:b=_compiler_nameop(c,n,1);var s=n;b=b==0?24:28;break;case 24:b=s!=0?25:27;break;case 25:HEAP[n]-=1;b=HEAP[n]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=27;break;case 27:_compiler_exit_scope(c);j=0;b=63;break;case 28:HEAP[n]=HEAP[s]-1;b=HEAP[n]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[n+4]+ -24]](n);b=30;break;case 30:n=b=_PyString_InternFromString(__str14919);b=b==0?35:31;break;case 31:b=_compiler_nameop(c,n,2);var t=n;b=b==0?32:36;break;case 32:b=t!=0?33:35;break;case 33:HEAP[n]-=1;b=HEAP[n]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=35;break;case 35:_compiler_exit_scope(c);j=0;b=63;break;case 36:HEAP[n]=HEAP[t]-1;b=HEAP[n]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=38;break;case 38:b=_compiler_body(c,HEAP[d+4+8]);var v=c;b=b==0?39:40;break;case 39:_compiler_exit_scope(v); -j=0;b=63;break;case 40:b=_compiler_addop(v,82);var w=c;b=b==0?41:42;break;case 41:_compiler_exit_scope(w);j=0;b=63;break;case 42:b=_compiler_addop(w,83);var x=c;b=b==0?43:44;break;case 43:_compiler_exit_scope(x);j=0;b=63;break;case 44:m=_assemble(x,1);_compiler_exit_scope(c);b=m==0?45:46;break;case 45:j=0;b=63;break;case 46:_compiler_make_closure(c,m,0);HEAP[m]-=1;b=HEAP[m]==0?47:48;break;case 47:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);b=48;break;case 48:b=_compiler_addop_i(c,131,0)==0?49:50;break; -case 49:j=0;b=63;break;case 50:b=_compiler_addop(c,89)==0?51:52;break;case 51:j=0;b=63;break;case 52:l=0;b=56;break;case 53:b=_compiler_addop_i(c,131,1)==0?54:55;break;case 54:j=0;b=63;break;case 55:l+=1;b=56;break;case 56:b=o!=0?57:58;break;case 57:f=HEAP[o];b=59;break;case 58:f=0;b=59;break;case 59:b=f>l?53:60;break;case 60:b=_compiler_nameop(c,HEAP[d+4],2)==0?61:62;break;case 61:j=0;b=63;break;case 62:j=1;b=63;break;case 63:return a=j;default:assert(0,"bad label: "+b)}} -function _compiler_ifexp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=_compiler_new_block(a);b=f==0?1:2;break;case 1:d=0;b=15;break;case 2:h=_compiler_new_block(a);b=h==0?3:4;break;case 3:d=0;b=15;break;case 4:b=_compiler_visit_expr(a,HEAP[c+4])==0?5:6;break;case 5:d=0;b=15;break;case 6:b=_compiler_addop_j(a,114,h,1)==0?7:8;break;case 7:d=0;b=15;break;case 8:b=_compiler_visit_expr(a,HEAP[c+4+4])==0?9:10;break;case 9:d=0;b=15;break;case 10:b=_compiler_addop_j(a,110,f,0)==0?11:12; -break;case 11:d=0;b=15;break;case 12:_compiler_use_next_block(a,h);b=_compiler_visit_expr(a,HEAP[c+4+8])==0?13:14;break;case 13:d=0;b=15;break;case 14:_compiler_use_next_block(a,f);d=1;b=15;break;case 15:return b=d;default:assert(0,"bad label: "+b)}} -function _compiler_lambda(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;m=HEAP[d+4];b=HEAP[_name_10827]==0?1:3;break;case 1:b=_PyString_InternFromString(__str15920);HEAP[_name_10827]=b;b=HEAP[_name_10827]==0?2:3;break;case 2:k=0;b=34;break;case 3:b=HEAP[m+12]!=0?4:12;break;case 4:var p=HEAP[m+12];o=p;n=0;a=4;b=8;break;case 5:b=HEAP[o+4+n*4];b=_compiler_visit_expr(c,b)==0?6:7;break;case 6:k=0;b=34;break;case 7:n+=1;var q=o,a=7;b=8;break;case 8:b=(a==7?q:p)!=0?9:10; -break;case 9:j=HEAP[o];b=11;break;case 10:j=0;b=11;break;case 11:b=j>n?5:12;break;case 12:b=_compiler_enter_scope(c,HEAP[_name_10827],d,HEAP[d+24])==0?13:14;break;case 13:k=0;b=34;break;case 14:_compiler_arguments(c,m);b=_compiler_add_o(c,HEAP[HEAP[c+24]+8],__Py_NoneStruct)<0?15:16;break;case 15:k=0;b=34;break;case 16:var r=HEAP[c+24];b=HEAP[m]!=0?17:18;break;case 17:h=HEAP[HEAP[m]];b=19;break;case 18:h=0;b=19;break;case 19:HEAP[r+32]=h;b=_compiler_visit_expr(c,HEAP[d+4+4]);var u=c;b=b==0?20:21;break; -case 20:_compiler_exit_scope(u);k=0;b=34;break;case 21:b=reSign(HEAP[HEAP[HEAP[u+24]]+40]<<29>>>0>>>31&1,1,1)!=0;var s=c;b=b?22:24;break;case 22:b=_compiler_addop(s,1)==0?23:26;break;case 23:_compiler_exit_scope(c);k=0;b=34;break;case 24:b=_compiler_addop(s,83)==0?25:26;break;case 25:_compiler_exit_scope(c);k=0;b=34;break;case 26:l=_assemble(c,1);_compiler_exit_scope(c);b=l==0?27:28;break;case 27:k=0;b=34;break;case 28:b=HEAP[m+12]!=0?29:30;break;case 29:f=HEAP[HEAP[m+12]];b=31;break;case 30:f=0; -b=31;break;case 31:_compiler_make_closure(c,l,f);HEAP[l]-=1;b=HEAP[l]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=33;break;case 33:k=1;b=34;break;case 34:return a=k;default:assert(0,"bad label: "+b)}} -function _compiler_print(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;b=HEAP[c+4+4]!=0?1:2;break;case 1:f=HEAP[HEAP[c+4+4]];b=3;break;case 2:f=0;b=3;break;case 3:j=f;k=0;b=HEAP[c+4]!=0?4:7;break;case 4:b=_compiler_visit_expr(a,HEAP[c+4])==0?5:6;break;case 5:d=0;b=33;break;case 6:k=1;b=7;break;case 7:h=0;b=22;break;case 8:l=HEAP[HEAP[n+4]+4+h*4];var m=a;b=k!=0?9:17;break;case 9:b=_compiler_addop(m,4)==0?10:11;break;case 10:d=0;b=33;break;case 11:b=_compiler_visit_expr(a,l)== -0?12:13;break;case 12:d=0;b=33;break;case 13:b=_compiler_addop(a,2)==0?14:15;break;case 14:d=0;b=33;break;case 15:b=_compiler_addop(a,73)==0?16:21;break;case 16:d=0;b=33;break;case 17:b=_compiler_visit_expr(m,l)==0?18:19;break;case 18:d=0;b=33;break;case 19:b=_compiler_addop(a,71)==0?20:21;break;case 20:d=0;b=33;break;case 21:h+=1;b=22;break;case 22:var n=c+4;b=hp?5:48;break;case 12:var z=d+4;b=o==1?13:21;break;case 13:var C=HEAP[z+4];u=C;r=0;a=13;b=17;break;case 14:b=HEAP[u+4+r*4];b=_compiler_visit_stmt(c,b)==0?15:16;break;case 15:l=0;b=49;break;case 16:r+=1;var A=u,a=16;b=17;break;case 17:b=(a==16?A:C)!=0?18:19;break;case 18:j=HEAP[u];b=20;break;case 19:j=0;b=20;break;case 20:b=j>r?14:48;break;case 21:b=HEAP[z+8]!=0?22:24;break;case 22:n=_compiler_new_block(c);b=n==0?23:25;break;case 23:l=0;b=49;break;case 24:n=m;b=25;break;case 25:b= -_compiler_visit_expr(c,HEAP[d+4])==0?26:27;break;case 26:l=0;b=49;break;case 27:b=_compiler_addop_j(c,114,n,1)==0?28:29;break;case 28:l=0;b=49;break;case 29:var G=HEAP[d+4+4];t=G;s=0;a=29;b=33;break;case 30:b=HEAP[t+4+s*4];b=_compiler_visit_stmt(c,b)==0?31:32;break;case 31:l=0;b=49;break;case 32:s+=1;var E=t,a=32;b=33;break;case 33:b=(a==32?E:G)!=0?34:35;break;case 34:h=HEAP[t];b=36;break;case 35:h=0;b=36;break;case 36:b=h>s?30:37;break;case 37:b=_compiler_addop_j(c,110,m,0)==0?38:39;break;case 38:l= -0;b=49;break;case 39:b=HEAP[d+4+8]!=0?40:48;break;case 40:_compiler_use_next_block(c,n);var D=HEAP[d+4+8];w=D;v=0;a=40;b=44;break;case 41:b=HEAP[w+4+v*4];b=_compiler_visit_stmt(c,b)==0?42:43;break;case 42:l=0;b=49;break;case 43:v+=1;var R=w,a=43;b=44;break;case 44:b=(a==43?R:D)!=0?45:46;break;case 45:f=HEAP[w];b=47;break;case 46:f=0;b=47;break;case 47:b=f>v?41:48;break;case 48:_compiler_use_next_block(c,m);l=1;b=49;break;case 49:return a=l;default:assert(0,"bad label: "+b)}} -function _compiler_for(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q;c=g;d=e;k=_compiler_new_block(c);l=_compiler_new_block(c);m=_compiler_new_block(c);b=k==0?3:1;break;case 1:b=m==0?3:2;break;case 2:b=l==0?3:4;break;case 3:j=0;b=37;break;case 4:b=_compiler_addop_j(c,120,m,0)==0?5:6;break;case 5:j=0;b=37;break;case 6:b=_compiler_push_fblock(c,0,k)==0?7:8;break;case 7:j=0;b=37;break;case 8:b=_compiler_visit_expr(c,HEAP[d+4+4])==0?9:10;break;case 9:j=0;b=37;break;case 10:b= -_compiler_addop(c,68)==0?11:12;break;case 11:j=0;b=37;break;case 12:_compiler_use_next_block(c,k);b=_compiler_addop_j(c,93,l,0)==0?13:14;break;case 13:j=0;b=37;break;case 14:b=_compiler_visit_expr(c,HEAP[d+4])==0?15:16;break;case 15:j=0;b=37;break;case 16:var r=HEAP[d+4+8];o=r;n=0;a=16;b=20;break;case 17:b=HEAP[o+4+n*4];b=_compiler_visit_stmt(c,b)==0?18:19;break;case 18:j=0;b=37;break;case 19:n+=1;var u=o,a=19;b=20;break;case 20:b=(a==19?u:r)!=0?21:22;break;case 21:h=HEAP[o];b=23;break;case 22:h= -0;b=23;break;case 23:b=h>n?17:24;break;case 24:b=_compiler_addop_j(c,113,k,1)==0?25:26;break;case 25:j=0;b=37;break;case 26:_compiler_use_next_block(c,l);b=_compiler_addop(c,87)==0?27:28;break;case 27:j=0;b=37;break;case 28:_compiler_pop_fblock(c,0,k);var s=HEAP[d+4+12];q=s;p=0;a=28;b=32;break;case 29:b=HEAP[q+4+p*4];b=_compiler_visit_stmt(c,b)==0?30:31;break;case 30:j=0;b=37;break;case 31:p+=1;var t=q,a=31;b=32;break;case 32:b=(a==31?t:s)!=0?33:34;break;case 33:f=HEAP[q];b=35;break;case 34:f=0;b= -35;break;case 35:b=f>p?29:36;break;case 36:_compiler_use_next_block(c,m);j=1;b=37;break;case 37:return a=j;default:assert(0,"bad label: "+b)}} -function _compiler_while(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;c=g;d=e;o=0;p=_expr_constant(HEAP[d+4]);b=p==0?1:11;break;case 1:b=HEAP[d+4+8]!=0?2:10;break;case 2:var w=HEAP[d+4+8];r=w;q=0;a=2;b=6;break;case 3:b=HEAP[r+4+q*4];b=_compiler_visit_stmt(c,b)==0?4:5;break;case 4:k=0;b=53;break;case 5:q+=1;var x=r,a=5;b=6;break;case 6:b=(a==5?x:w)!=0?7:8;break;case 7:j=HEAP[r];b=9;break;case 8:j=0;b=9;break;case 9:b=j>q?3:10;break;case 10:k=1;b=53;break;case 11:l= -_compiler_new_block(c);n=_compiler_new_block(c);b=p==-1?12:14;break;case 12:o=_compiler_new_block(c);b=o==0?13:14;break;case 13:k=0;b=53;break;case 14:b=l==0?16:15;break;case 15:b=n==0?16:17;break;case 16:k=0;b=53;break;case 17:b=HEAP[d+4+8]!=0?18:20;break;case 18:m=_compiler_new_block(c);b=m==0?19:21;break;case 19:k=0;b=53;break;case 20:m=0;b=21;break;case 21:b=_compiler_addop_j(c,120,n,0)==0?22:23;break;case 22:k=0;b=53;break;case 23:_compiler_use_next_block(c,l);b=_compiler_push_fblock(c,0,l)== -0?24:25;break;case 24:k=0;b=53;break;case 25:b=p==-1?26:30;break;case 26:b=_compiler_visit_expr(c,HEAP[d+4])==0?27:28;break;case 27:k=0;b=53;break;case 28:b=_compiler_addop_j(c,114,o,1)==0?29:30;break;case 29:k=0;b=53;break;case 30:var y=HEAP[d+4+4];s=y;u=0;a=30;b=34;break;case 31:b=HEAP[s+4+u*4];b=_compiler_visit_stmt(c,b)==0?32:33;break;case 32:k=0;b=53;break;case 33:u+=1;var z=s,a=33;b=34;break;case 34:b=(a==33?z:y)!=0?35:36;break;case 35:h=HEAP[s];b=37;break;case 36:h=0;b=37;break;case 37:b=h> -u?31:38;break;case 38:b=_compiler_addop_j(c,113,l,1)==0?39:40;break;case 39:k=0;b=53;break;case 40:b=p==-1?41:43;break;case 41:_compiler_use_next_block(c,o);b=_compiler_addop(c,87)==0?42:43;break;case 42:k=0;b=53;break;case 43:_compiler_pop_fblock(c,0,l);b=m!=0?44:52;break;case 44:var C=HEAP[d+4+8];v=C;t=0;a=44;b=48;break;case 45:b=HEAP[v+4+t*4];b=_compiler_visit_stmt(c,b)==0?46:47;break;case 46:k=0;b=53;break;case 47:t+=1;var A=v,a=47;b=48;break;case 48:b=(a==47?A:C)!=0?49:50;break;case 49:f=HEAP[v]; -b=51;break;case 50:f=0;b=51;break;case 51:b=f>t?45:52;break;case 52:_compiler_use_next_block(c,n);k=1;b=53;break;case 53:return a=k;default:assert(0,"bad label: "+b)}} -function _compiler_continue(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f=a=g;e=HEAP[HEAP[a+24]+44]==0?1:2;break;case 1:c=_compiler_error(f,_LOOP_ERROR_MSG_11259);e=16;break;case 2:d=HEAP[HEAP[f+24]+44]-1;e=HEAP[HEAP[a+24]+48+d*8];e=e==0?3:e==1?7:e==2?7:e==3?14:15;break;case 3:e=_compiler_addop_j(a,113,HEAP[HEAP[a+24]+48+d*8+4],1)==0?4:15;break;case 4:c=0;e=16;break;case 5:e=HEAP[HEAP[a+24]+48+d*8]==3?6:7;break;case 6:c=_compiler_error(a,_IN_FINALLY_ERROR_MSG_11260);e=16;break;case 7:var h= -d-1;d=h;h<0?(b=7,e=10):(b=7,e=8);break;case 8:e=HEAP[HEAP[a+24]+48+d*8]!=0?5:9;break;case 9:var j=d,b=9;e=10;break;case 10:var k=a;e=(b==9?j:h)==-1?11:12;break;case 11:c=_compiler_error(k,_LOOP_ERROR_MSG_11259);e=16;break;case 12:e=_compiler_addop_j(a,119,HEAP[HEAP[k+24]+48+d*8+4],1)==0?13:15;break;case 13:c=0;e=16;break;case 14:c=_compiler_error(a,_IN_FINALLY_ERROR_MSG_11260);e=16;break;case 15:c=1;e=16;break;case 16:return g=c;default:assert(0,"bad label: "+e)}} -function _compiler_try_finally(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;k=_compiler_new_block(c);l=_compiler_new_block(c);b=k==0?2:1;break;case 1:b=l==0?2:3;break;case 2:j=0;b=32;break;case 3:b=_compiler_addop_j(c,122,l,0)==0?4:5;break;case 4:j=0;b=32;break;case 5:_compiler_use_next_block(c,k);b=_compiler_push_fblock(c,2,k)==0?6:7;break;case 6:j=0;b=32;break;case 7:var q=HEAP[d+4];n=q;m=0;a=7;b=11;break;case 8:b=HEAP[n+4+m*4];b=_compiler_visit_stmt(c,b)==0? -9:10;break;case 9:j=0;b=32;break;case 10:m+=1;var r=n,a=10;b=11;break;case 11:b=(a==10?r:q)!=0?12:13;break;case 12:h=HEAP[n];b=14;break;case 13:h=0;b=14;break;case 14:b=h>m?8:15;break;case 15:b=_compiler_addop(c,87)==0?16:17;break;case 16:j=0;b=32;break;case 17:_compiler_pop_fblock(c,2,k);b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_NoneStruct)==0?18:19;break;case 18:j=0;b=32;break;case 19:_compiler_use_next_block(c,l);b=_compiler_push_fblock(c,3,l)==0?20:21;break;case 20:j=0;b=32;break;case 21:var u= -HEAP[d+4+4];p=u;o=0;a=21;b=25;break;case 22:b=HEAP[p+4+o*4];b=_compiler_visit_stmt(c,b)==0?23:24;break;case 23:j=0;b=32;break;case 24:o+=1;var s=p,a=24;b=25;break;case 25:b=(a==24?s:u)!=0?26:27;break;case 26:f=HEAP[p];b=28;break;case 27:f=0;b=28;break;case 28:b=f>o?22:29;break;case 29:b=_compiler_addop(c,88)==0?30:31;break;case 30:j=0;b=32;break;case 31:_compiler_pop_fblock(c,3,l);j=1;b=32;break;case 32:return a=j;default:assert(0,"bad label: "+b)}} -function _compiler_try_except(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y;c=g;d=e;m=_compiler_new_block(c);o=_compiler_new_block(c);n=_compiler_new_block(c);p=_compiler_new_block(c);b=m==0?4:1;break;case 1:b=o==0?4:2;break;case 2:b=n==0?4:3;break;case 3:b=p==0?4:5;break;case 4:l=0;b=71;break;case 5:b=_compiler_addop_j(c,121,o,0)==0?6:7;break;case 6:l=0;b=71;break;case 7:_compiler_use_next_block(c,m);b=_compiler_push_fblock(c,1,m)==0?8:9;break;case 8:l= -0;b=71;break;case 9:var z=HEAP[d+4];s=z;u=0;a=9;b=13;break;case 10:b=HEAP[s+4+u*4];b=_compiler_visit_stmt(c,b)==0?11:12;break;case 11:l=0;b=71;break;case 12:u+=1;var C=s,a=12;b=13;break;case 13:b=(a==12?C:z)!=0?14:15;break;case 14:k=HEAP[s];b=16;break;case 15:k=0;b=16;break;case 16:b=k>u?10:17;break;case 17:b=_compiler_addop(c,87)==0?18:19;break;case 18:l=0;b=71;break;case 19:_compiler_pop_fblock(c,1,m);b=_compiler_addop_j(c,110,n,0)==0?20:21;break;case 20:l=0;b=71;break;case 21:b=HEAP[d+4+4]!=0? -22:23;break;case 22:j=HEAP[HEAP[d+4+4]];b=24;break;case 23:j=0;b=24;break;case 24:r=j;_compiler_use_next_block(c,o);q=0;b=59;break;case 25:t=HEAP[HEAP[d+4+4]+4+q*4];b=HEAP[t+4]==0?26:28;break;case 26:b=r-1>q?27:28;break;case 27:l=_compiler_error(c,__str16921);b=71;break;case 28:HEAP[HEAP[c+24]+216]=0;HEAP[HEAP[c+24]+212]=HEAP[t+16];o=b=_compiler_new_block(c);b=b==0?29:30;break;case 29:l=0;b=71;break;case 30:b=HEAP[t+4]!=0?31:39;break;case 31:b=_compiler_addop(c,4)==0?32:33;break;case 32:l=0;b=71; -break;case 33:b=_compiler_visit_expr(c,HEAP[t+4])==0?34:35;break;case 34:l=0;b=71;break;case 35:b=_compiler_addop_i(c,107,10)==0?36:37;break;case 36:l=0;b=71;break;case 37:b=_compiler_addop_j(c,114,o,1)==0?38:39;break;case 38:l=0;b=71;break;case 39:b=_compiler_addop(c,1)==0?40:41;break;case 40:l=0;b=71;break;case 41:b=HEAP[t+4+4]!=0?42:44;break;case 42:b=_compiler_visit_expr(c,HEAP[t+4+4])==0?43:46;break;case 43:l=0;b=71;break;case 44:b=_compiler_addop(c,1)==0?45:46;break;case 45:l=0;b=71;break;case 46:b= -_compiler_addop(c,1)==0?47:48;break;case 47:l=0;b=71;break;case 48:var A=HEAP[t+4+8];w=A;v=0;a=48;b=52;break;case 49:b=HEAP[w+4+v*4];b=_compiler_visit_stmt(c,b)==0?50:51;break;case 50:l=0;b=71;break;case 51:v+=1;var G=w,a=51;b=52;break;case 52:b=(a==51?G:A)!=0?53:54;break;case 53:h=HEAP[w];b=55;break;case 54:h=0;b=55;break;case 55:b=h>v?49:56;break;case 56:b=_compiler_addop_j(c,110,p,0)==0?57:58;break;case 57:l=0;b=71;break;case 58:_compiler_use_next_block(c,o);q+=1;b=59;break;case 59:b=qx?63:70;break;case 70:_compiler_use_next_block(c,p);l=1;b=71;break;case 71:return a=l;default:assert(0,"bad label: "+ -b)}} -function _compiler_import_as(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;f+=20;l=_strchr(f,46);a=l!=0?1:13;break;case 1:var n=l;f=n+1;c=1;a=12;break;case 2:l=_strchr(f,46);a=l!=0?3:4;break;case 3:k=l-f;a=5;break;case 4:k=_strlen(f);a=5;break;case 5:m=a=_PyString_FromStringAndSize(f,k);a=a==0?6:7;break;case 6:j=-1;a=14;break;case 7:a=_compiler_addop_o(d,106,HEAP[HEAP[d+24]+12],m)==0?8:9;break;case 8:j=0;a=14;break;case 9:HEAP[m]-=1;a=HEAP[m]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[m+4]+ -24]](m);a=11;break;case 11:var o=l;f=o+1;c=11;a=12;break;case 12:a=(c==11?o:n)!=0?2:13;break;case 13:j=_compiler_nameop(d,h,2);a=14;break;case 14:return g=j;default:assert(0,"bad label: "+a)}} -function _compiler_import(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q;c=g;d=e;b=HEAP[d+4]!=0?1:2;break;case 1:h=HEAP[HEAP[d+4]];b=3;break;case 2:h=0;b=3;break;case 3:k=h;j=0;b=30;break;case 4:l=HEAP[HEAP[d+4]+4+j*4];b=HEAP[c+12]==0?7:5;break;case 5:b=(HEAP[HEAP[c+12]]&16384)==0?7:6;break;case 6:var r=_PyInt_FromLong(0);n=r;a=6;b=8;break;case 7:var u=_PyInt_FromLong(-1);n=u;a=7;b=8;break;case 8:b=(a==7?u:r)==0?9:10;break;case 9:f=0;b=32;break;case 10:b=_compiler_addop_o(c, -100,HEAP[HEAP[c+24]+8],n)==0?11:12;break;case 11:f=0;b=32;break;case 12:HEAP[n]-=1;b=HEAP[n]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=14;break;case 14:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_NoneStruct)==0?15:16;break;case 15:f=0;b=32;break;case 16:b=_compiler_addop_name(c,108,HEAP[HEAP[c+24]+12],HEAP[l])==0?17:18;break;case 17:f=0;b=32;break;case 18:var s=l;b=HEAP[l+4]!=0?19:21;break;case 19:m=_compiler_import_as(c,HEAP[l],HEAP[s+4]);b=m==0?20:29;break;case 20:f=m; -b=32;break;case 21:o=HEAP[s];p=HEAP[l]+20;q=_strchr(p,46);b=q!=0?22:23;break;case 22:o=_PyString_FromStringAndSize(p,q-p);b=23;break;case 23:var t=_compiler_nameop(c,o,2);m=t;q!=0?(a=23,b=24):(a=23,b=27);break;case 24:HEAP[o]-=1;b=HEAP[o]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);b=26;break;case 26:var v=m,a=26;b=27;break;case 27:b=(a==26?v:t)==0?28:29;break;case 28:f=m;b=32;break;case 29:j+=1;b=30;break;case 30:b=jHEAP[HEAP[c+8]+4]?21:28;break;case 21:b=HEAP[d+4]!=0?22:28;break;case 22:b=_strcmp(HEAP[d+4]+20,__str18923)==0?23:28;break;case 23:HEAP[m]-=1;b=HEAP[m]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);b=25;break;case 25:HEAP[l]-=1;b=HEAP[l]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=27;break;case 27:f=_compiler_error(c,__str19924);b=60;break;case 28:b=_compiler_addop_o(c, -100,HEAP[HEAP[c+24]+8],m)==0?29:30;break;case 29:f=0;b=60;break;case 30:HEAP[m]-=1;b=HEAP[m]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);b=32;break;case 32:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],l)==0?33:34;break;case 33:f=0;b=60;break;case 34:HEAP[l]-=1;b=HEAP[l]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=36;break;case 36:b=HEAP[d+4]!=0?37:39;break;case 37:b=_compiler_addop_name(c,108,HEAP[HEAP[c+24]+12],HEAP[d+4])==0?38:41;break;case 38:f=0;b=60;break; -case 39:b=_compiler_addop_name(c,108,HEAP[HEAP[c+24]+12],HEAP[_empty_string_11652])==0?40:41;break;case 40:f=0;b=60;break;case 41:j=0;b=56;break;case 42:n=HEAP[HEAP[d+4+4]+4+j*4];b=j==0?43:47;break;case 43:b=HEAP[HEAP[n]+20]==42?44:47;break;case 44:b=_compiler_addop(c,84)==0?45:46;break;case 45:f=0;b=60;break;case 46:f=1;b=60;break;case 47:b=_compiler_addop_name(c,109,HEAP[HEAP[c+24]+12],HEAP[n])==0?48:49;break;case 48:f=0;b=60;break;case 49:o=HEAP[n];b=HEAP[n+4]!=0?50:51;break;case 50:o=HEAP[n+4]; -b=51;break;case 51:b=_compiler_nameop(c,o,2)==0?52:55;break;case 52:HEAP[l]-=1;b=HEAP[l]==0?53:54;break;case 53:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=54;break;case 54:f=0;b=60;break;case 55:j+=1;b=56;break;case 56:b=j0?8:10;break;case 8:b=__str21926;b=_PyErr_WarnExplicit(HEAP[_PyExc_SyntaxWarning], -b,HEAP[a],HEAP[HEAP[a+24]+212],0,0)==-1?9:10;break;case 9:d=0;b=26;break;case 10:b=_compiler_visit_expr(a,HEAP[c+4])==0?11:12;break;case 11:d=0;b=26;break;case 12:f=_compiler_new_block(a);b=f==0?13:14;break;case 13:d=0;b=26;break;case 14:b=_compiler_addop_j(a,115,f,1)==0?15:16;break;case 15:d=0;b=26;break;case 16:b=_compiler_addop_o(a,116,HEAP[HEAP[a+24]+12],HEAP[_assertion_error_11819])==0?17:18;break;case 17:d=0;b=26;break;case 18:b=HEAP[c+4+4]!=0?19:23;break;case 19:b=_compiler_visit_expr(a,HEAP[c+ -4+4])==0?20:21;break;case 20:d=0;b=26;break;case 21:b=_compiler_addop_i(a,130,2)==0?22:25;break;case 22:d=0;b=26;break;case 23:b=_compiler_addop_i(a,130,1)==0?24:25;break;case 24:d=0;b=26;break;case 25:_compiler_use_next_block(a,f);d=1;b=26;break;case 26:return a=d;default:assert(0,"bad label: "+b)}} -function _compiler_visit_stmt(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;HEAP[HEAP[c+24]+212]=HEAP[d+20];HEAP[HEAP[c+24]+216]=0;b=HEAP[d];b=b==1?1:b==2?2:b==3?3:b==4?12:b==5?20:b==6?33:b==7?34:b==8?35:b==9?36:b==10?37:b==11?88:b==12?38:b==13?50:b==14?51:b==15?52:b==16?53:b==17?54:b==18?55:b==23?87:b==20?71:b==22?83:89;break;case 1:j=_compiler_function(c,d);b=90;break;case 2:j=_compiler_class(c,d);b=90;break;case 3:b=HEAP[HEAP[HEAP[c+24]]+28]!=0?4:5;break;case 4:j= -_compiler_error(c,__str22927);b=90;break;case 5:b=HEAP[d+4]!=0?6:8;break;case 6:b=_compiler_visit_expr(c,HEAP[d+4])==0?7:10;break;case 7:j=0;b=90;break;case 8:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_NoneStruct)==0?9:10;break;case 9:j=0;b=90;break;case 10:b=_compiler_addop(c,83)==0?11:89;break;case 11:j=0;b=90;break;case 12:var o=HEAP[d+4];n=o;m=0;a=12;b=16;break;case 13:b=HEAP[n+4+m*4];b=_compiler_visit_expr(c,b)==0?14:15;break;case 14:j=0;b=90;break;case 15:m+=1;var p=n,a=15;b=16;break; -case 16:b=(a==15?p:o)!=0?17:18;break;case 17:h=HEAP[n];b=19;break;case 18:h=0;b=19;break;case 19:b=h>m?13:89;break;case 20:b=HEAP[d+4]!=0?21:22;break;case 21:f=HEAP[HEAP[d+4]];b=23;break;case 22:f=0;b=23;break;case 23:l=f;b=_compiler_visit_expr(c,HEAP[d+4+4])==0?24:25;break;case 24:j=0;b=90;break;case 25:k=0;b=32;break;case 26:b=l-1>k?27:29;break;case 27:b=_compiler_addop(c,4)==0?28:29;break;case 28:j=0;b=90;break;case 29:b=_compiler_visit_expr(c,HEAP[HEAP[d+4]+4+k*4])==0?30:31;break;case 30:j=0; -b=90;break;case 31:k+=1;b=32;break;case 32:b=k1?77:73;break;case 73:b=_compiler_visit_expr(c,HEAP[d+4])==0?74:75;break;case 74:j=0;b=90;break;case 75:b=_compiler_addop(c,70)==0?76:89;break;case 76:j=0;b=90;break;case 77:b=HEAP[HEAP[d+4]]!=17?78:89;break;case 78:b=HEAP[HEAP[d+4]]!=16?79:89;break;case 79:b=_compiler_visit_expr(c,HEAP[d+4])==0?80:81;break;case 80:j=0;b=90;break;case 81:b=_compiler_addop(c, -1)==0?82:89;break;case 82:j=0;b=90;break;case 83:b=_compiler_in_loop(c);var q=c;b=b==0?84:85;break;case 84:j=_compiler_error(q,__str23928);b=90;break;case 85:b=_compiler_addop(q,80)==0?86:89;break;case 86:j=0;b=90;break;case 87:j=_compiler_continue(c);b=90;break;case 88:j=_compiler_with(c,d);b=90;break;case 89:j=1;b=90;break;case 90:return a=j;default:assert(0,"bad label: "+b)}} -function _unaryop(g){var e;for(e=-1;;)switch(e){case -1:var b,a;e=b=g;e=e==1?1:e==2?2:e==3?3:e==4?4:5;break;case 1:a=15;e=6;break;case 2:a=12;e=6;break;case 3:a=10;e=6;break;case 4:a=11;e=6;break;case 5:_PyErr_Format(HEAP[_PyExc_SystemError],__str24929,allocate([b,0,0,0],["i32",0,0,0],ALLOC_STACK));a=0;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _binop(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;b=c=e;b=b==1?1:b==2?2:b==3?3:b==4?4:b==5?8:b==6?9:b==7?10:b==8?11:b==9?12:b==10?13:b==11?14:b==12?15:16;break;case 1:d=23;b=17;break;case 2:d=24;b=17;break;case 3:d=20;b=17;break;case 4:b=HEAP[a+12]==0?7:5;break;case 5:b=(HEAP[HEAP[a+12]]&8192)==0?7:6;break;case 6:d=27;b=17;break;case 7:d=21;b=17;break;case 8:d=22;b=17;break;case 9:d=19;b=17;break;case 10:d=62;b=17;break;case 11:d=63;b=17;break;case 12:d=66;b=17;break;case 13:d= -65;b=17;break;case 14:d=64;b=17;break;case 15:d=26;b=17;break;case 16:_PyErr_Format(HEAP[_PyExc_SystemError],__str25930,allocate([c,0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=17;break;case 17:return a=d;default:assert(0,"bad label: "+b)}} -function _cmpop(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=e==1?1:e==2?2:e==3?3:e==4?4:e==5?5:e==6?6:e==7?7:e==8?8:e==9?9:e==10?10:11;break;case 1:b=2;e=12;break;case 2:b=3;e=12;break;case 3:b=0;e=12;break;case 4:b=1;e=12;break;case 5:b=4;e=12;break;case 6:b=5;e=12;break;case 7:b=8;e=12;break;case 8:b=9;e=12;break;case 9:b=6;e=12;break;case 10:b=7;e=12;break;case 11:b=11;e=12;break;case 12:return g=b;default:assert(0,"bad label: "+e)}} -function _inplace_binop(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;b=c=e;b=b==1?1:b==2?2:b==3?3:b==4?4:b==5?8:b==6?9:b==7?10:b==8?11:b==9?12:b==10?13:b==11?14:b==12?15:16;break;case 1:d=55;b=17;break;case 2:d=56;b=17;break;case 3:d=57;b=17;break;case 4:b=HEAP[a+12]==0?7:5;break;case 5:b=(HEAP[HEAP[a+12]]&8192)==0?7:6;break;case 6:d=29;b=17;break;case 7:d=58;b=17;break;case 8:d=59;b=17;break;case 9:d=67;b=17;break;case 10:d=75;b=17;break;case 11:d=76;b=17;break;case 12:d=79;b=17;break;case 13:d= -78;b=17;break;case 14:d=77;b=17;break;case 15:d=28;b=17;break;case 16:_PyErr_Format(HEAP[_PyExc_SystemError],__str26931,allocate([c,0,0,0],["i32",0,0,0],ALLOC_STACK));d=0;b=17;break;case 17:return a=d;default:assert(0,"bad label: "+b)}} -function _compiler_nameop(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;m=HEAP[HEAP[c+24]+12];n=__Py_Mangle(HEAP[HEAP[c+24]+28],d);a=n==0?1:2;break;case 1:h=0;a=44;break;case 2:j=0;l=3;a=_PyST_GetScope(HEAP[HEAP[c+24]],n);a=a==1?5:a==2?10:a==3?7:a==4?3:a==5?4:11;break;case 3:m=HEAP[HEAP[c+24]+24];l=2;a=12;break;case 4:m=HEAP[HEAP[c+24]+20];l=2;a=12;break;case 5:a=HEAP[HEAP[HEAP[c+24]]+28]==0?6:11;break;case 6:l=0;a=19;break;case 7:a=HEAP[HEAP[HEAP[c+24]]+28]==0?8:11; -break;case 8:a=HEAP[HEAP[HEAP[c+24]]+32]==0?9:11;break;case 9:l=1;a=29;break;case 10:l=1;a=29;break;case 11:a=l;a=a==0?19:a==1?29:a==2?12:a==3?34:39;break;case 12:a=f;a=a==1?13:a==2?14:a==3?15:a==4?39:a==5?39:18;break;case 13:j=136;a=39;break;case 14:j=137;a=39;break;case 15:_PyErr_Format(HEAP[_PyExc_SyntaxError],__str27932,allocate([d+20,0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[n]-=1;a=HEAP[n]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=17;break;case 17:h=0;a=44;break;case 18:_PyErr_SetString(HEAP[_PyExc_SystemError], -__str28933);h=0;a=44;break;case 19:a=f;a=a==1?20:a==2?21:a==3?22:a==4?24:a==5?24:23;break;case 20:j=124;a=24;break;case 21:j=125;a=24;break;case 22:j=126;a=24;break;case 23:_PyErr_SetString(HEAP[_PyExc_SystemError],__str29934);h=0;a=44;break;case 24:a=_compiler_addop_o(c,j,HEAP[HEAP[c+24]+16],n)==0?25:26;break;case 25:h=0;a=44;break;case 26:HEAP[n]-=1;a=HEAP[n]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=28;break;case 28:h=1;a=44;break;case 29:a=f;a=a==1?30:a==2?31:a==3?32:a==4? -39:a==5?39:33;break;case 30:j=116;a=39;break;case 31:j=97;a=39;break;case 32:j=98;a=39;break;case 33:_PyErr_SetString(HEAP[_PyExc_SystemError],__str30935);h=0;a=44;break;case 34:a=f;a=a==1?35:a==2?36:a==3?37:a==4?39:a==5?39:38;break;case 35:j=101;a=39;break;case 36:j=90;a=39;break;case 37:j=91;a=39;break;case 38:_PyErr_SetString(HEAP[_PyExc_SystemError],__str31936);h=0;a=44;break;case 39:k=_compiler_add_o(c,m,n);HEAP[n]-=1;a=HEAP[n]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=41; -break;case 41:a=k<0?42:43;break;case 42:h=0;a=44;break;case 43:h=_compiler_addop_i(c,j,k);a=44;break;case 44:return g=h;default:assert(0,"bad label: "+a)}} -function _compiler_boolop(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;b=HEAP[c+4]==1?1:2;break;case 1:j=111;b=3;break;case 2:j=112;b=3;break;case 3:h=b=_compiler_new_block(a);b=b==0?4:5;break;case 4:f=0;b=18;break;case 5:m=HEAP[c+4+4];b=m!=0?6:7;break;case 6:d=HEAP[m]-1;b=8;break;case 7:d=-1;b=8;break;case 8:l=d;k=0;b=14;break;case 9:b=_compiler_visit_expr(a,HEAP[m+4+k*4])==0?10:11;break;case 10:f=0;b=18;break;case 11:b=_compiler_addop_j(a,j,h,1)==0?12:13;break;case 12:f= -0;b=18;break;case 13:k+=1;b=14;break;case 14:b=kl?7:14;break;case 14:b=HEAP[d+4+4]==1?15:17;break;case 15:b=_compiler_addop_i(c,103,k)==0?16:17;break;case 16:h=0;b=18;break;case 17:h=1;b=18;break;case 18:return a=h;default:assert(0,"bad label: "+b)}} -function _compiler_tuple(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;b=HEAP[d+4]!=0?1:2;break;case 1:j=HEAP[HEAP[d+4]];b=3;break;case 2:j=0;b=3;break;case 3:k=j;b=HEAP[d+4+4]==2?4:6;break;case 4:b=_compiler_addop_i(c,92,k)==0?5:6;break;case 5:h=0;b=18;break;case 6:var n=HEAP[d+4];m=n;l=0;a=6;b=10;break;case 7:b=HEAP[m+4+l*4];b=_compiler_visit_expr(c,b)==0?8:9;break;case 8:h=0;b=18;break;case 9:l+=1;var o=m,a=9;b=10;break;case 10:b=(a==9?o:n)!=0?11:12;break;case 11:f= -HEAP[m];b=13;break;case 12:f=0;b=13;break;case 13:b=f>l?7:14;break;case 14:b=HEAP[d+4+4]==1?15:17;break;case 15:b=_compiler_addop_i(c,102,k)==0?16:17;break;case 16:h=0;b=18;break;case 17:h=1;b=18;break;case 18:return a=h;default:assert(0,"bad label: "+b)}} -function _compiler_compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;j=0;b=_compiler_visit_expr(a,HEAP[c+4])==0?1:2;break;case 1:d=0;b=40;break;case 2:b=HEAP[c+4+4]!=0?4:3;break;case 3:h=0;b=9;break;case 4:h=HEAP[HEAP[c+4+4]];b=HEAP[HEAP[c+4+4]]>1?5:9;break;case 5:j=_compiler_new_block(a);b=j==0?6:7;break;case 6:d=0;b=40;break;case 7:b=_compiler_visit_expr(a,HEAP[HEAP[c+4+8]+4])==0?8:9;break;case 8:d=0;b=40;break;case 9:f=1;b=24;break;case 10:b=_compiler_addop(a,4)==0?11:12; -break;case 11:d=0;b=40;break;case 12:b=_compiler_addop(a,3)==0?13:14;break;case 13:d=0;b=40;break;case 14:b=_cmpop(HEAP[HEAP[c+4+4]+4+(f-1)*4]);b=_compiler_addop_i(a,107,b)==0?15:16;break;case 15:d=0;b=40;break;case 16:b=_compiler_addop_j(a,111,j,1)==0?17:18;break;case 17:d=0;b=40;break;case 18:b=_compiler_next_block(a)==0?19:20;break;case 19:d=0;b=40;break;case 20:b=h-1>f?21:23;break;case 21:b=_compiler_visit_expr(a,HEAP[HEAP[c+4+8]+4+f*4])==0?22:23;break;case 22:d=0;b=40;break;case 23:f+=1;b=24; -break;case 24:b=f1?30:39;break;case 30:k=_compiler_new_block(a);b=k==0?31:32;break;case 31:d=0;b=40;break;case 32:b=_compiler_addop_j(a,110,k,0)==0?33:34;break;case 33:d=0;b=40;break;case 34:_compiler_use_next_block(a,j);b=_compiler_addop(a,2)==0?35:36;break;case 35:d= -0;b=40;break;case 36:b=_compiler_addop(a,1)==0?37:38;break;case 37:d=0;b=40;break;case 38:_compiler_use_next_block(a,k);b=39;break;case 39:d=1;b=40;break;case 40:return a=d;default:assert(0,"bad label: "+b)}} -function _compiler_call(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r;c=g;d=e;n=0;b=_compiler_visit_expr(c,HEAP[d+4])==0?1:2;break;case 1:l=0;b=45;break;case 2:b=HEAP[d+4+4]!=0?3:4;break;case 3:k=HEAP[HEAP[d+4+4]];b=5;break;case 4:k=0;b=5;break;case 5:m=k;var u=HEAP[d+4+4];p=u;o=0;a=5;b=9;break;case 6:b=HEAP[p+4+o*4];b=_compiler_visit_expr(c,b)==0?7:8;break;case 7:l=0;b=45;break;case 8:o+=1;var s=p,a=8;b=9;break;case 9:b=(a==8?s:u)!=0?10:11;break;case 10:j=HEAP[p];b= -12;break;case 11:j=0;b=12;break;case 12:b=j>o?6:13;break;case 13:b=HEAP[d+4+8]!=0?14:26;break;case 14:var t=HEAP[d+4+8];r=t;q=0;a=14;b=18;break;case 15:b=HEAP[r+4+q*4];b=_compiler_visit_keyword(c,b)==0?16:17;break;case 16:l=0;b=45;break;case 17:q+=1;var v=r,a=17;b=18;break;case 18:b=(a==17?v:t)!=0?19:20;break;case 19:h=HEAP[r];b=21;break;case 20:h=0;b=21;break;case 21:b=h>q?15:22;break;case 22:b=HEAP[d+4+8]!=0?23:24;break;case 23:f=HEAP[HEAP[d+4+8]]<<8;b=25;break;case 24:f=0;b=25;break;case 25:m|= -f;b=26;break;case 26:b=HEAP[d+4+12]!=0?27:30;break;case 27:b=_compiler_visit_expr(c,HEAP[d+4+12])==0?28:29;break;case 28:l=0;b=45;break;case 29:n|=1;b=30;break;case 30:b=HEAP[d+4+16]!=0?31:34;break;case 31:b=_compiler_visit_expr(c,HEAP[d+4+16])==0?32:33;break;case 32:l=0;b=45;break;case 33:var w=n|2;n=w;a=33;b=35;break;case 34:var x=n,a=34;b=35;break;case 35:b=a==34?x:w;b=b==0?36:b==1?38:b==2?40:b==3?42:44;break;case 36:b=_compiler_addop_i(c,131,m)==0?37:44;break;case 37:l=0;b=45;break;case 38:b= -_compiler_addop_i(c,140,m)==0?39:44;break;case 39:l=0;b=45;break;case 40:b=_compiler_addop_i(c,141,m)==0?41:44;break;case 41:l=0;b=45;break;case 42:b=_compiler_addop_i(c,142,m)==0?43:44;break;case 43:l=0;b=45;break;case 44:l=1;b=45;break;case 45:return a=l;default:assert(0,"bad label: "+b)}} -function _compiler_listcomp_generator(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t;d=g;f=e;h=b;j=a;p=_compiler_new_block(d);r=_compiler_new_block(d);u=_compiler_new_block(d);q=_compiler_new_block(d);c=p==0?4:1;break;case 1:c=r==0?4:2;break;case 2:c=u==0?4:3;break;case 3:c=q==0?4:5;break;case 4:n=0;c=45;break;case 5:o=HEAP[f+4+h*4];c=_compiler_visit_expr(d,HEAP[o+4])==0?6:7;break;case 6:n=0;c=45;break;case 7:c=_compiler_addop(d,68)==0?8:9;break;case 8:n=0;c=45;break; -case 9:_compiler_use_next_block(d,p);c=_compiler_addop_j(d,93,q,0)==0?10:11;break;case 10:n=0;c=45;break;case 11:c=_compiler_next_block(d)==0?12:13;break;case 12:n=0;c=45;break;case 13:c=_compiler_visit_expr(d,HEAP[o])==0?14:15;break;case 14:n=0;c=45;break;case 15:c=HEAP[o+8]!=0?16:17;break;case 16:m=HEAP[HEAP[o+8]];c=18;break;case 17:m=0;c=18;break;case 18:t=m;s=0;c=26;break;case 19:c=HEAP[HEAP[o+8]+4+s*4];c=_compiler_visit_expr(d,c)==0?20:21;break;case 20:n=0;c=45;break;case 21:c=_compiler_addop_j(d, -114,u,1)==0?22:23;break;case 22:n=0;c=45;break;case 23:c=_compiler_next_block(d)==0?24:25;break;case 24:n=0;c=45;break;case 25:s+=1;c=26;break;case 26:c=sl?15:22;break;case 22:b=_compiler_addop(c,87)==0?23:24;break;case 23:h= -0;b=33;break;case 24:_compiler_pop_fblock(c,2,j);b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_NoneStruct)==0?25:26;break;case 25:h=0;b=33;break;case 26:_compiler_use_next_block(c,k);b=_compiler_push_fblock(c,3,k)==0?27:28;break;case 27:h=0;b=33;break;case 28:b=_compiler_addop(c,81)==0?29:30;break;case 29:h=0;b=33;break;case 30:b=_compiler_addop(c,88)==0?31:32;break;case 31:h=0;b=33;break;case 32:_compiler_pop_fblock(c,3,k);h=1;b=33;break;case 33:return a=h;default:assert(0,"bad label: "+b)}} -function _compiler_visit_expr(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;b=HEAP[d+24]>HEAP[HEAP[c+24]+212]?1:2;break;case 1:HEAP[HEAP[c+24]+212]=HEAP[d+24];HEAP[HEAP[c+24]+216]=0;b=2;break;case 2:b=HEAP[d];b=b==1?3:b==2?4:b==3?10:b==4?14:b==5?15:b==6?16:b==7?30:b==8?43:b==9?44:b==10?45:b==11?46:b==12?47:b==13?56:b==14?57:b==15?58:b==16?62:b==17?64:b==18?66:b==19?81:b==20?101:b==21?102:b==22?103:104;break;case 3:k=_compiler_boolop(c,d);b=105;break;case 4:b=_compiler_visit_expr(c, -HEAP[d+4])==0?5:6;break;case 5:k=0;b=105;break;case 6:b=_compiler_visit_expr(c,HEAP[d+4+8])==0?7:8;break;case 7:k=0;b=105;break;case 8:b=_binop(c,HEAP[d+4+4]);b=_compiler_addop(c,b)==0?9:104;break;case 9:k=0;b=105;break;case 10:b=_compiler_visit_expr(c,HEAP[d+4+4])==0?11:12;break;case 11:k=0;b=105;break;case 12:b=_unaryop(HEAP[d+4]);b=_compiler_addop(c,b)==0?13:104;break;case 13:k=0;b=105;break;case 14:k=_compiler_lambda(c,d);b=105;break;case 15:k=_compiler_ifexp(c,d);b=105;break;case 16:b=HEAP[d+ -4+4]!=0?17:18;break;case 17:j=HEAP[HEAP[d+4+4]];b=19;break;case 18:j=0;b=19;break;case 19:m=j;b=_compiler_addop_i(c,105,m<=65535?m:65535)==0?20:21;break;case 20:k=0;b=105;break;case 21:l=0;b=29;break;case 22:b=_compiler_visit_expr(c,HEAP[HEAP[d+4+4]+4+l*4])==0?23:24;break;case 23:k=0;b=105;break;case 24:b=_compiler_visit_expr(c,HEAP[HEAP[d+4]+4+l*4])==0?25:26;break;case 25:k=0;b=105;break;case 26:b=_compiler_addop(c,54)==0?27:28;break;case 27:k=0;b=105;break;case 28:l+=1;b=29;break;case 29:b=ln?34:41;break;case 41:b=_compiler_addop_i(c,104,m)==0?42:104;break;case 42:k=0;b=105;break;case 43:k=_compiler_listcomp(c, -d);b=105;break;case 44:k=_compiler_setcomp(c,d);b=105;break;case 45:k=_compiler_dictcomp(c,d);b=105;break;case 46:k=_compiler_genexp(c,d);b=105;break;case 47:b=HEAP[HEAP[HEAP[c+24]]+28]!=0?48:49;break;case 48:k=_compiler_error(c,__str37942);b=105;break;case 49:b=HEAP[d+4]!=0?50:52;break;case 50:b=_compiler_visit_expr(c,HEAP[d+4])==0?51:54;break;case 51:k=0;b=105;break;case 52:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_NoneStruct)==0?53:54;break;case 53:k=0;b=105;break;case 54:b=_compiler_addop(c, -86)==0?55:104;break;case 55:k=0;b=105;break;case 56:k=_compiler_compare(c,d);b=105;break;case 57:k=_compiler_call(c,d);b=105;break;case 58:b=_compiler_visit_expr(c,HEAP[d+4])==0?59:60;break;case 59:k=0;b=105;break;case 60:b=_compiler_addop(c,13)==0?61:104;break;case 61:k=0;b=105;break;case 62:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],HEAP[d+4])==0?63:104;break;case 63:k=0;b=105;break;case 64:b=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],HEAP[d+4])==0?65:104;break;case 65:k=0;b=105;break;case 66:b= -HEAP[d+4+8]!=5?67:69;break;case 67:b=_compiler_visit_expr(c,HEAP[d+4])==0?68:69;break;case 68:k=0;b=105;break;case 69:b=HEAP[d+4+8];b=b==1?72:b==2?76:b==3?78:b==4?70:b==5?74:80;break;case 70:b=_compiler_addop(c,4)==0?71:72;break;case 71:k=0;b=105;break;case 72:b=_compiler_addop_name(c,106,HEAP[HEAP[c+24]+12],HEAP[d+4+4])==0?73:104;break;case 73:k=0;b=105;break;case 74:b=_compiler_addop(c,2)==0?75:76;break;case 75:k=0;b=105;break;case 76:b=_compiler_addop_name(c,95,HEAP[HEAP[c+24]+12],HEAP[d+4+4])== -0?77:104;break;case 77:k=0;b=105;break;case 78:b=_compiler_addop_name(c,96,HEAP[HEAP[c+24]+12],HEAP[d+4+4])==0?79:104;break;case 79:k=0;b=105;break;case 80:_PyErr_SetString(HEAP[_PyExc_SystemError],__str38943);k=0;b=105;break;case 81:b=HEAP[d+4+8];b=b==1?86:b==2?92:b==3?96:b==4?82:b==5?90:100;break;case 82:b=_compiler_visit_expr(c,HEAP[d+4])==0?83:84;break;case 83:k=0;b=105;break;case 84:b=_compiler_visit_slice(c,HEAP[d+4+4],4)==0?85:104;break;case 85:k=0;b=105;break;case 86:b=_compiler_visit_expr(c, -HEAP[d+4])==0?87:88;break;case 87:k=0;b=105;break;case 88:b=_compiler_visit_slice(c,HEAP[d+4+4],1)==0?89:104;break;case 89:k=0;b=105;break;case 90:b=_compiler_visit_slice(c,HEAP[d+4+4],5)==0?91:104;break;case 91:k=0;b=105;break;case 92:b=_compiler_visit_expr(c,HEAP[d+4])==0?93:94;break;case 93:k=0;b=105;break;case 94:b=_compiler_visit_slice(c,HEAP[d+4+4],2)==0?95:104;break;case 95:k=0;b=105;break;case 96:b=_compiler_visit_expr(c,HEAP[d+4])==0?97:98;break;case 97:k=0;b=105;break;case 98:b=_compiler_visit_slice(c, -HEAP[d+4+4],3)==0?99:104;break;case 99:k=0;b=105;break;case 100:_PyErr_SetString(HEAP[_PyExc_SystemError],__str39944);k=0;b=105;break;case 101:k=_compiler_nameop(c,HEAP[d+4],HEAP[d+4+4]);b=105;break;case 102:k=_compiler_list(c,d);b=105;break;case 103:k=_compiler_tuple(c,d);b=105;break;case 104:k=1;b=105;break;case 105:return a=k;default:assert(0,"bad label: "+b)}} -function _compiler_augassign(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=HEAP[c+4];b=HEAP[f];b=b==18?1:b==19?11:b==20?21:28;break;case 1:h=__Py_Attribute(HEAP[f+4],HEAP[f+4+4],4,HEAP[f+24],HEAP[f+28],HEAP[a+32]);b=h==0?2:3;break;case 2:d=0;b=30;break;case 3:b=_compiler_visit_expr(a,h)==0?4:5;break;case 4:d=0;b=30;break;case 5:b=_compiler_visit_expr(a,HEAP[c+4+8])==0?6:7;break;case 6:d=0;b=30;break;case 7:b=_inplace_binop(a,HEAP[c+4+4]);b=_compiler_addop(a,b)==0?8:9;break;case 8:d= -0;b=30;break;case 9:HEAP[h+4+8]=5;b=_compiler_visit_expr(a,h)==0?10:29;break;case 10:d=0;b=30;break;case 11:h=__Py_Subscript(HEAP[f+4],HEAP[f+4+4],4,HEAP[f+24],HEAP[f+28],HEAP[a+32]);b=h==0?12:13;break;case 12:d=0;b=30;break;case 13:b=_compiler_visit_expr(a,h)==0?14:15;break;case 14:d=0;b=30;break;case 15:b=_compiler_visit_expr(a,HEAP[c+4+8])==0?16:17;break;case 16:d=0;b=30;break;case 17:b=_inplace_binop(a,HEAP[c+4+4]);b=_compiler_addop(a,b)==0?18:19;break;case 18:d=0;b=30;break;case 19:HEAP[h+4+ -8]=5;b=_compiler_visit_expr(a,h)==0?20:29;break;case 20:d=0;b=30;break;case 21:b=_compiler_nameop(a,HEAP[f+4],1)==0?22:23;break;case 22:d=0;b=30;break;case 23:b=_compiler_visit_expr(a,HEAP[c+4+8])==0?24:25;break;case 24:d=0;b=30;break;case 25:b=_inplace_binop(a,HEAP[c+4+4]);b=_compiler_addop(a,b)==0?26:27;break;case 26:d=0;b=30;break;case 27:d=_compiler_nameop(a,HEAP[f+4],2);b=30;break;case 28:_PyErr_Format(HEAP[_PyExc_SystemError],__str40945,allocate([HEAP[f],0,0,0],["i32",0,0,0],ALLOC_STACK));d= -0;b=30;break;case 29:d=1;b=30;break;case 30:return a=d;default:assert(0,"bad label: "+b)}}function _compiler_push_fblock(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=HEAP[HEAP[c+24]+44]>19?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str41946);h=0;a=3;break;case 2:h=HEAP[c+24];var j=HEAP[h+44];a=HEAP[c+24]+48+j*8;HEAP[h+44]=j+1;HEAP[a]=d;HEAP[a+4]=f;h=1;a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _compiler_pop_fblock(g){HEAP[HEAP[g+24]+44]-=1}function _compiler_in_loop(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;c=HEAP[g+24];a=0;e=4;break;case 1:e=HEAP[c+48+a*8]==0?2:3;break;case 2:b=1;e=6;break;case 3:a+=1;e=4;break;case 4:e=HEAP[c+44]>a?1:5;break;case 5:b=0;e=6;break;case 6:return g=b;default:assert(0,"bad label: "+e)}} -function _compiler_error(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=f=0;d=_PyErr_ProgramText(HEAP[a],HEAP[HEAP[a+24]+212]);b=d==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=2;break;case 2:f=b=_Py_BuildValue(__str42947,allocate([HEAP[a],0,0,0,HEAP[HEAP[a+24]+212],0,0,0,__Py_NoneStruct,0,0,0,d,0,0,0],["i8*",0,0,0,"i32",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b==0?5:3;break;case 3:h=_Py_BuildValue(__str43948,allocate([c, -0,0,0,f,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=h==0?5:4;break;case 4:_PyErr_SetObject(HEAP[_PyExc_SyntaxError],h);b=5;break;case 5:HEAP[d]-=1;b=HEAP[d]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=7;break;case 7:b=f!=0?8:10;break;case 8:HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=10;break;case 10:b=h!=0?11:13;break;case 11:HEAP[h]-=1;b=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=13;break;case 13:return 0; -default:assert(0,"bad label: "+b)}} -function _compiler_handle_subscr(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k;d=g;f=e;h=b;k=0;var l=h;l==1?(c=-1,a=1):l==2?(c=-1,a=2):l==3?(c=-1,a=3):l==4?(c=-1,a=1):l==5?(c=-1,a=2):l==6?(c=-1,a=4):(c=-1,a=6);break;case 1:k=25;a=5;break;case 2:k=60;a=5;break;case 3:k=61;a=5;break;case 4:_PyErr_Format(HEAP[_PyExc_SystemError],__str44949,allocate([f,0,0,0,h,0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));j=0;a=15;break;case 5:var m=h,c=5;a=6;break;case 6:a=(c==5?m:l)==4?7:9;break;case 7:a= -_compiler_addop_i(d,99,2)==0?8:12;break;case 8:j=0;a=15;break;case 9:a=h==5?10:12;break;case 10:a=_compiler_addop(d,3)==0?11:12;break;case 11:j=0;a=15;break;case 12:a=_compiler_addop(d,k)==0?13:14;break;case 13:j=0;a=15;break;case 14:j=1;a=15;break;case 15:return g=j;default:assert(0,"bad label: "+a)}} -function _compiler_slice(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=2;b=HEAP[c+4]!=0?1:3;break;case 1:b=_compiler_visit_expr(a,HEAP[c+4])==0?2:5;break;case 2:d=0;b=16;break;case 3:b=_compiler_addop_o(a,100,HEAP[HEAP[a+24]+8],__Py_NoneStruct)==0?4:5;break;case 4:d=0;b=16;break;case 5:b=HEAP[c+4+4]!=0?6:8;break;case 6:b=_compiler_visit_expr(a,HEAP[c+4+4])==0?7:10;break;case 7:d=0;b=16;break;case 8:b=_compiler_addop_o(a,100,HEAP[HEAP[a+24]+8],__Py_NoneStruct)==0?9:10;break;case 9:d= -0;b=16;break;case 10:b=HEAP[c+4+8]!=0?11:13;break;case 11:f+=1;b=_compiler_visit_expr(a,HEAP[c+4+8])==0?12:13;break;case 12:d=0;b=16;break;case 13:b=_compiler_addop_i(a,133,f)==0?14:15;break;case 14:d=0;b=16;break;case 15:d=1;b=16;break;case 16:return b=d;default:assert(0,"bad label: "+b)}} -function _compiler_simple_slice(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;m=l=k=0;a=HEAP[f+4]!=0?1:4;break;case 1:l+=1;m+=1;a=h!=5?2:4;break;case 2:a=_compiler_visit_expr(d,HEAP[f+4])==0?3:4;break;case 3:j=0;a=33;break;case 4:a=HEAP[f+4+4]!=0?5:9;break;case 5:l+=2;m+=1;a=h!=5?7:6;break;case 6:var n=h,c=6;a=17;break;case 7:a=_compiler_visit_expr(d,HEAP[f+4+4])==0?8:9;break;case 8:j=0;a=33;break;case 9:var o=h;o==4?(c=9,a=10):(c=9,a=17);break;case 10:a=m;a=a==0? -11:a==1?13:a==2?15:25;break;case 11:a=_compiler_addop(d,4)==0?12:25;break;case 12:j=0;a=33;break;case 13:a=_compiler_addop_i(d,99,2)==0?14:25;break;case 14:j=0;a=33;break;case 15:a=_compiler_addop_i(d,99,3)==0?16:25;break;case 16:j=0;a=33;break;case 17:a=(c==6?n:o)==5?18:25;break;case 18:a=m;a=a==0?19:a==1?21:a==2?23:25;break;case 19:a=_compiler_addop(d,2)==0?20:25;break;case 20:j=0;a=33;break;case 21:a=_compiler_addop(d,3)==0?22:25;break;case 22:j=0;a=33;break;case 23:a=_compiler_addop(d,5)==0?24: -25;break;case 24:j=0;a=33;break;case 25:a=h;a=a==1?26:a==2?27:a==3?28:a==4?26:a==5?27:29;break;case 26:a=k=30;break;case 27:k=40;a=30;break;case 28:k=50;a=30;break;case 29:_PyErr_SetString(HEAP[_PyExc_SystemError],__str45950);j=0;a=33;break;case 30:a=_compiler_addop(d,l+k)==0?31:32;break;case 31:j=0;a=33;break;case 32:j=1;a=33;break;case 33:return g=j;default:assert(0,"bad label: "+a)}} -function _compiler_visit_nested_slice(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=HEAP[d];a=a==1?1:a==2?3:a==4?4:6;break;case 1:a=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_EllipsisObject)==0?2:7;break;case 2:h=0;a=8;break;case 3:h=_compiler_slice(c,d,f);a=8;break;case 4:a=_compiler_visit_expr(c,HEAP[d+4])==0?5:7;break;case 5:h=0;a=8;break;case 6:_PyErr_SetString(HEAP[_PyExc_SystemError],__str46951);h=0;a=8;break;case 7:h=1;a=8;break;case 8:return g=h;default:assert(0, -"bad label: "+a)}} -function _compiler_visit_slice(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;k=0;a=HEAP[d];a=a==1?4:a==2?7:a==3?12:a==4?1:23;break;case 1:k=__str47952;a=f!=5?2:24;break;case 2:a=_compiler_visit_expr(c,HEAP[d+4])==0?3:24;break;case 3:j=0;a=25;break;case 4:k=__str48953;a=f!=5?5:24;break;case 5:a=_compiler_addop_o(c,100,HEAP[HEAP[c+24]+8],__Py_EllipsisObject)==0?6:24;break;case 6:j=0;a=25;break;case 7:k=__str49954;a=HEAP[d+4+8]==0?8:9;break;case 8:j=_compiler_simple_slice(c,d, -f);a=25;break;case 9:a=f!=5?10:24;break;case 10:a=_compiler_slice(c,d,f)==0?11:24;break;case 11:j=0;a=25;break;case 12:k=__str50955;a=f!=5?13:24;break;case 13:a=HEAP[d+4]!=0?14:15;break;case 14:h=HEAP[HEAP[d+4]];a=16;break;case 15:h=0;a=16;break;case 16:m=h;l=0;a=20;break;case 17:a=HEAP[HEAP[d+4]+4+l*4];a=_compiler_visit_nested_slice(c,a,f)==0?18:19;break;case 18:j=0;a=25;break;case 19:l+=1;a=20;break;case 20:a=l>>0>>>31&1,1,1)!=0?9:1;break;case 1:HEAP[d+20]=HEAP[d+20]&-2|1;a=HEAP[d+16]!=0?2:3;break;case 2:_dfs(c,HEAP[d+16],f);a=3;break;case 3:h=0;a=HEAP[d+4]>h?4:8;break;case 4:j=HEAP[d+12]+16*h;a=unSign(HEAP[j]<<6,8,1)>>>7&1;a=reSign(a,1,1)!=0?6:5;break;case 5:a=unSign(HEAP[j]<<7,8,1)>>>7&1;a=reSign(a,1,1)!=0?6:7;break;case 6:_dfs(c,HEAP[j+8],f);a=7;break;case 7:h+=1;a=HEAP[d+4]>h?4:8;break;case 8:a= -HEAP[f+8];HEAP[HEAP[f+12]+4*a]=d;HEAP[f+8]=a+1;a=9;break;case 9:return;default:assert(0,"bad label: "+a)}} -function _stackdepth_walk(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;c=reSign(HEAP[f+20]<<31>>>0>>>31&1,1,1)!=0?2:1;break;case 1:c=(HEAP[f+24]|0)>=(h|0)?2:3;break;case 2:k=j;c=21;break;case 3:HEAP[f+20]=HEAP[f+20]&-2|1;HEAP[f+24]=h;l=0;c=17;break;case 4:n=HEAP[o+12]+16*l;c=_opcode_stack_effect(HEAP[n+1],HEAP[n+4]);h+=c;c=h>j?5:6;break;case 5:j=h;c=6;break;case 6:c=unSign(HEAP[n]<<6,8,1)>>>7&1;c=reSign(c,1,1)!=0?8:7;break;case 7:c=unSign(HEAP[n]<<7,8,1)>>>7&1;c= -reSign(c,1,1)!=0?8:16;break;case 8:m=h;c=HEAP[n+1]==93?9:10;break;case 9:m=h-2;c=14;break;case 10:c=HEAP[n+1]==122?12:11;break;case 11:c=HEAP[n+1]==121?12:14;break;case 12:m=h+3;c=m>j?13:14;break;case 13:j=m;c=14;break;case 14:j=_stackdepth_walk(d,HEAP[n+8],m,j);c=HEAP[n+1]==113?20:15;break;case 15:c=HEAP[n+1]==110?20:16;break;case 16:l+=1;c=17;break;case 17:var o=f;c=HEAP[f+4]>l?4:18;break;case 18:c=HEAP[o+16]!=0?19:20;break;case 19:j=_stackdepth_walk(d,HEAP[f+16],h,j);c=20;break;case 20:HEAP[f+ -20]&=-2;k=j;c=21;break;case 21:return g=k;default:assert(0,"bad label: "+c)}}function _stackdepth(g){var f;var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;d=0;c=HEAP[HEAP[b+24]+36];e=HEAP[HEAP[b+24]+36]!=0?1:2;break;case 1:HEAP[c+20]&=-2;HEAP[c+24]=-2147483648;d=c;f=e=HEAP[c],c=f;e=e!=0?1:2;break;case 2:e=d==0?3:4;break;case 3:a=0;e=5;break;case 4:a=_stackdepth_walk(b,d,0,0);e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _assemble_init(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;d=e;a=b;_llvm_memset_p0i8_i32(c,0,32,1,0);HEAP[c+24]=a;a=_PyString_FromStringAndSize(0,128);HEAP[c]=a;a=HEAP[c]==0?1:2;break;case 1:f=0;a=9;break;case 2:a=_PyString_FromStringAndSize(0,16);HEAP[c+16]=a;a=HEAP[c+16]==0?3:4;break;case 3:f=0;a=9;break;case 4:a=d>1073741823?5:6;break;case 5:_PyErr_NoMemory();f=0;a=9;break;case 6:a=_PyObject_Malloc(d*4);HEAP[c+12]=a;a=HEAP[c+12]==0?7:8;break;case 7:_PyErr_NoMemory();f=0;a= -9;break;case 8:f=1;a=9;break;case 9:return g=f;default:assert(0,"bad label: "+a)}} -function _assemble_free(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b]!=0?1:3;break;case 1:e=HEAP[b];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b]+4]+24]](HEAP[b]);e=3;break;case 3:e=HEAP[b+16]!=0?4:6;break;case 4:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=6;break;case 6:e=HEAP[b+12]!=0?7:8;break;case 7:_PyObject_Free(HEAP[b+12]);e=8;break;case 8:return;default:assert(0,"bad label: "+e)}} -function _instrsize(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=unSign(HEAP[b]<<5,8,1)>>>7&1;e=reSign(e,1,1)==0?1:2;break;case 1:a=1;e=5;break;case 2:e=HEAP[b+4]>65535?3:4;break;case 3:a=6;e=5;break;case 4:a=3;e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _blocksize(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=c=0;e=HEAP[b+4]>a?1:2;break;case 1:e=_instrsize(HEAP[b+12]+16*a);c+=e;a+=1;e=HEAP[b+4]>a?1:2;break;case 2:return g=c;default:assert(0,"bad label: "+e)}} -function _assemble_lnotab(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r;c=g;d=e;h=HEAP[c+4]-HEAP[c+28];j=HEAP[d+12]-HEAP[c+24];var u=h;u==0?(a=-1,b=1):(a=-1,b=4);break;case 1:b=j==0?2:3;break;case 2:f=1;b=37;break;case 3:var s=h,a=3;b=4;break;case 4:b=(a==3?s:u)>255?5:17;break;case 5:o=h/255|0;n=o*2+HEAP[c+20];k=HEAP[HEAP[c+16]+8];b=n>=k?6:14;break;case 6:b=k>1073741823?11:7;break;case 7:var t=k;b=t*2>=n?9:8;break;case 8:k=n;b=12;break;case 9:b=t<=1073741823?10:11;break; -case 10:k*=2;b=12;break;case 11:_PyErr_NoMemory();f=0;b=37;break;case 12:b=__PyString_Resize(c+16,k)<0?13:14;break;case 13:f=0;b=37;break;case 14:l=HEAP[c+16]+20+HEAP[c+20];m=0;b=m255?18:30;break;case 18:r=j/255|0;q=r*2+HEAP[c+20];k=HEAP[HEAP[c+16]+8];b=q>=k?19:27;break;case 19:b=k>1073741823?24:20;break;case 20:var v=k;b=v*2>=q?22:21;break;case 21:k=q;b=25; -break;case 22:b=v<=1073741823?23:24;break;case 23:k*=2;b=25;break;case 24:_PyErr_NoMemory();f=0;b=37;break;case 25:b=__PyString_Resize(c+16,k)<0?26:27;break;case 26:f=0;b=37;break;case 27:l=HEAP[c+16]+20+HEAP[c+20];HEAP[l]=h&255;l+=1;HEAP[l]=-1;l+=1;h=0;p=1;b=p=k?31:33;break;case 31:b=__PyString_Resize(c+16,k*2)<0?32:33;break; -case 32:f=0;b=37;break;case 33:l=HEAP[c+16]+20+HEAP[c+20];HEAP[c+20]+=2;b=h!=0?34:35;break;case 34:HEAP[l]=h&255;l+=1;HEAP[l]=j&255;l+=1;b=36;break;case 35:HEAP[l]=0;l+=1;HEAP[l]=j&255;l+=1;b=36;break;case 36:HEAP[c+24]=HEAP[d+12];HEAP[c+28]=HEAP[c+4];f=1;b=37;break;case 37:return b=f;default:assert(0,"bad label: "+b)}} -function _assemble_emit(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;j=h=0;k=HEAP[HEAP[a]+8];f=_instrsize(c);b=unSign(HEAP[c]<<5,8,1)>>>7&1;b=reSign(b,1,1)!=0?1:2;break;case 1:h=HEAP[c+4];j=h>>16;b=2;break;case 2:b=HEAP[c+12]!=0?3:5;break;case 3:b=_assemble_lnotab(a,c)==0?4:5;break;case 4:d=0;b=15;break;case 5:b=f+HEAP[a+4]>=k?6:10;break;case 6:b=k>1073741823?7:8;break;case 7:d=0;b=15;break;case 8:b=__PyString_Resize(a,k*2)<0?9:10;break;case 9:d=0;b=15;break;case 10:l=HEAP[a]+ -20+HEAP[a+4];HEAP[a+4]=f+HEAP[a+4];b=f==6?11:12;break;case 11:HEAP[l]=-111;l+=1;HEAP[l]=j&255;l+=1;HEAP[l]=j>>8&255;l+=1;h&=65535;b=12;break;case 12:HEAP[l]=HEAP[c+1];l+=1;b=unSign(HEAP[c]<<5,8,1)>>>7&1;b=reSign(b,1,1)!=0?13:14;break;case 13:HEAP[l]=h&255;l+=1;HEAP[l]=h>>8&255;l+=1;b=14;break;case 14:d=1;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}} -function _assemble_jump_offsets(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;k=0;b=1;break;case 1:j=0;m=HEAP[c+8]-1;b=HEAP[c+8]-1>=0?2:3;break;case 2:f=HEAP[HEAP[c+12]+4*m];h=_blocksize(f);HEAP[f+28]=j;j=h+j;m=b=m-1;b=b>=0?2:3;break;case 3:l=k;k=0;f=HEAP[HEAP[d+24]+36];b=HEAP[HEAP[d+24]+36]!=0?4:13;break;case 4:h=HEAP[f+28];m=0;var o=f;HEAP[f+4]>m?(a=4,b=5):(a=4,b=12);break;case 5:n=HEAP[(a==11?q:o)+12]+16*m;var p=_instrsize(n);h+=p;p=unSign(HEAP[n]<<7,8,1)>>>7&1;b= -reSign(p,1,1)!=0;p=n;b=b?6:7;break;case 6:HEAP[n+4]=HEAP[HEAP[p+8]+28];b=9;break;case 7:b=unSign(HEAP[p]<<6,8,1)>>>7&1;b=reSign(b,1,1)!=0?8:11;break;case 8:b=HEAP[HEAP[n+8]+28]-h;HEAP[n+4]=b;b=9;break;case 9:b=HEAP[n+4]>65535?10:11;break;case 10:k+=1;b=11;break;case 11:m+=1;var q=f;HEAP[f+4]>m?(a=11,b=5):(a=11,b=12);break;case 12:f=b=HEAP[a==4?o:q];b=b!=0?4:13;break;case 13:b=l!=k?1:14;break;case 14:return;default:assert(0,"bad label: "+b)}} -function _dict_keys_inorder(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l=b+8;c=g;d=e;HEAP[l]=0;h=_PyDict_Size(c);h=_PyTuple_New(h);a=h==0?2:1;break;case 1:a=_PyDict_Next(c,l,j,k)!=0?3:4;break;case 2:f=0;a=5;break;case 3:a=HEAP[HEAP[k]+8];HEAP[j]=HEAP[HEAP[j]+12];HEAP[HEAP[j]]+=1;HEAP[h+12+(a-d)*4]=HEAP[j];a=_PyDict_Next(c,l,j,k)!=0?3:4;break;case 4:f=h;a=5;break;case 5:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _compute_code_flags(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=HEAP[HEAP[b+24]];d=0;e=HEAP[c+28]!=2?1:2;break;case 1:d|=2;e=2;break;case 2:e=HEAP[c+28]==0?3:13;break;case 3:e=HEAP[c+32]==0?4:5;break;case 4:d|=1;e=5;break;case 5:e=HEAP[c+36]!=0?6:7;break;case 6:d|=16;e=7;break;case 7:e=reSign(HEAP[c+40]<<29>>>0>>>31&1,1,1)!=0?8:9;break;case 8:d|=32;e=9;break;case 9:e=reSign(HEAP[c+40]<<28>>>0>>>31&1,1,1)!=0?10:11;break;case 10:d|=4;e=11;break;case 11:e=reSign(HEAP[c+40]<<27>>> -0>>>31&1,1,1)!=0?12:13;break;case 12:d|=8;e=13;break;case 13:d|=HEAP[HEAP[b+12]]&253952;f=e=_PyDict_Size(HEAP[HEAP[b+24]+24]);e=e<0?14:15;break;case 14:a=-1;e=21;break;case 15:e=f==0?16:20;break;case 16:f=_PyDict_Size(HEAP[HEAP[b+24]+20]);e=f<0?17:18;break;case 17:a=-1;e=21;break;case 18:e=f==0?19:20;break;case 19:d|=64;e=20;break;case 20:a=d;e=21;break;case 21:return g=a;default:assert(0,"bad label: "+e)}} -function _makecode(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r;a=g;c=e;p=o=n=m=l=k=j=h=f=0;d=_dict_keys_inorder(HEAP[HEAP[a+24]+8],0);b=d==0?15:1;break;case 1:h=_PySequence_List(d);HEAP[d]-=1;b=HEAP[d]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=3;break;case 3:j=_dict_keys_inorder(HEAP[HEAP[a+24]+12],0);k=_dict_keys_inorder(HEAP[HEAP[a+24]+16],0);b=h==0?18:4;break;case 4:b=j==0?15:5;break;case 5:b=k==0?15:6;break;case 6:o=_dict_keys_inorder(HEAP[HEAP[a+ -24]+20],0);b=o==0?15:7;break;case 7:n=_PyTuple_Size(o);n=_dict_keys_inorder(HEAP[HEAP[a+24]+24],n);b=n==0?15:8;break;case 8:l=_PyString_FromString(HEAP[a]);b=l==0?15:9;break;case 9:q=_PyDict_Size(HEAP[HEAP[a+24]+16]);r=_compute_code_flags(a);b=r<0?15:10;break;case 10:p=_PyCode_Optimize(HEAP[c],h,j,HEAP[c+16]);b=p==0?15:11;break;case 11:d=_PyList_AsTuple(h);b=d==0?15:12;break;case 12:HEAP[h]-=1;b=HEAP[h]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=14;break;case 14:h=d;f=HEAP[c+16]; -b=HEAP[HEAP[a+24]+208];var u=HEAP[HEAP[a+24]+4],s=_stackdepth(a);f=_PyCode_New(HEAP[HEAP[a+24]+32],q,s,r,p,h,j,k,n,o,l,u,b,f);b=15;break;case 15:b=h!=0?16:18;break;case 16:HEAP[h]-=1;b=HEAP[h]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=18;break;case 18:b=j!=0?19:21;break;case 19:HEAP[j]-=1;b=HEAP[j]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=21;break;case 21:b=k!=0?22:24;break;case 22:HEAP[k]-=1;b=HEAP[k]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[k+4]+ -24]](k);b=24;break;case 24:b=l!=0?25:27;break;case 25:HEAP[l]-=1;b=HEAP[l]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=27;break;case 27:b=m!=0?28:30;break;case 28:HEAP[m]-=1;b=HEAP[m]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);b=30;break;case 30:b=n!=0?31:33;break;case 31:HEAP[n]-=1;b=HEAP[n]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=33;break;case 33:b=o!=0?34:36;break;case 34:HEAP[o]-=1;b=HEAP[o]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[o+ -4]+24]](o);b=36;break;case 36:b=p!=0?37:39;break;case 37:HEAP[p]-=1;b=HEAP[p]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);b=39;break;case 39:return a=f;default:assert(0,"bad label: "+b)}} -function _assemble(g,e){var s;var b=STACKTOP;STACKTOP+=32;_memset(b,0,32);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l=b,m,n,o,p;d=g;f=e;p=0;a=reSign(HEAP[HEAP[HEAP[d+24]+40]+20]<<30>>>0>>>31&1,1,1)==0?1:8;break;case 1:a=_compiler_next_block(d)==0?2:3;break;case 2:h=0;a=27;break;case 3:a=f!=0?4:6;break;case 4:a=_compiler_addop_o(d,100,HEAP[HEAP[d+24]+8],__Py_NoneStruct)==0?5:6;break;case 5:h=0;a=27;break;case 6:a=_compiler_addop(d,83)==0?7:8;break;case 7:h=0;a=27;break;case 8:k=o=0;j= -HEAP[HEAP[d+24]+36];a=HEAP[HEAP[d+24]+36]!=0?9:10;break;case 9:o+=1;k=j;s=a=HEAP[j],j=s;a=a!=0?9:10;break;case 10:a=HEAP[HEAP[d+24]+208]==0?11:15;break;case 11:a=k==0?14:12;break;case 12:a=HEAP[k+12]==0?14:13;break;case 13:HEAP[HEAP[d+24]+208]=HEAP[HEAP[k+12]+12];a=15;break;case 14:HEAP[HEAP[d+24]+208]=1;a=15;break;case 15:a=_assemble_init(l,o,HEAP[HEAP[d+24]+208])==0?26:16;break;case 16:_dfs(d,k,l);_assemble_jump_offsets(l,d);var q=HEAP[l+8]-1;m=q;var r=l+12,c=16;a=22;break;case 17:j=HEAP[HEAP[r]+ -4*m];n=0;a=20;break;case 18:a=_assemble_emit(l,HEAP[j+12]+16*n)==0?26:19;break;case 19:n+=1;a=20;break;case 20:a=HEAP[j+4]>n?18:21;break;case 21:var u=m-1;m=u;c=21;a=22;break;case 22:a=(c==21?u:q)>=0?17:23;break;case 23:a=__PyString_Resize(l+16,HEAP[l+20])<0?26:24;break;case 24:a=__PyString_Resize(l,HEAP[l+4])<0?26:25;break;case 25:p=_makecode(d,l);a=26;break;case 26:_assemble_free(l);h=p;a=27;break;case 27:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __Py_c_sum(g,e,b,a,c){var d=STACKTOP;STACKTOP+=48;_memset(d,0,48);var f=d+16,h=d+32;HEAP[d]=e;HEAP[d+8]=b;HEAP[f]=a;HEAP[f+8]=c;HEAP[h]=HEAP[d]+HEAP[f];HEAP[h+8]=HEAP[d+8]+HEAP[f+8];HEAP[g]=HEAP[h];HEAP[g+8]=HEAP[h+8];STACKTOP=d}function __Py_c_diff(g,e,b,a,c){var d=STACKTOP;STACKTOP+=48;_memset(d,0,48);var f=d+16,h=d+32;HEAP[d]=e;HEAP[d+8]=b;HEAP[f]=a;HEAP[f+8]=c;HEAP[h]=HEAP[d]-HEAP[f];HEAP[h+8]=HEAP[d+8]-HEAP[f+8];HEAP[g]=HEAP[h];HEAP[g+8]=HEAP[h+8];STACKTOP=d} -function __Py_c_neg(g,e,b){var a=STACKTOP;STACKTOP+=32;_memset(a,0,32);var c=a+16;HEAP[a]=e;HEAP[a+8]=b;HEAP[c]=0-HEAP[a];HEAP[c+8]=0-HEAP[a+8];HEAP[g]=HEAP[c];HEAP[g+8]=HEAP[c+8];STACKTOP=a}function __Py_c_prod(g,e,b,a,c){var d=STACKTOP;STACKTOP+=48;_memset(d,0,48);var f=d+16,h=d+32;HEAP[d]=e;HEAP[d+8]=b;HEAP[f]=a;HEAP[f+8]=c;HEAP[h]=HEAP[d]*HEAP[f]-HEAP[d+8]*HEAP[f+8];HEAP[h+8]=HEAP[d]*HEAP[f+8]+HEAP[d+8]*HEAP[f];HEAP[g]=HEAP[h];HEAP[g+8]=HEAP[h+8];STACKTOP=d} -function __Py_c_quot(g,e,b,a,c){var d=STACKTOP;STACKTOP+=48;_memset(d,0,48);var f;for(f=-1;;)switch(f){case -1:var h=d,j=d+16,k,l,m=d+32,n,o;HEAP[h]=e;HEAP[h+8]=b;HEAP[j]=a;HEAP[j+8]=c;var p=HEAP[j];f=HEAP[j]<0?1:2;break;case 1:l=0-p;f=3;break;case 2:l=p;f=3;break;case 3:n=l;var q=HEAP[j+8];f=HEAP[j+8]<0?4:5;break;case 4:k=0-q;f=6;break;case 5:k=q;f=6;break;case 6:f=k;f=n>=f?7:10;break;case 7:f=n==0?8:9;break;case 8:f=___errno_location();HEAP[f]=33;HEAP[m+8]=0;HEAP[m]=HEAP[m+8];f=11;break;case 9:f= -HEAP[j+8]/HEAP[j];o=HEAP[j]+HEAP[j+8]*f;HEAP[m]=(HEAP[h]+HEAP[h+8]*f)/o;HEAP[m+8]=(HEAP[h+8]-HEAP[h]*f)/o;f=11;break;case 10:f=HEAP[j]/HEAP[j+8];o=HEAP[j]*f+HEAP[j+8];HEAP[m]=(HEAP[h]*f+HEAP[h+8])/o;HEAP[m+8]=(HEAP[h+8]*f-HEAP[h])/o;f=11;break;case 11:HEAP[g]=HEAP[m];HEAP[g+8]=HEAP[m+8];STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function __Py_c_pow(g,e,b,a,c){var d=STACKTOP;STACKTOP+=48;_memset(d,0,48);var f;for(f=-1;;)switch(f){case -1:var h=d,j=d+16,k=d+32,l,m,n,o;HEAP[h]=e;HEAP[h+8]=b;HEAP[j]=a;HEAP[j+8]=c;f=HEAP[j]!=0?3:1;break;case 1:f=HEAP[j+8]!=0?3:2;break;case 2:HEAP[k]=1;HEAP[k+8]=0;f=12;break;case 3:f=HEAP[h]!=0?9:4;break;case 4:f=HEAP[h+8]!=0?9:5;break;case 5:f=HEAP[j+8]!=0?7:6;break;case 6:f=HEAP[j]<0?7:8;break;case 7:f=___errno_location();HEAP[f]=33;f=8;break;case 8:HEAP[k]=0;HEAP[k+8]=0;f=12;break;case 9:l= -_hypot(HEAP[h],HEAP[h+8]);m=_llvm_pow_f64(l,HEAP[j]);n=_atan2(HEAP[h+8],HEAP[h]);o=HEAP[j]*n;f=HEAP[j+8]!=0?10:11;break;case 10:f=_llvm_exp_f64(HEAP[j+8]*n);m/=f;f=HEAP[j+8];var p=_llvm_log_f64(l);o=f*p+o;f=11;break;case 11:f=_cos(o);HEAP[k]=f*m;f=_sin(o);HEAP[k+8]=f*m;f=12;break;case 12:HEAP[g]=HEAP[k];HEAP[g+8]=HEAP[k+8];STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function _c_powu(g,e,b,a){var c=STACKTOP;STACKTOP+=48;_memset(c,0,48);var d;for(d=-1;;)switch(d){case -1:d=c;var f,h=c+16,j=c+32,k;HEAP[d]=e;HEAP[d+8]=b;f=a;k=1;HEAP[h]=1;HEAP[h+8]=0;HEAP[j]=HEAP[d];HEAP[j+8]=HEAP[d+8];var l=h,m=h+8,n=j,o=j+8,p=j,q=j+8,r=j,u=j+8;d=4;break;case 1:d=(k&f)!=0?2:3;break;case 2:__Py_c_prod(h,HEAP[l],HEAP[m],HEAP[n],HEAP[o]);d=3;break;case 3:k<<=1;__Py_c_prod(j,HEAP[p],HEAP[q],HEAP[r],HEAP[u]);d=4;break;case 4:d=k<=0?6:5;break;case 5:d=f>=k?1:6;break;case 6:HEAP[g]=HEAP[h]; -HEAP[g+8]=HEAP[h+8];STACKTOP=c;return;default:assert(0,"bad label: "+d)}} -function _c_powi(g,e,b,a){var c=STACKTOP;STACKTOP+=48;_memset(c,0,48);var d;for(d=-1;;)switch(d){case -1:var f=c,h,j=c+16,k=c+32;HEAP[f]=e;HEAP[f+8]=b;var l=h=a;d=h>100|h<-100?1:2;break;case 1:HEAP[k]=l;HEAP[k+8]=0;__Py_c_pow(g,HEAP[f],HEAP[f+8],HEAP[k],HEAP[k+8]);d=5;break;case 2:d=l>0?3:4;break;case 3:_c_powu(g,HEAP[f],HEAP[f+8],h);d=5;break;case 4:_c_powu(j,HEAP[f],HEAP[f+8],0-h);__Py_c_quot(g,1,0,HEAP[j],HEAP[j+8]);d=5;break;case 5:STACKTOP=c;return;default:assert(0,"bad label: "+d)}} -function __Py_c_abs(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c=b,d,f;HEAP[c]=g;HEAP[c+8]=e;a=___finite(HEAP[c])==0?2:1;break;case 1:a=___finite(HEAP[c+8])==0?2:7;break;case 2:a=___isinf(HEAP[c])!=0?3:4;break;case 3:f=_fabs(HEAP[c]);d=___errno_location();HEAP[d]=0;d=f;a=11;break;case 4:a=___isinf(HEAP[c+8])!=0?5:6;break;case 5:f=_fabs(HEAP[c+8]);d=___errno_location();HEAP[d]=0;d=f;a=11;break;case 6:d=NaN;a=11;break;case 7:f=_hypot(HEAP[c],HEAP[c+8]);a= -___finite(f)==0;var h=___errno_location();a=a?8:9;break;case 8:HEAP[h]=34;a=10;break;case 9:HEAP[h]=0;a=10;break;case 10:d=f;a=11;break;case 11:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_subtype_from_c_complex(g,e,b){var a=STACKTOP;STACKTOP+=16;_memset(a,0,16);var c;for(c=-1;;)switch(c){case -1:var d=a,f;c=g;HEAP[d]=e;HEAP[d+8]=b;f=FUNCTION_TABLE[HEAP[c+152]](c,0);c=f!=0?1:2;break;case 1:HEAP[f+8]=HEAP[d];HEAP[f+8+8]=HEAP[d+8];c=2;break;case 2:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyComplex_FromCComplex(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c=b,d,f;HEAP[c]=g;HEAP[c+8]=e;f=_malloc(24);a=f==0?1:2;break;case 1:d=_PyErr_NoMemory();a=3;break;case 2:HEAP[f+4]=_PyComplex_Type;HEAP[f]=1;HEAP[f+8]=HEAP[c];HEAP[f+8+8]=HEAP[c+8];d=f;a=3;break;case 3:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _complex_subtype_from_doubles(g,e,b){var a=STACKTOP;STACKTOP+=16;_memset(a,0,16);HEAP[a]=e;HEAP[a+8]=b;g=_complex_subtype_from_c_complex(g,HEAP[a],HEAP[a+8]);STACKTOP=a;return g}function _PyComplex_FromDoubles(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);HEAP[b]=g;HEAP[b+8]=e;var a=_PyComplex_FromCComplex(HEAP[b],HEAP[b+8]);STACKTOP=b;return a} -function _PyComplex_RealAsDouble(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]==_PyComplex_Type?2:1;break;case 1:e=_PyType_IsSubtype(HEAP[b+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[b+8];e=4;break;case 3:a=_PyFloat_AsDouble(b);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _PyComplex_ImagAsDouble(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]==_PyComplex_Type?2:1;break;case 1:e=_PyType_IsSubtype(HEAP[b+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[b+8+8];e=4;break;case 3:a=0;e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _try_complex_special_method(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[_complexstr_8622]==0?1:3;break;case 1:e=_PyString_InternFromString(__str958);HEAP[_complexstr_8622]=e;e=HEAP[_complexstr_8622]==0?2:3;break;case 2:a=0;e=16;break;case 3:e=HEAP[b+4]==_PyInstance_Type?4:8;break;case 4:c=_PyObject_GetAttr(b,HEAP[_complexstr_8622]);e=c==0?5:12;break;case 5:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?6:7;break;case 6:_PyErr_Clear();e=11;break;case 7:a=0;e=16; -break;case 8:c=__PyObject_LookupSpecial(b,__str958,_complexstr_8622);e=c==0?9:12;break;case 9:e=_PyErr_Occurred()!=0?10:11;break;case 10:a=0;e=16;break;case 11:e=c!=0?12:15;break;case 12:d=_PyObject_CallFunctionObjArgs(c,allocate(4,"i8*",ALLOC_STACK));HEAP[c]-=1;e=HEAP[c]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=14;break;case 14:a=d;e=16;break;case 15:a=0;e=16;break;case 16:return g=a;default:assert(0,"bad label: "+e)}} -function _PyComplex_AsCComplex(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;c=e;f=0;a=HEAP[c+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[c+4],_PyComplex_Type)!=0?2:3;break;case 2:HEAP[g]=HEAP[c+8];HEAP[g+8]=HEAP[c+8+8];a=15;break;case 3:HEAP[d]=-1;HEAP[d+8]=0;f=_try_complex_special_method(c);a=f!=0?4:12;break;case 4:a=HEAP[f+4]!=_PyComplex_Type?5:9;break;case 5:a=_PyType_IsSubtype(HEAP[f+4],_PyComplex_Type)==0?6:9;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str1959);HEAP[f]-=1;a=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=8;break;case 8:HEAP[g]=HEAP[d];HEAP[g+8]=HEAP[d+8];a=15;break;case 9:HEAP[d]=HEAP[f+8];HEAP[d+8]=HEAP[f+8+8];HEAP[f]-=1;a=HEAP[f]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=11;break;case 11:HEAP[g]=HEAP[d];HEAP[g+8]=HEAP[d+8];a=15;break;case 12:a=_PyErr_Occurred()!=0?13:14;break;case 13:HEAP[g]=HEAP[d];HEAP[g+8]=HEAP[d+8];a=15;break;case 14:a=_PyFloat_AsDouble(c);HEAP[d]=a;HEAP[g]=HEAP[d]; -HEAP[g+8]=HEAP[d+8];a=15;break;case 15:STACKTOP=b;return;default:assert(0,"bad label: "+a)}}function _complex_dealloc(g){FUNCTION_TABLE[HEAP[HEAP[g+4]+160]](g)} -function _complex_format(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;f=b;n=m=l=k=h=0;p=o=__str2960;a=HEAP[c+8]!=0?4:1;break;case 1:a=_copysign(1,HEAP[c+8])!=1?4:2;break;case 2:n=__str2960;l=_PyOS_double_to_string(HEAP[c+8+8],f&255,d,0,0);a=l==0?3:9;break;case 3:_PyErr_NoMemory();a=12;break;case 4:k=a=_PyOS_double_to_string(HEAP[c+8],f&255,d,0,0);a=a==0?5:6;break;case 5:_PyErr_NoMemory();a=12;break;case 6:n=k;l=_PyOS_double_to_string(HEAP[c+8+8],f&255,d,1,0);a=l==0? -7:8;break;case 7:_PyErr_NoMemory();a=12;break;case 8:o=__str3961;p=__str4962;a=9;break;case 9:j=_strlen(o);m=_strlen(n);a=_strlen(l);var q=_strlen(p);j=j+2+m+a+q;m=a=_PyMem_Malloc(j);a=a==0?10:11;break;case 10:_PyErr_NoMemory();a=12;break;case 11:_PyOS_snprintf(m,j,__str5963,allocate([o,0,0,0,n,0,0,0,l,0,0,0,p,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=_PyString_FromString(m);a=12;break;case 12:return _PyMem_Free(l),_PyMem_Free(k),_PyMem_Free(m),g=h;default:assert(0, -"bad label: "+a)}}function _complex_print(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;f=e;a=(b&1)!=0?1:2;break;case 1:var k=_complex_format(d,12,103);j=k;c=1;a=3;break;case 2:var l=_complex_format(d,0,114);j=l;c=2;a=3;break;case 3:a=(c==2?l:k)==0?4:5;break;case 4:h=-1;a=8;break;case 5:a=j+20;_fputs(a,f);HEAP[j]-=1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _complex_repr(g){return _complex_format(g,0,114)}function _complex_str(g){return _complex_format(g,12,103)}function _complex_hash(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=__Py_HashDouble(HEAP[b+8]);e=c==-1?1:2;break;case 1:a=-1;e=7;break;case 2:d=__Py_HashDouble(HEAP[b+8+8]);e=d==-1?3:4;break;case 3:a=-1;e=7;break;case 4:f=d*1000003+c;e=f==-1?5:6;break;case 5:f=-2;e=6;break;case 6:a=f;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _to_complex(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=HEAP[a];HEAP[c+8]=0;HEAP[c]=HEAP[c+8];var h=f;b=(HEAP[HEAP[f+4]+84]&8388608)!=0?1:2;break;case 1:HEAP[c]=HEAP[h+8];d=0;b=11;break;case 2:var j=f;b=(HEAP[HEAP[h+4]+84]&16777216)!=0?3:7;break;case 3:b=_PyLong_AsDouble(j);HEAP[c]=b;b=HEAP[c]==-1?4:6;break;case 4:b=_PyErr_Occurred()!=0?5:6;break;case 5:HEAP[a]=0;d=-1;b=11;break;case 6:d=0;b=11;break;case 7:b=HEAP[j+4]==_PyFloat_Type?9:8;break;case 8:b=_PyType_IsSubtype(HEAP[f+ -4],_PyFloat_Type)!=0?9:10;break;case 9:d=_PyFloat_AsDouble(f);HEAP[c]=d;d=0;b=11;break;case 10:HEAP[__Py_NotImplementedStruct]+=1;HEAP[a]=__Py_NotImplementedStruct;d=-1;b=11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}} -function _complex_add(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+24,k=b+40;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[j]=HEAP[a];HEAP[j+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,j)<0?4:5;break;case 4:f=HEAP[c];a=11;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[k]=HEAP[a];HEAP[k+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,k)<0?9:10;break;case 9:f=HEAP[d];a=11;break;case 10:__Py_c_sum(h,HEAP[j],HEAP[j+8],HEAP[k],HEAP[k+8]);f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_sub(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+24,k=b+40;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[j]=HEAP[a];HEAP[j+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,j)<0?4:5;break;case 4:f=HEAP[c];a=11;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[k]=HEAP[a];HEAP[k+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,k)<0?9:10;break;case 9:f=HEAP[d];a=11;break;case 10:__Py_c_diff(h,HEAP[j],HEAP[j+8],HEAP[k],HEAP[k+8]);f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_mul(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+24,k=b+40;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[j]=HEAP[a];HEAP[j+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,j)<0?4:5;break;case 4:f=HEAP[c];a=11;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[k]=HEAP[a];HEAP[k+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,k)<0?9:10;break;case 9:f=HEAP[d];a=11;break;case 10:__Py_c_prod(h,HEAP[j],HEAP[j+8],HEAP[k],HEAP[k+8]);f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_div(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+24,k=b+40;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[j]=HEAP[a];HEAP[j+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,j)<0?4:5;break;case 4:f=HEAP[c];a=13;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[k]=HEAP[a];HEAP[k+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,k)<0?9:10;break;case 9:f=HEAP[d];a=13;break;case 10:a=___errno_location();HEAP[a]=0;__Py_c_quot(h,HEAP[j],HEAP[j+8],HEAP[k],HEAP[k+8]);a=___errno_location();a=HEAP[a]==33?11:12;break;case 11:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str6964);f=0;a=13;break;case 12:f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);a=13;break;case 13:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+ -a)}} -function _complex_classic_div(g,e){var b=STACKTOP;STACKTOP+=56;_memset(b,0,56);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+24,k=b+40;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[j]=HEAP[a];HEAP[j+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,j)<0?4:5;break;case 4:f=HEAP[c];a=16;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+4], -_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[k]=HEAP[a];HEAP[k+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,k)<0?9:10;break;case 9:f=HEAP[d];a=16;break;case 10:a=HEAP[_Py_DivisionWarningFlag]>1?11:13;break;case 11:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str7965,1)<0?12:13;break;case 12:f=0;a=16;break;case 13:a=___errno_location();HEAP[a]=0;__Py_c_quot(h,HEAP[j],HEAP[j+8],HEAP[k],HEAP[k+8]);a=___errno_location();a=HEAP[a]==33?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError], -__str6964);f=0;a=16;break;case 15:f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);a=16;break;case 16:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_remainder(g,e){var b=STACKTOP;STACKTOP+=88;_memset(b,0,88);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f=b+8,h,j=b+24,k=b+40,l=b+56,m=b+72;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[l]=HEAP[a];HEAP[l+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,l)<0?4:5;break;case 4:h=HEAP[c];a=15;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[m]=HEAP[a];HEAP[m+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,m)<0?9:10;break;case 9:h=HEAP[d];a=15;break;case 10:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str8966,1)<0?11:12;break;case 11:h=0;a=15;break;case 12:a=___errno_location();HEAP[a]=0;__Py_c_quot(j,HEAP[l],HEAP[l+8],HEAP[m],HEAP[m+8]);a=___errno_location();a=HEAP[a]==33?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str9967);h=0;a=15;break;case 14:h= -_floor(HEAP[j]);HEAP[j]=h;HEAP[j+8]=0;__Py_c_prod(f,HEAP[m],HEAP[m+8],HEAP[j],HEAP[j+8]);__Py_c_diff(k,HEAP[l],HEAP[l+8],HEAP[f],HEAP[f+8]);h=_PyComplex_FromCComplex(HEAP[k],HEAP[k+8]);a=15;break;case 15:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_divmod(g,e){var b=STACKTOP;STACKTOP+=88;_memset(b,0,88);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f=b+8,h,j=b+24,k=b+40,l,m,n,o=b+56,p=b+72;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[o]=HEAP[a];HEAP[o+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,o)<0?4:5;break;case 4:h=HEAP[c];a=21;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[p]=HEAP[a];HEAP[p+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,p)<0?9:10;break;case 9:h=HEAP[d];a=21;break;case 10:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str8966,1)<0?11:12;break;case 11:h=0;a=21;break;case 12:a=___errno_location();HEAP[a]=0;__Py_c_quot(j,HEAP[o],HEAP[o+8],HEAP[p],HEAP[p+8]);a=___errno_location();a=HEAP[a]==33?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str10968);h=0;a=21;break;case 14:l= -_floor(HEAP[j]);HEAP[j]=l;HEAP[j+8]=0;__Py_c_prod(f,HEAP[p],HEAP[p+8],HEAP[j],HEAP[j+8]);__Py_c_diff(k,HEAP[o],HEAP[o+8],HEAP[f],HEAP[f+8]);l=_PyComplex_FromCComplex(HEAP[j],HEAP[j+8]);m=_PyComplex_FromCComplex(HEAP[k],HEAP[k+8]);n=_PyTuple_Pack(2,allocate([l,0,0,0,m,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=l!=0?15:17;break;case 15:HEAP[l]-=1;a=HEAP[l]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=17;break;case 17:a=m!=0?18:20;break;case 18:HEAP[m]-= -1;a=HEAP[m]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=20;break;case 20:h=n;a=21;break;case 21:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_pow(g,e,b){var a=STACKTOP;STACKTOP+=88;_memset(a,0,88);var c;for(c=-1;;)switch(c){case -1:var d=a,f=a+4,h,j,k=a+8,l=a+24,m,n=a+40,o=a+56,p=a+72;HEAP[d]=g;HEAP[f]=e;h=b;c=HEAP[HEAP[d]+4]==_PyComplex_Type?2:1;break;case 1:c=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyComplex_Type)!=0?2:3;break;case 2:c=HEAP[d]+8;HEAP[n]=HEAP[c];HEAP[n+8]=HEAP[c+8];c=5;break;case 3:c=_to_complex(d,n)<0?4:5;break;case 4:j=HEAP[d];c=29;break;case 5:c=HEAP[HEAP[f]+4]==_PyComplex_Type?7:6;break;case 6:c=_PyType_IsSubtype(HEAP[HEAP[f]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:c=HEAP[f]+8;HEAP[o]=HEAP[c];HEAP[o+8]=HEAP[c+8];c=10;break;case 8:c=_to_complex(f,o)<0?9:10;break;case 9:j=HEAP[f];c=29;break;case 10:c=h!=__Py_NoneStruct?11:12;break;case 11:_PyErr_SetString(HEAP[_PyExc_ValueError],__str11969);j=0;c=29;break;case 12:m=___errno_location();HEAP[m]=0;HEAP[l]=HEAP[o];HEAP[l+8]=HEAP[o+8];m=HEAP[l]|0;c=HEAP[l+8]!=0?15:13;break;case 13:c=HEAP[l]!=m?15:14;break;case 14:_c_powi(k,HEAP[n],HEAP[n+8],m);c=16;break;case 15:__Py_c_pow(p, -HEAP[n],HEAP[n+8],HEAP[l],HEAP[l+8]);HEAP[k]=HEAP[p];HEAP[k+8]=HEAP[p+8];c=16;break;case 16:c=HEAP[k]==Infinity?20:17;break;case 17:c=HEAP[k]==-Infinity?20:18;break;case 18:c=HEAP[k+8]==Infinity?20:19;break;case 19:c=HEAP[k+8]==-Infinity?20:22;break;case 20:c=___errno_location();c=HEAP[c]==0?21:24;break;case 21:c=___errno_location();HEAP[c]=34;c=24;break;case 22:c=___errno_location();c=HEAP[c]==34?23:24;break;case 23:c=___errno_location();HEAP[c]=0;c=24;break;case 24:c=___errno_location();c=HEAP[c]== -33?25:26;break;case 25:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str12970);j=0;c=29;break;case 26:c=___errno_location();c=HEAP[c]==34?27:28;break;case 27:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str13971);j=0;c=29;break;case 28:j=_PyComplex_FromCComplex(HEAP[k],HEAP[k+8]);c=29;break;case 29:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _complex_int_div(g,e){var b=STACKTOP;STACKTOP+=40;_memset(b,0,40);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h,j,k=b+8,l=b+24;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyComplex_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyComplex_Type)!=0?2:3;break;case 2:a=HEAP[c]+8;HEAP[k]=HEAP[a];HEAP[k+8]=HEAP[a+8];a=5;break;case 3:a=_to_complex(c,k)<0?4:5;break;case 4:f=HEAP[c];a=17;break;case 5:a=HEAP[HEAP[d]+4]==_PyComplex_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+ -4],_PyComplex_Type)!=0?7:8;break;case 7:a=HEAP[d]+8;HEAP[l]=HEAP[a];HEAP[l+8]=HEAP[a+8];a=10;break;case 8:a=_to_complex(d,l)<0?9:10;break;case 9:f=HEAP[d];a=17;break;case 10:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str8966,1)<0?11:12;break;case 11:f=0;a=17;break;case 12:h=_complex_divmod(HEAP[c],HEAP[d]);a=h!=0?13:16;break;case 13:j=HEAP[h+12];HEAP[j]+=1;HEAP[h]-=1;a=HEAP[h]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=15;break;case 15:f=j;a=17;break;case 16:f=0;a=17;break; -case 17:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _complex_neg(g){var e=STACKTOP;STACKTOP+=16;_memset(e,0,16);HEAP[e]=0-HEAP[g+8];HEAP[e+8]=0-HEAP[g+8+8];g=_PyComplex_FromCComplex(HEAP[e],HEAP[e+8]);STACKTOP=e;return g} -function _complex_pos(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+4]==_PyComplex_Type?1:2;break;case 1:HEAP[c]+=1;a=b;e=3;break;case 2:a=_PyComplex_FromCComplex(HEAP[c+8],HEAP[c+8+8]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _complex_abs(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;b=__Py_c_abs(HEAP[b+8],HEAP[b+8+8]);e=___errno_location();e=HEAP[e]==34?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str14972);a=0;e=3;break;case 2:a=_PyFloat_FromDouble(b);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _complex_nonzero(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]!=0?2:1;break;case 1:e=HEAP[b+8+8]!=0?2:3;break;case 2:a=1;e=4;break;case 3:a=0;e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _complex_coerce(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;HEAP[h+8]=0;var j=HEAP[d];a=(HEAP[HEAP[HEAP[d]+4]+84]&8388608)!=0?1:2;break;case 1:f=_PyInt_AsLong(j);HEAP[h]=f;f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);HEAP[d]=f;HEAP[HEAP[c]]+=1;f=0;a=14;break;case 2:var k=HEAP[d];a=(HEAP[HEAP[j+4]+84]&16777216)!=0?3:7;break;case 3:a=_PyLong_AsDouble(k);HEAP[h]=a;a=HEAP[h]==-1?4:6;break;case 4:a=_PyErr_Occurred()!=0?5:6;break;case 5:f= --1;a=14;break;case 6:f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);HEAP[d]=f;HEAP[HEAP[c]]+=1;f=0;a=14;break;case 7:a=HEAP[k+4]==_PyFloat_Type?9:8;break;case 8:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?9:10;break;case 9:f=_PyFloat_AsDouble(HEAP[d]);HEAP[h]=f;f=_PyComplex_FromCComplex(HEAP[h],HEAP[h+8]);HEAP[d]=f;HEAP[HEAP[c]]+=1;f=0;a=14;break;case 10:a=HEAP[HEAP[d]+4]==_PyComplex_Type?12:11;break;case 11:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyComplex_Type)!=0?12:13;break;case 12:HEAP[HEAP[c]]+= -1;HEAP[HEAP[d]]+=1;f=0;a=14;break;case 13:f=1;a=14;break;case 14:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_richcompare(g,e,b){var a=STACKTOP;STACKTOP+=40;_memset(a,0,40);var c;for(c=-1;;)switch(c){case -1:var d=a,f=a+4,h,j,k,l,m,n=a+8,o,p,q,r=a+24;HEAP[d]=g;HEAP[f]=e;h=b;c=h!=2&h!=3?1:8;break;case 1:c=(HEAP[HEAP[HEAP[f]+4]+84]&8388608)!=0?7:2;break;case 2:c=(HEAP[HEAP[HEAP[f]+4]+84]&16777216)!=0?7:3;break;case 3:c=HEAP[HEAP[f]+4]==_PyFloat_Type?7:4;break;case 4:c=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFloat_Type)!=0?7:5;break;case 5:c=HEAP[HEAP[f]+4]==_PyComplex_Type?7:6;break;case 6:c= -_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyComplex_Type)!=0?7:45;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str15973);l=0;c=46;break;case 8:c=HEAP[HEAP[d]+4]==_PyComplex_Type?10:9;break;case 9:c=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyComplex_Type)!=0?10:11;break;case 10:c=HEAP[d]+8;HEAP[n]=HEAP[c];HEAP[n+8]=HEAP[c+8];c=13;break;case 11:c=_to_complex(d,n)<0?12:13;break;case 12:l=HEAP[d];c=46;break;case 13:c=(HEAP[HEAP[HEAP[f]+4]+84]&8388608)!=0?15:14;break;case 14:c=(HEAP[HEAP[HEAP[f]+4]+84]&16777216)!= -0?15:22;break;case 15:c=HEAP[n+8]==0?16:21;break;case 16:p=_PyFloat_FromDouble(HEAP[n]);c=p==0?17:18;break;case 17:l=0;c=46;break;case 18:q=_PyObject_RichCompare(p,HEAP[f],h);HEAP[p]-=1;c=HEAP[p]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=20;break;case 20:l=q;c=46;break;case 21:o=0;c=41;break;case 22:c=HEAP[HEAP[f]+4]==_PyFloat_Type?24:23;break;case 23:c=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFloat_Type)!=0?24:29;break;case 24:c=HEAP[n];var u=_PyFloat_AsDouble(HEAP[f]);c=c!=u?27: -25;break;case 25:c=HEAP[n+8]!=0?27:26;break;case 26:k=1;c=28;break;case 27:k=0;c=28;break;case 28:o=k;c=41;break;case 29:c=HEAP[HEAP[f]+4]==_PyComplex_Type?31:30;break;case 30:c=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyComplex_Type)!=0?31:45;break;case 31:c=HEAP[HEAP[f]+4]==_PyComplex_Type?33:32;break;case 32:c=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyComplex_Type)!=0?33:34;break;case 33:c=HEAP[f]+8;HEAP[r]=HEAP[c];HEAP[r+8]=HEAP[c+8];c=36;break;case 34:c=_to_complex(f,r)<0?35:36;break;case 35:l=HEAP[f]; -c=46;break;case 36:c=HEAP[n]!=HEAP[r]?39:37;break;case 37:c=HEAP[n+8]!=HEAP[r+8]?39:38;break;case 38:j=1;c=40;break;case 39:j=0;c=40;break;case 40:o=j;c=41;break;case 41:c=h==2==o?42:43;break;case 42:m=__Py_TrueStruct;c=44;break;case 43:m=__Py_ZeroStruct;c=44;break;case 44:HEAP[m]+=1;l=m;c=46;break;case 45:HEAP[__Py_NotImplementedStruct]+=1;l=__Py_NotImplementedStruct;c=46;break;case 46:return g=l,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _complex_int(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str16974);return 0}function _complex_long(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str17975);return 0}function _complex_float(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str18976);return 0}function _complex_conjugate(g){var e=STACKTOP;STACKTOP+=16;_memset(e,0,16);HEAP[e]=HEAP[g+8];HEAP[e+8]=HEAP[g+8+8];HEAP[e+8]=0-HEAP[e+8];g=_PyComplex_FromCComplex(HEAP[e],HEAP[e+8]);STACKTOP=e;return g} -function _complex_getnewargs(g){var e=STACKTOP;STACKTOP+=16;_memset(e,0,16);HEAP[e]=HEAP[g+8];HEAP[e+8]=HEAP[g+8+8];g=_Py_BuildValue(__str19977,allocate([HEAP[e],0,0,0,0,0,0,0,HEAP[e+8],0,0,0,0,0,0,0],["double",0,0,0,0,0,0,0,"double",0,0,0,0,0,0,0],ALLOC_STACK));STACKTOP=e;return g} -function _complex__format__(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j;c=g;a=_PyArg_ParseTuple(e,__str20978,allocate([f,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=11;break;case 2:var k=HEAP[f];a=(HEAP[HEAP[HEAP[f]+4]+84]&134217728)!=0?3:4;break;case 3:d=__PyComplex_FormatAdvanced(c,HEAP[f]+20,HEAP[k+8]);a=11;break;case 4:a=(HEAP[HEAP[k+4]+84]&268435456)!=0?5:10;break;case 5:j=_PyObject_Str(HEAP[f]);a=j==0? -6:7;break;case 6:d=0;a=11;break;case 7:h=__PyComplex_FormatAdvanced(c,j+20,HEAP[j+8]);HEAP[j]-=1;a=HEAP[j]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=9;break;case 9:d=h;a=11;break;case 10:_PyErr_SetString(HEAP[_PyExc_TypeError],__str21979);d=0;a=11;break;case 11:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _complex_subtype_from_string(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m=b,n,o=b+4,p,q,r,u,s,t=b+8;d=g;f=e;s=u=q=p=0;var v=f;a=(HEAP[HEAP[f+4]+84]&134217728)!=0?1:2;break;case 1:HEAP[m]=v+20;HEAP[t]=HEAP[f+8];a=14;break;case 2:var w=f;a=(HEAP[HEAP[v+4]+84]&268435456)!=0?3:12;break;case 3:a=HEAP[w+8]+1>=0?4:7;break;case 4:a=HEAP[f+8]!=-1?5:6;break;case 5:l=HEAP[f+8]+1;a=8;break;case 6:l=1;a=8;break;case 7:s=0;a=9;break;case 8:s= -a=_malloc(l);a=a==0?9:10;break;case 9:k=_PyErr_NoMemory();a=67;break;case 10:a=_PyUnicodeUCS2_EncodeDecimal(HEAP[f+12],HEAP[f+8],s,0)!=0?64:11;break;case 11:HEAP[m]=s;a=_strlen(HEAP[m]);HEAP[t]=a;a=14;break;case 12:a=_PyObject_AsCharBuffer(w,m,t)!=0?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_TypeError],__str29987);k=0;a=67;break;case 14:n=HEAP[m];var x=HEAP[m];(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?(c=14,a=15):(c=14,a=16);break;case 15:HEAP[m]=(c==15?y:x)+1;var y=HEAP[m];(HEAP[__Py_ctype_table+ -HEAP[HEAP[m]]*4]&8)!=0?a=c=15:(c=15,a=16);break;case 16:a=HEAP[c==14?x:y]==40?17:19;break;case 17:u=1;HEAP[m]+=1;a=(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?18:19;break;case 18:HEAP[m]+=1;a=(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?18:19;break;case 19:r=a=_PyOS_string_to_double(HEAP[m],o,0);a=a==-1?20:23;break;case 20:a=_PyErr_Occurred()!=0?21:23;break;case 21:a=_PyErr_ExceptionMatches(HEAP[_PyExc_ValueError])!=0?22:64;break;case 22:_PyErr_Clear();a=23;break;case 23:a=HEAP[o]!=HEAP[m]?24: -43;break;case 24:HEAP[m]=HEAP[o];a=HEAP[HEAP[m]]==43?26:25;break;case 25:a=HEAP[HEAP[m]]==45?26:39;break;case 26:p=r;q=a=_PyOS_string_to_double(HEAP[m],o,0);a=a==-1?27:30;break;case 27:a=_PyErr_Occurred()!=0?28:30;break;case 28:a=_PyErr_ExceptionMatches(HEAP[_PyExc_ValueError])!=0?29:64;break;case 29:_PyErr_Clear();a=30;break;case 30:a=HEAP[o]!=HEAP[m]?31:32;break;case 31:HEAP[m]=HEAP[o];a=36;break;case 32:a=HEAP[HEAP[m]]==43?33:34;break;case 33:j=1;a=35;break;case 34:j=-1;a=35;break;case 35:q=j; -HEAP[m]+=1;a=36;break;case 36:a=HEAP[HEAP[m]]!=106?37:38;break;case 37:a=HEAP[HEAP[m]]!=74?63:38;break;case 38:HEAP[m]+=1;a=53;break;case 39:a=HEAP[HEAP[m]]==106?41:40;break;case 40:a=HEAP[HEAP[m]]==74?41:42;break;case 41:HEAP[m]+=1;q=r;a=53;break;case 42:p=r;a=53;break;case 43:a=HEAP[HEAP[m]]==43?45:44;break;case 44:a=HEAP[HEAP[m]]==45?45:49;break;case 45:a=HEAP[HEAP[m]]==43?46:47;break;case 46:h=1;a=48;break;case 47:h=-1;a=48;break;case 48:q=h;HEAP[m]+=1;a=50;break;case 49:q=1;a=50;break;case 50:a= -HEAP[HEAP[m]]!=106?51:52;break;case 51:a=HEAP[HEAP[m]]!=74?63:52;break;case 52:HEAP[m]+=1;a=53;break;case 53:a=(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?54:55;break;case 54:HEAP[m]+=1;a=(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?54:55;break;case 55:a=u!=0?56:59;break;case 56:a=HEAP[HEAP[m]]!=41?63:57;break;case 57:HEAP[m]+=1;a=(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?58:59;break;case 58:HEAP[m]+=1;a=(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?58:59;break;case 59:a=HEAP[m]-n!=HEAP[t]? -63:60;break;case 60:a=s!=0?61:62;break;case 61:_free(s);a=62;break;case 62:k=_complex_subtype_from_doubles(d,p,q);a=67;break;case 63:_PyErr_SetString(HEAP[_PyExc_ValueError],__str30988);a=64;break;case 64:a=s!=0?65:66;break;case 65:_free(s);a=66;break;case 66:k=0;a=67;break;case 67:return c=k,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _complex_new(g,e,b){var a=STACKTOP;STACKTOP+=40;_memset(a,0,40);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k=a,l=a+4,m,n,o,p=a+8,q=a+24,r,u,s;f=g;c=e;h=b;s=u=r=o=0;HEAP[k]=__Py_ZeroStruct;HEAP[l]=0;c=_PyArg_ParseTupleAndKeywords(c,h,__str31989,_kwlist_9921,allocate([k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:j=0;c=62;break;case 2:c=HEAP[HEAP[k]+4]==_PyComplex_Type?3:6;break;case 3:c=HEAP[l]==0?4:6;break;case 4:c= -f==_PyComplex_Type?5:6;break;case 5:HEAP[HEAP[k]]+=1;j=HEAP[k];c=62;break;case 6:c=(HEAP[HEAP[HEAP[k]+4]+84]&134217728)!=0?8:7;break;case 7:c=(HEAP[HEAP[HEAP[k]+4]+84]&268435456)!=0?8:11;break;case 8:c=HEAP[l]!=0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str32990);j=0;c=62;break;case 10:j=_complex_subtype_from_string(f,HEAP[k]);c=62;break;case 11:c=HEAP[l]!=0?12:15;break;case 12:c=(HEAP[HEAP[HEAP[l]+4]+84]&134217728)!=0?14:13;break;case 13:c=(HEAP[HEAP[HEAP[l]+4]+84]&268435456)!= -0?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_TypeError],__str33991);j=0;c=62;break;case 15:m=c=_try_complex_special_method(HEAP[k]);c=c!=0?16:17;break;case 16:HEAP[k]=m;r=1;c=19;break;case 17:c=_PyErr_Occurred()!=0?18:19;break;case 18:j=0;c=62;break;case 19:var t=HEAP[HEAP[HEAP[k]+4]+48];n=t;HEAP[l]!=0?(d=19,c=20):(d=19,c=21);break;case 20:o=HEAP[HEAP[HEAP[l]+4]+48];var v=n,d=20;c=21;break;case 21:c=(d==20?v:t)==0?26:22;break;case 22:c=HEAP[n+80]==0?26:23;break;case 23:c=HEAP[l]==0?30:24;break; -case 24:c=o==0?26:25;break;case 25:c=HEAP[o+80]==0?26:30;break;case 26:_PyErr_SetString(HEAP[_PyExc_TypeError],__str34992);c=r!=0?27:29;break;case 27:c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=29;break;case 29:j=0;c=62;break;case 30:c=HEAP[HEAP[k]+4]==_PyComplex_Type?32:31;break;case 31:c=_PyType_IsSubtype(HEAP[HEAP[k]+4],_PyComplex_Type)!=0?32:35;break;case 32:u=HEAP[k]+8;HEAP[p]=HEAP[u];HEAP[p+8]=HEAP[u+8];u=1;c=r!=0?33:48;break;case 33:c= -HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?34:48;break;case 34:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=48;break;case 35:var w=_PyNumber_Float(HEAP[k]);m=w;r!=0?(d=35,c=36):(d=35,c=39);break;case 36:c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=38;break;case 38:var x=m,d=38;c=39;break;case 39:c=(d==38?x:w)==0?40:41;break;case 40:j=0;c=62;break;case 41:c=HEAP[m+4]!=_PyFloat_Type?42:46;break;case 42:c=_PyType_IsSubtype(HEAP[m+4],_PyFloat_Type)== -0?43:46;break;case 43:_PyErr_SetString(HEAP[_PyExc_TypeError],__str35993);HEAP[m]-=1;c=HEAP[m]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=45;break;case 45:j=0;c=62;break;case 46:c=_PyFloat_AsDouble(m);HEAP[p]=c;HEAP[p+8]=0;HEAP[m]-=1;c=HEAP[m]==0?47:48;break;case 47:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=48;break;case 48:c=HEAP[l]==0?49:50;break;case 49:HEAP[q]=0;c=57;break;case 50:c=HEAP[HEAP[l]+4]==_PyComplex_Type?52:51;break;case 51:c=_PyType_IsSubtype(HEAP[HEAP[l]+4],_PyComplex_Type)!= -0?52:53;break;case 52:s=HEAP[l]+8;HEAP[q]=HEAP[s];HEAP[q+8]=HEAP[s+8];s=1;c=58;break;case 53:m=FUNCTION_TABLE[HEAP[o+80]](HEAP[l]);c=m==0?54:55;break;case 54:j=0;c=62;break;case 55:c=_PyFloat_AsDouble(m);HEAP[q]=c;HEAP[m]-=1;c=HEAP[m]==0?56:57;break;case 56:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=57;break;case 57:c=s!=0?58:59;break;case 58:HEAP[p]-=HEAP[q+8];c=59;break;case 59:c=u!=0?60:61;break;case 60:HEAP[q]+=HEAP[p+8];c=61;break;case 61:j=_complex_subtype_from_doubles(f,HEAP[p],HEAP[q]);c=62; -break;case 62:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _descr_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:e=HEAP[b+12]!=0?4:6;break;case 4:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=6;break;case 6:_PyObject_GC_Del(b);return;default:assert(0, -"bad label: "+e)}}function _descr_name(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+12]==0?3:1;break;case 1:e=(HEAP[HEAP[HEAP[b+12]+4]+84]&134217728)==0?3:2;break;case 2:a=HEAP[b+12]+20;e=4;break;case 3:a=__str1017;e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}}function _descr_repr(g,e){var b=HEAP[HEAP[g+8]+12],a=_descr_name(g);return _PyString_FromFormat(e,allocate([a,0,0,0,b,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK))} -function _method_repr(g){return _descr_repr(g,__str11018)}function _member_repr(g){return _descr_repr(g,__str21019)}function _getset_repr(g){return _descr_repr(g,__str31020)}function _wrapperdescr_repr(g){return _descr_repr(g,__str41021)} -function _descr_check(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=d==0?1:2;break;case 1:HEAP[c]+=1;HEAP[f]=c;h=1;a=6;break;case 2:a=HEAP[d+4]!=HEAP[c+8]?3:5;break;case 3:a=_PyType_IsSubtype(HEAP[d+4],HEAP[c+8])==0?4:5;break;case 4:a=HEAP[HEAP[d+4]+12];h=HEAP[HEAP[c+8]+12];var j=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str51022,allocate([j,0,0,0,h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[f]=0;h=1;a=6;break;case 5:h=0;a=6;break;case 6:return g= -h;default:assert(0,"bad label: "+a)}} -function _classmethod_get(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=f==0?1:4;break;case 1:a=d!=0?2:3;break;case 2:f=HEAP[d+4];a=4;break;case 3:a=HEAP[HEAP[c+8]+12];h=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str61023,allocate([h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=9;break;case 4:a=HEAP[HEAP[f+4]+84]>=0?5:6;break;case 5:a=HEAP[HEAP[f+4]+12];h=HEAP[HEAP[c+8]+12];var j=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str71024,allocate([j, -0,0,0,h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=9;break;case 6:a=_PyType_IsSubtype(f,HEAP[c+8])==0?7:8;break;case 7:a=HEAP[f+12];h=HEAP[HEAP[c+8]+12];j=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str81025,allocate([j,0,0,0,h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=9;break;case 8:h=_PyCFunction_NewEx(HEAP[c+16],f,0);a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function _method_get(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;a=_descr_check(c,d,h)!=0?1:2;break;case 1:f=HEAP[h];a=3;break;case 2:f=_PyCFunction_NewEx(HEAP[c+16],d,0);a=3;break;case 3:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _member_get(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;a=_descr_check(c,d,h)!=0?1:2;break;case 1:f=HEAP[h];a=3;break;case 2:f=_PyMember_GetOne(d,HEAP[c+16]);a=3;break;case 3:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _getset_get(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;a=_descr_check(c,d,h)!=0?1:2;break;case 1:f=HEAP[h];a=5;break;case 2:var j=c;a=HEAP[HEAP[c+16]+4]!=0?3:4;break;case 3:f=FUNCTION_TABLE[HEAP[HEAP[j+16]+4]](d,HEAP[HEAP[c+16]+16]);a=5;break;case 4:a=HEAP[HEAP[j+8]+12];f=_descr_name(c);_PyErr_Format(HEAP[_PyExc_AttributeError],__str91026,allocate([f,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));f=0;a=5;break;case 5:return c= -f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _wrapperdescr_get(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;a=_descr_check(c,d,h)!=0?1:2;break;case 1:f=HEAP[h];a=3;break;case 2:f=_PyWrapper_New(c,d);a=3;break;case 3:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _descr_setcheck(g,e,b,a){for(b=-1;;)switch(b){case -1:var c,d,f,h;c=g;d=e;f=a;b=HEAP[d+4]!=HEAP[c+8]?1:3;break;case 1:b=_PyType_IsSubtype(HEAP[d+4],HEAP[c+8])==0?2:3;break;case 2:h=HEAP[HEAP[d+4]+12];var b=HEAP[HEAP[c+8]+12],j=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str101027,allocate([j,0,0,0,b,0,0,0,h,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[f]=-1;h=1;b=4;break;case 3:h=0;b=4;break;case 4:return g=h;default:assert(0,"bad label: "+b)}} -function _member_set(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;c=_descr_setcheck(d,f,h,k)!=0?1:2;break;case 1:j=HEAP[k];c=3;break;case 2:j=_PyMember_SetOne(f,HEAP[d+16],h);c=3;break;case 3:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _getset_set(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;c=_descr_setcheck(d,f,h,k)!=0?1:2;break;case 1:j=HEAP[k];c=5;break;case 2:var l=d;c=HEAP[HEAP[d+16]+8]!=0?3:4;break;case 3:j=FUNCTION_TABLE[HEAP[HEAP[l+16]+8]](f,h,HEAP[HEAP[d+16]+16]);c=5;break;case 4:c=HEAP[HEAP[l+8]+12];j=_descr_name(d);_PyErr_Format(HEAP[_PyExc_AttributeError],__str111028,allocate([j,0,0,0,c,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));j=-1;c= -5;break;case 5:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _methoddescr_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;j=HEAP[d+8];a=j<=0?1:2;break;case 1:a=HEAP[HEAP[c+8]+12];h=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str121029,allocate([h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=15;break;case 2:k=HEAP[d+12];a=__PyObject_RealIsSubclass(HEAP[k+4],HEAP[c+8])==0?3:4;break;case 3:a=HEAP[HEAP[k+4]+12];h=HEAP[HEAP[c+8]+12];var n=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str131030, -allocate([n,0,0,0,h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=15;break;case 4:l=_PyCFunction_NewEx(HEAP[c+16],k,0);a=l==0?5:6;break;case 5:h=0;a=15;break;case 6:d=_PyTuple_GetSlice(d,1,j);var o=l;a=d==0?7:10;break;case 7:HEAP[l]=HEAP[o]-1;a=HEAP[l]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=9;break;case 9:h=0;a=15;break;case 10:m=_PyEval_CallObjectWithKeywords(o,d,f);HEAP[d]-=1;a=HEAP[d]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a= -12;break;case 12:HEAP[l]-=1;a=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=14;break;case 14:h=m;a=15;break;case 15:return g=h;default:assert(0,"bad label: "+a)}} -function _classmethoddescr_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;h=_PyCFunction_NewEx(HEAP[a+16],HEAP[a+8],0);a=h==0?1:2;break;case 1:f=0;a=5;break;case 2:j=_PyEval_CallObjectWithKeywords(h,c,d);HEAP[h]-=1;a=HEAP[h]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=4;break;case 4:f=j;a=5;break;case 5:return g=f;default:assert(0,"bad label: "+a)}} -function _wrapperdescr_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;j=HEAP[d+8];a=j<=0?1:2;break;case 1:a=HEAP[HEAP[c+8]+12];h=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str121029,allocate([h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=15;break;case 2:k=HEAP[d+12];a=__PyObject_RealIsSubclass(HEAP[k+4],HEAP[c+8])==0?3:4;break;case 3:a=HEAP[HEAP[k+4]+12];h=HEAP[HEAP[c+8]+12];var n=_descr_name(c);_PyErr_Format(HEAP[_PyExc_TypeError],__str131030, -allocate([n,0,0,0,h,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=15;break;case 4:l=_PyWrapper_New(c,k);a=l==0?5:6;break;case 5:h=0;a=15;break;case 6:d=_PyTuple_GetSlice(d,1,j);var o=l;a=d==0?7:10;break;case 7:HEAP[l]=HEAP[o]-1;a=HEAP[l]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=9;break;case 9:h=0;a=15;break;case 10:m=_PyEval_CallObjectWithKeywords(o,d,f);HEAP[d]-=1;a=HEAP[d]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=12;break;case 12:HEAP[l]-= -1;a=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=14;break;case 14:h=m;a=15;break;case 15:return g=h;default:assert(0,"bad label: "+a)}}function _method_get_doc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[HEAP[b+16]+12]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_PyString_FromString(HEAP[HEAP[b+16]+12]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _member_get_doc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[HEAP[b+16]+16]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_PyString_FromString(HEAP[HEAP[b+16]+16]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _getset_get_doc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[HEAP[b+16]+12]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_PyString_FromString(HEAP[HEAP[b+16]+12]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _wrapperdescr_get_doc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[HEAP[b+16]+16]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_PyString_FromString(HEAP[HEAP[b+16]+16]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _descr_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;h=a;a=HEAP[h+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[c](HEAP[h+8],d);a=j!=0?2:3;break;case 2:f=j;a=4;break;case 3:f=0;a=4;break;case 4:return g=f;default:assert(0,"bad label: "+a)}} -function _descr_new(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;d=e;f=b;c=_PyType_GenericAlloc(c,0);a=c!=0?1:7;break;case 1:a=d!=0?2:3;break;case 2:HEAP[d]+=1;a=3;break;case 3:HEAP[c+8]=d;a=_PyString_InternFromString(f);HEAP[c+12]=a;a=HEAP[c+12]==0?4:7;break;case 4:HEAP[c]-=1;a=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=6;break;case 6:c=0;a=7;break;case 7:return g=c;default:assert(0,"bad label: "+a)}} -function _PyDescr_NewMethod(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;c=_descr_new(_PyMethodDescr_Type,b,HEAP[a]);b=c!=0?1:2;break;case 1:HEAP[c+16]=a;b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}}function _PyDescr_NewClassMethod(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;c=_descr_new(_PyClassMethodDescr_Type,b,HEAP[a]);b=c!=0?1:2;break;case 1:HEAP[c+16]=a;b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}} -function _PyDescr_NewMember(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;c=_descr_new(_PyMemberDescr_Type,b,HEAP[a]);b=c!=0?1:2;break;case 1:HEAP[c+16]=a;b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}}function _PyDescr_NewGetSet(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;c=_descr_new(_PyGetSetDescr_Type,b,HEAP[a]);b=c!=0?1:2;break;case 1:HEAP[c+16]=a;b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}} -function _PyDescr_NewWrapper(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;a=g;c=e;d=b;f=_descr_new(_PyWrapperDescr_Type,a,HEAP[c]);a=f!=0?1:2;break;case 1:HEAP[f+16]=c;HEAP[f+20]=d;a=2;break;case 2:return g=f;default:assert(0,"bad label: "+a)}}function _proxy_len(g){return _PyObject_Size(HEAP[g+8])}function _proxy_getitem(g,e){return _PyObject_GetItem(HEAP[g+8],e)}function _proxy_contains(g,e){return _PyDict_Contains(HEAP[g+8],e)} -function _proxy_has_key(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyDict_Contains(HEAP[g+8],e);b=c<0?1:2;break;case 1:a=0;b=3;break;case 2:a=_PyBool_FromLong(c);b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _proxy_get(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=e;HEAP[h]=__Py_NoneStruct;a=_PyArg_UnpackTuple(a,__str221039,1,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyObject_CallMethod(HEAP[c+8],__str221039,__str231040,allocate([HEAP[f],0,0,0,HEAP[h],0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK)); -a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _proxy_keys(g){return _PyObject_CallMethod(HEAP[g+8],__str241041,0,allocate(1,"i32",ALLOC_STACK))}function _proxy_values(g){return _PyObject_CallMethod(HEAP[g+8],__str251042,0,allocate(1,"i32",ALLOC_STACK))}function _proxy_items(g){return _PyObject_CallMethod(HEAP[g+8],__str261043,0,allocate(1,"i32",ALLOC_STACK))} -function _proxy_iterkeys(g){return _PyObject_CallMethod(HEAP[g+8],__str271044,0,allocate(1,"i32",ALLOC_STACK))}function _proxy_itervalues(g){return _PyObject_CallMethod(HEAP[g+8],__str281045,0,allocate(1,"i32",ALLOC_STACK))}function _proxy_iteritems(g){return _PyObject_CallMethod(HEAP[g+8],__str291046,0,allocate(1,"i32",ALLOC_STACK))}function _proxy_copy(g){return _PyObject_CallMethod(HEAP[g+8],__str301047,0,allocate(1,"i32",ALLOC_STACK))} -function _proxy_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=2;break;case 2:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}}function _proxy_getiter(g){return _PyObject_GetIter(HEAP[g+8])}function _proxy_str(g){return _PyObject_Str(HEAP[g+8])} -function _proxy_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;h=a;a=HEAP[h+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[c](HEAP[h+8],d);a=j!=0?2:3;break;case 2:f=j;a=4;break;case 3:f=0;a=4;break;case 4:return g=f;default:assert(0,"bad label: "+a)}}function _proxy_compare(g,e){return _PyObject_Compare(HEAP[g+8],e)}function _proxy_richcompare(g,e,b){return _PyObject_RichCompare(HEAP[g+8],e,b)} -function _PyDictProxy_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=__PyObject_GC_New(_PyDictProxy_Type);e=a!=0?1:4;break;case 1:HEAP[b]+=1;HEAP[a+8]=b;c=a+-12;e=HEAP[c+8]!=-2?2:3;break;case 2:throw _Py_FatalError(__str421059),"Reached an unreachable!";case 3:HEAP[c+8]=-3;HEAP[c]=HEAP[__PyGC_generation0];HEAP[c+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[c+4]]=c;HEAP[HEAP[__PyGC_generation0]+4]=c;e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _wrapper_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_PyObject_GC_UnTrack(b);e=HEAP[__PyTrash_delete_nesting]<=49?1:9;break;case 1:HEAP[__PyTrash_delete_nesting]+=1;e=HEAP[b+8]!=0?2:4;break;case 2:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=4;break;case 4:e=HEAP[b+12]!=0?5:7;break;case 5:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=7;break;case 7:_PyObject_GC_Del(b); -HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?8:10;break;case 8:__PyTrash_destroy_chain();e=10;break;case 9:__PyTrash_deposit_object(b);e=10;break;case 10:return;default:assert(0,"bad label: "+e)}} -function _wrapper_compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[a+8]==HEAP[c+8]?1:2;break;case 1:f=_PyObject_Compare(HEAP[a+12],HEAP[c+12]);b=6;break;case 2:b=HEAP[a+8]0?13:15;break;case 13:j=p;a=39;break;case 14:j=_lookdict(c,d,f);a=39;break;case 15:m=0;a=16;break;case 16:l=f;a=17;break;case 17:k=((k+1&4294967295)+k*4&4294967295)+l&4294967295;p=o+12*(n&k);a=HEAP[p+4]==0?18:22;break;case 18:a=m==0?19:20;break;case 19:h=p;a=21;break;case 20:h=m;a=21;break;case 21:j=h;a=39;break;case 22:var s=p;a=HEAP[p+4]==d?23:24;break;case 23:j=s;a=39;break;case 24:a=HEAP[s]!= -f?35:25;break;case 25:a=HEAP[p+4]==HEAP[_dummy]?35:26;break;case 26:r=HEAP[p+4];HEAP[r]+=1;q=_PyObject_RichCompareBool(r,d,2);HEAP[r]-=1;a=HEAP[r]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=28;break;case 28:a=q<0?29:30;break;case 29:j=0;a=39;break;case 30:a=HEAP[c+20]!=o?34:31;break;case 31:a=HEAP[p+4]!=r?34:32;break;case 32:a=q>0?33:38;break;case 33:j=p;a=39;break;case 34:j=_lookdict(c,d,f);a=39;break;case 35:a=HEAP[p+4]==HEAP[_dummy]?36:38;break;case 36:a=m==0?37:38;break;case 37:m= -p;a=38;break;case 38:l=l>>>0>>>5;a=17;break;case 39:return g=j;default:assert(0,"bad label: "+a)}} -function _lookdict_string(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;f=b;n=HEAP[c+16];o=HEAP[c+20];a=HEAP[d+4]!=_PyString_Type?1:2;break;case 1:HEAP[c+24]=64;j=_lookdict(c,d,f);a=26;break;case 2:k=n&f;p=o+12*k;a=HEAP[p+4]==0?4:3;break;case 3:a=HEAP[p+4]==d?4:5;break;case 4:j=p;a=26;break;case 5:var q=p;a=HEAP[p+4]==HEAP[_dummy]?6:7;break;case 6:m=q;a=11;break;case 7:a=HEAP[q]==f?8:10;break;case 8:a=__PyString_Eq(HEAP[p+4],d)!=0?9:10;break;case 9:j=p;a=26;break;case 10:m= -0;a=11;break;case 11:l=f;a=12;break;case 12:k=((k+1&4294967295)+k*4&4294967295)+l&4294967295;p=o+12*(n&k);a=HEAP[p+4]==0?13:17;break;case 13:a=m==0?14:15;break;case 14:h=p;a=16;break;case 15:h=m;a=16;break;case 16:j=h;a=26;break;case 17:a=HEAP[p+4]==d?21:18;break;case 18:a=HEAP[p]!=f?22:19;break;case 19:a=HEAP[p+4]==HEAP[_dummy]?22:20;break;case 20:a=__PyString_Eq(HEAP[p+4],d)!=0?21:22;break;case 21:j=p;a=26;break;case 22:a=HEAP[p+4]==HEAP[_dummy]?23:25;break;case 23:a=m==0?24:25;break;case 24:m= -p;a=25;break;case 25:l=l>>>0>>>5;a=12;break;case 26:return g=j;default:assert(0,"bad label: "+a)}} -function __PyDict_MaybeUntrack(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=HEAP[b+4]!=_PyDict_Type?17:1;break;case 1:e=HEAP[b+-12+8]==-2?17:2;break;case 2:a=b;f=HEAP[a+20];a=HEAP[a+16];d=0;e=15;break;case 3:c=HEAP[f+12*d+8];e=c==0?14:4;break;case 4:e=(HEAP[HEAP[c+4]+84]&16384)==0?9:5;break;case 5:e=HEAP[HEAP[c+4]+164]==0?7:6;break;case 6:e=FUNCTION_TABLE[HEAP[HEAP[c+4]+164]](c)!=0?7:9;break;case 7:e=HEAP[c+4]!=_PyTuple_Type?17:8;break;case 8:e=HEAP[c+-12+8]!=-2?17:9;break;case 9:e=(HEAP[HEAP[HEAP[f+ -12*d+4]+4]+84]&16384)==0?14:10;break;case 10:e=HEAP[HEAP[HEAP[f+12*d+4]+4]+164]==0?12:11;break;case 11:e=FUNCTION_TABLE[HEAP[HEAP[HEAP[f+12*d+4]+4]+164]](HEAP[f+12*d+4])!=0?12:14;break;case 12:e=HEAP[HEAP[f+12*d+4]+4]!=_PyTuple_Type?17:13;break;case 13:e=HEAP[HEAP[f+12*d+4]+-12+8]!=-2?17:14;break;case 14:d+=1;e=15;break;case 15:e=d<=a?3:16;break;case 16:e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=17;break;case 17:return;default:assert(0,"bad label: "+e)}} -function _insertdict(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;m=FUNCTION_TABLE[HEAP[d+24]](d,f,h);c=m==0?1:6;break;case 1:HEAP[f]-=1;c=HEAP[f]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);c=3;break;case 3:HEAP[j]-=1;c=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);c=5;break;case 5:k=-1;c=31;break;case 6:c=HEAP[d+-12+8]==-2?7:20;break;case 7:c=(HEAP[HEAP[f+4]+84]&16384)==0?12:8;break;case 8:c=HEAP[HEAP[f+4]+164]==0?10:9;break;case 9:c= -FUNCTION_TABLE[HEAP[HEAP[f+4]+164]](f)!=0?10:12;break;case 10:c=HEAP[f+4]!=_PyTuple_Type?17:11;break;case 11:c=HEAP[f+-12+8]!=-2?17:12;break;case 12:c=(HEAP[HEAP[j+4]+84]&16384)==0?20:13;break;case 13:c=HEAP[HEAP[j+4]+164]==0?15:14;break;case 14:c=FUNCTION_TABLE[HEAP[HEAP[j+4]+164]](j)!=0?15:20;break;case 15:c=HEAP[j+4]!=_PyTuple_Type?17:16;break;case 16:c=HEAP[j+-12+8]!=-2?17:20;break;case 17:n=d+-12;c=HEAP[n+8]!=-2?18:19;break;case 18:throw _Py_FatalError(__str11082),"Reached an unreachable!";case 19:HEAP[n+ -8]=-3;HEAP[n]=HEAP[__PyGC_generation0];HEAP[n+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[n+4]]=n;HEAP[HEAP[__PyGC_generation0]+4]=n;c=20;break;case 20:var o=m;c=HEAP[m+8]!=0?21:25;break;case 21:l=HEAP[o+8];HEAP[m+8]=j;HEAP[l]-=1;c=HEAP[l]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=23;break;case 23:HEAP[f]-=1;c=HEAP[f]==0?24:30;break;case 24:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);c=30;break;case 25:c=HEAP[o+4]==0?26:27;break;case 26:HEAP[d+8]+=1;c=29;break;case 27:c=HEAP[_dummy]; -HEAP[c]-=1;c=HEAP[c]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[HEAP[_dummy]+4]+24]](HEAP[_dummy]);c=29;break;case 29:HEAP[m+4]=f;HEAP[m]=h;HEAP[m+8]=j;HEAP[d+12]+=1;c=30;break;case 30:k=0;c=31;break;case 31:return g=k;default:assert(0,"bad label: "+c)}} -function _insertdict_clean(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;j=a;m=HEAP[d+16];n=HEAP[d+20];c=HEAP[d+-12+8]==-2?1:14;break;case 1:c=(HEAP[HEAP[f+4]+84]&16384)==0?6:2;break;case 2:c=HEAP[HEAP[f+4]+164]==0?4:3;break;case 3:c=FUNCTION_TABLE[HEAP[HEAP[f+4]+164]](f)!=0?4:6;break;case 4:c=HEAP[f+4]!=_PyTuple_Type?11:5;break;case 5:c=HEAP[f+-12+8]!=-2?11:6;break;case 6:c=(HEAP[HEAP[j+4]+84]&16384)==0?14:7;break;case 7:c=HEAP[HEAP[j+4]+164]==0?9:8;break;case 8:c= -FUNCTION_TABLE[HEAP[HEAP[j+4]+164]](j)!=0?9:14;break;case 9:c=HEAP[j+4]!=_PyTuple_Type?11:10;break;case 10:c=HEAP[j+-12+8]!=-2?11:14;break;case 11:p=d+-12;c=HEAP[p+8]!=-2?12:13;break;case 12:throw _Py_FatalError(__str11082),"Reached an unreachable!";case 13:HEAP[p+8]=-3;HEAP[p]=HEAP[__PyGC_generation0];HEAP[p+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[p+4]]=p;HEAP[HEAP[__PyGC_generation0]+4]=p;c=14;break;case 14:k=m&h;o=n+12*k;l=h;c=(HEAP[o+4]|0)!=0?15:16;break;case 15:k=k+1+k*4+l;o=n+12*(m&k); -l=l>>>0>>>5;c=(HEAP[o+4]|0)!=0?15:16;break;case 16:HEAP[d+8]+=1;HEAP[o+4]=f;HEAP[o]=h;HEAP[o+8]=j;HEAP[d+12]+=1;return;default:assert(0,"bad label: "+c)}} -function _dictresize(g,e){var b=STACKTOP;STACKTOP+=96;_memset(b,0,96);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q=b;d=g;f=e;k=8;8<=f?(c=-1,a=1):(c=-1,a=4);break;case 1:var r=(c==1?r:8)<<1;k=r;r<=f&r>0?a=c=1:(c=1,a=2);break;case 2:a=r<=0?3:4;break;case 3:_PyErr_NoMemory();j=-1;a=28;break;case 4:l=HEAP[d+20];p=d+28!=l;a=k==8?5:9;break;case 5:m=d+28;a=m==l?6:18;break;case 6:a=HEAP[d+8]==HEAP[d+12]?7:8;break;case 7:j=0;a=28;break;case 8:_llvm_memcpy_p0i8_p0i8_i32(q,l,96,1,0);l= -q;a=18;break;case 9:a=k<=178956970?10:15;break;case 10:a=k*12>=0?11:14;break;case 11:a=k*12!=0?12:13;break;case 12:h=k*12;a=16;break;case 13:h=1;a=16;break;case 14:m=0;a=17;break;case 15:m=0;a=17;break;case 16:m=a=_malloc(h);a=a==0?17:18;break;case 17:_PyErr_NoMemory();j=-1;a=28;break;case 18:HEAP[d+20]=m;HEAP[d+16]=k-1;_llvm_memset_p0i8_i32(m,0,k*12,1,0);HEAP[d+12]=0;o=HEAP[d+8];HEAP[d+8]=0;n=l;a=o>0?19:25;break;case 19:a=HEAP[n+8]!=0?20:21;break;case 20:o-=1;_insertdict_clean(d,HEAP[n+4],HEAP[n], -HEAP[n+8]);a=24;break;case 21:a=HEAP[n+4]!=0?22:24;break;case 22:o-=1;a=HEAP[n+4];HEAP[a]-=1;a=HEAP[a]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[HEAP[n+4]+4]+24]](HEAP[n+4]);a=24;break;case 24:n+=12;a=o>0?19:25;break;case 25:a=p!=0?26:27;break;case 26:_free(l);a=27;break;case 27:j=0;a=28;break;case 28:return c=j,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __PyDict_NewPresized(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=_PyDict_New();e=b>5?1:6;break;case 1:e=c!=0?2:6;break;case 2:e=_dictresize(c,b)==-1?3:6;break;case 3:HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:a=0;e=7;break;case 6:a=c;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _PyDict_GetItem(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4,n=b+8;a=g;c=e;h=a;a=(HEAP[HEAP[a+4]+84]&536870912)==0?1:2;break;case 1:d=0;a=13;break;case 2:a=HEAP[c+4]!=_PyString_Type?4:3;break;case 3:f=HEAP[c+12];a=f==-1?4:6;break;case 4:f=a=_PyObject_Hash(c);a=a==-1?5:6;break;case 5:_PyErr_Clear();d=0;a=13;break;case 6:k=HEAP[__PyThreadState_Current];a=HEAP[__PyThreadState_Current]==0?10:7;break;case 7:a=HEAP[k+40]==0?10:8; -break;case 8:_PyErr_Fetch(l,m,n);j=FUNCTION_TABLE[HEAP[h+24]](h,c,f);_PyErr_Restore(HEAP[l],HEAP[m],HEAP[n]);a=j==0?9:12;break;case 9:d=0;a=13;break;case 10:j=a=FUNCTION_TABLE[HEAP[h+24]](h,c,f);a=a==0?11:12;break;case 11:_PyErr_Clear();d=0;a=13;break;case 12:d=HEAP[j+8];a=13;break;case 13:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyDict_SetItem(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&536870912)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str21083,755);j=-1;a=16;break;case 2:k=c;var n=d;a=HEAP[d+4]==_PyString_Type?3:5;break;case 3:l=HEAP[n+12];a=l==-1?4:7;break;case 4:l=_PyObject_Hash(d);a=7;break;case 5:l=_PyObject_Hash(n);a=l==-1?6:7;break;case 6:j=-1;a=16;break;case 7:m=HEAP[k+12];HEAP[f]+=1;HEAP[d]+=1;a=_insertdict(k,d,l,f)!=0?8:9;break;case 8:j=-1;a=16; -break;case 9:a=HEAP[k+12]<=m?11:10;break;case 10:a=HEAP[k+8]*3<(HEAP[k+16]+1)*2?11:12;break;case 11:j=0;a=16;break;case 12:a=HEAP[k+12]>5E4?13:14;break;case 13:h=2;a=15;break;case 14:h=4;a=15;break;case 15:j=_dictresize(k,h*HEAP[k+12]);a=16;break;case 16:return g=j;default:assert(0,"bad label: "+a)}} -function _PyDict_DelItem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&536870912)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str21083,805);d=-1;b=15;break;case 2:b=HEAP[c+4]!=_PyString_Type?4:3;break;case 3:h=HEAP[c+12];b=h==-1?4:6;break;case 4:h=b=_PyObject_Hash(c);b=b==-1?5:6;break;case 5:d=-1;b=15;break;case 6:f=a;j=b=FUNCTION_TABLE[HEAP[f+24]](f,c,h);b=b==0?7:8;break;case 7:d=-1;b=15;break;case 8:b=HEAP[j+8]==0?9:10;break;case 9:_set_key_error(c); -d=-1;b=15;break;case 10:l=HEAP[j+4];HEAP[HEAP[_dummy]]+=1;HEAP[j+4]=HEAP[_dummy];k=HEAP[j+8];HEAP[j+8]=0;HEAP[f+12]-=1;HEAP[k]-=1;b=HEAP[k]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=12;break;case 12:HEAP[l]-=1;b=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=14;break;case 14:d=0;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}} -function _PyDict_Clear(g){var e=STACKTOP;STACKTOP+=96;_memset(e,0,96);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k=e;a=g;b=(HEAP[HEAP[a+4]+84]&536870912)==0?16:1;break;case 1:c=a;f=HEAP[c+20];h=c+28!=f;j=HEAP[c+8];b=h!=0?2:3;break;case 2:_llvm_memset_p0i8_i32(c+28,0,96,1,0);HEAP[c+8]=0;HEAP[c+12]=HEAP[c+8];HEAP[c+20]=c+28;HEAP[c+16]=7;b=6;break;case 3:b=j>0?5:4;break;case 4:d=f;b=14;break;case 5:_llvm_memcpy_p0i8_p0i8_i32(k,f,96,1,0);f=k;_llvm_memset_p0i8_i32(c+28,0,96,1,0);HEAP[c+8]=0;HEAP[c+ -12]=HEAP[c+8];HEAP[c+20]=c+28;HEAP[c+16]=7;b=6;break;case 6:d=f;b=j>0?7:14;break;case 7:b=HEAP[d+4]!=0?8:13;break;case 8:j-=1;b=HEAP[d+4];HEAP[b]-=1;b=HEAP[b]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+4]+4]+24]](HEAP[d+4]);b=10;break;case 10:b=HEAP[d+8]!=0?11:13;break;case 11:b=HEAP[d+8];HEAP[b]-=1;b=HEAP[b]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+8]+4]+24]](HEAP[d+8]);b=13;break;case 13:d+=12;b=j>0?7:14;break;case 14:b=h!=0?15:16;break;case 15:_free(f);b=16;break;case 16:STACKTOP= -e;return;default:assert(0,"bad label: "+b)}} -function _PyDict_Next(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;c=(HEAP[HEAP[d+4]+84]&536870912)==0?1:2;break;case 1:k=0;c=15;break;case 2:l=HEAP[f];c=l<0?3:4;break;case 3:k=0;c=15;break;case 4:n=HEAP[d+20];m=HEAP[d+16];c=6;break;case 5:l+=1;c=6;break;case 6:c=l>m?8:7;break;case 7:c=HEAP[n+12*l+8]==0?5:8;break;case 8:HEAP[f]=l+1;c=l>m?9:10;break;case 9:k=0;c=15;break;case 10:c=h!=0?11:12;break;case 11:HEAP[h]=HEAP[n+12*l+4];c=12;break;case 12:c=j!=0?13:14;break; -case 13:HEAP[j]=HEAP[n+12*l+8];c=14;break;case 14:k=1;c=15;break;case 15:return g=k;default:assert(0,"bad label: "+c)}} -function __PyDict_Next(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;l=c;d=(HEAP[HEAP[f+4]+84]&536870912)==0?1:2;break;case 1:m=0;d=15;break;case 2:n=HEAP[h];d=n<0?3:4;break;case 3:m=0;d=15;break;case 4:p=HEAP[f+20];o=HEAP[f+16];d=6;break;case 5:n+=1;d=6;break;case 6:d=n>o?8:7;break;case 7:d=HEAP[p+12*n+8]==0?5:8;break;case 8:HEAP[h]=n+1;d=n>o?9:10;break;case 9:m=0;d=15;break;case 10:HEAP[l]=HEAP[p+12*n];d=j!=0?11:12;break;case 11:HEAP[j]=HEAP[p+12*n+4];d=12; -break;case 12:d=k!=0?13:14;break;case 13:HEAP[k]=HEAP[p+12*n+8];d=14;break;case 14:m=1;d=15;break;case 15:return g=m;default:assert(0,"bad label: "+d)}} -function _dict_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[b+8];_PyObject_GC_UnTrack(b);e=HEAP[__PyTrash_delete_nesting]<=49?1:17;break;case 1:HEAP[__PyTrash_delete_nesting]+=1;a=HEAP[b+20];e=c>0?2:9;break;case 2:e=HEAP[a+4]!=0?3:8;break;case 3:c-=1;e=HEAP[a+4];HEAP[e]-=1;e=HEAP[e]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+4]+4]+24]](HEAP[a+4]);e=5;break;case 5:e=HEAP[a+8]!=0?6:8;break;case 6:e=HEAP[a+8];HEAP[e]-=1;e=HEAP[e]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+ -8]+4]+24]](HEAP[a+8]);e=8;break;case 8:a+=12;e=c>0?2:9;break;case 9:e=HEAP[b+20]!=b+28?10:11;break;case 10:_free(HEAP[b+20]);e=11;break;case 11:e=HEAP[_numfree1079]>79?14:12;break;case 12:e=HEAP[b+4]!=_PyDict_Type?14:13;break;case 13:e=HEAP[_numfree1079];HEAP[_free_list1080+e*4]=b;HEAP[_numfree1079]=e+1;e=15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);e=15;break;case 15:HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?16:18;break;case 16:__PyTrash_destroy_chain(); -e=18;break;case 17:__PyTrash_deposit_object(b);e=18;break;case 18:return;default:assert(0,"bad label: "+e)}} -function _dict_print(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;j=_Py_ReprEnter(a);b=j!=0?1:4;break;case 1:b=j<0?2:3;break;case 2:d=j;b=21;break;case 3:_fwrite(__str31084,1,5,c);d=0;b=21;break;case 4:_fputc(123,c);f=h=0;b=19;break;case 5:k=HEAP[a+20]+12*f;l=HEAP[k+8];b=l!=0?6:18;break;case 6:HEAP[l]+=1;b=h>0;h+=1;b=b!=0?7:8;break;case 7:_fwrite(__str41085,1,2,c);b=8;break;case 8:b=_PyObject_Print(HEAP[k+4],c,0)!=0?9:12;break;case 9:HEAP[l]-=1;b=HEAP[l]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[l+ -4]+24]](l);b=11;break;case 11:_Py_ReprLeave(a);d=-1;b=21;break;case 12:_fwrite(__str51086,1,2,c);b=_PyObject_Print(l,c,0)!=0;HEAP[l]-=1;var m=HEAP[l]==0;b=b?13:16;break;case 13:b=m?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=15;break;case 15:_Py_ReprLeave(a);d=-1;b=21;break;case 16:b=m?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=18;break;case 18:f+=1;b=19;break;case 19:b=HEAP[a+16]>=f?5:20;break;case 20:_fputc(125,c);_Py_ReprLeave(a);d=0;b=21;break;case 21:return a= -d;default:assert(0,"bad label: "+b)}} -function _dict_repr(g){var e=STACKTOP;STACKTOP+=20;_memset(e,0,20);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f=e,h=e+4,j=e+8,k,l,m,n=e+12,o=e+16,p;a=g;m=l=k=0;b=_Py_ReprEnter(a);HEAP[f]=b;b=HEAP[f]!=0?1:5;break;case 1:b=HEAP[f]>0?2:3;break;case 2:c=_PyString_FromString(__str31084);b=4;break;case 3:c=0;b=4;break;case 4:d=c;b=31;break;case 5:b=HEAP[a+12]==0?6:7;break;case 6:m=_PyString_FromString(__str61087);b=24;break;case 7:l=_PyList_New(0);b=l==0?27:8;break;case 8:k=_PyString_FromString(__str51086); -b=k==0?24:9;break;case 9:HEAP[f]=0;b=16;break;case 10:HEAP[HEAP[o]]+=1;b=_PyObject_Repr(HEAP[n]);HEAP[h]=b;_PyString_Concat(h,k);b=_PyObject_Repr(HEAP[o]);_PyString_ConcatAndDel(h,b);b=HEAP[o];HEAP[b]-=1;b=HEAP[b]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);b=12;break;case 12:b=HEAP[h]==0?24:13;break;case 13:p=_PyList_Append(l,HEAP[h]);b=HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=15;break;case 15:b=p<0?24:16; -break;case 16:b=_PyDict_Next(a,f,n,o)!=0?10:17;break;case 17:b=_PyString_FromString(__str71088);HEAP[h]=b;b=HEAP[h]==0?24:18;break;case 18:HEAP[j]=HEAP[HEAP[l+12]];_PyString_ConcatAndDel(h,HEAP[j]);HEAP[HEAP[l+12]]=HEAP[h];b=HEAP[h]==0?24:19;break;case 19:b=_PyString_FromString(__str81089);HEAP[h]=b;b=HEAP[h]==0?24:20;break;case 20:HEAP[j]=HEAP[HEAP[l+12]+4*(HEAP[l+8]-1)];_PyString_ConcatAndDel(j,HEAP[h]);HEAP[HEAP[l+12]+4*(HEAP[l+8]-1)]=HEAP[j];b=HEAP[j]==0?24:21;break;case 21:b=_PyString_FromString(__str41085); -HEAP[h]=b;b=HEAP[h]==0?24:22;break;case 22:m=__PyString_Join(HEAP[h],l);b=HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=24;break;case 24:b=l!=0?25:27;break;case 25:HEAP[l]-=1;b=HEAP[l]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=27;break;case 27:b=k!=0?28:30;break;case 28:HEAP[k]-=1;b=HEAP[k]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=30;break;case 30:_Py_ReprLeave(a);d=m;b=31;break;case 31:return g=d, -STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _dict_length(g){return HEAP[g+12]} -function _dict_subscript(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;b=HEAP[c+4]!=_PyString_Type?2:1;break;case 1:h=HEAP[c+12];b=h==-1?2:4;break;case 2:h=b=_PyObject_Hash(c);b=b==-1?3:4;break;case 3:d=0;b=16;break;case 4:j=b=FUNCTION_TABLE[HEAP[a+24]](a,c,h);b=b==0?5:6;break;case 5:d=0;b=16;break;case 6:f=HEAP[j+8];b=f==0?7:15;break;case 7:b=HEAP[a+4]!=_PyDict_Type?8:14;break;case 8:k=__PyObject_LookupSpecial(a,__str91090,_missing_str_9446);b=k!=0?9:12;break;case 9:l=_PyObject_CallFunctionObjArgs(k, -allocate([c,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[k]-=1;b=HEAP[k]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=11;break;case 11:d=l;b=16;break;case 12:b=_PyErr_Occurred()!=0?13:14;break;case 13:d=0;b=16;break;case 14:_set_key_error(c);d=0;b=16;break;case 15:HEAP[f]+=1;d=f;b=16;break;case 16:return a=d;default:assert(0,"bad label: "+b)}} -function _dict_ass_sub(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;a=e;d=b;var h=a;a=d==0?1:2;break;case 1:f=_PyDict_DelItem(c,h);a=3;break;case 2:f=_PyDict_SetItem(c,h,d);a=3;break;case 3:return g=f;default:assert(0,"bad label: "+a)}} -function _dict_keys(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k;b=g;e=1;break;case 1:k=HEAP[b+12];c=e=_PyList_New(k);e=e==0?2:3;break;case 2:a=0;e=11;break;case 3:e=HEAP[b+12]!=k?4:6;break;case 4:HEAP[c]-=1;e=HEAP[c]==0?5:1;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=1;break;case 6:h=HEAP[b+20];j=HEAP[b+16];f=d=0;e=d<=j?7:10;break;case 7:e=HEAP[h+12*d+8]!=0?8:9;break;case 8:e=HEAP[h+12*d+4];HEAP[e]+=1;HEAP[HEAP[c+12]+4*f]=e;f+=1;e=9;break;case 9:d+=1;e=d<=j?7:10;break;case 10:a= -c;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}} -function _dict_values(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k;b=g;e=1;break;case 1:k=HEAP[b+12];c=e=_PyList_New(k);e=e==0?2:3;break;case 2:a=0;e=11;break;case 3:e=HEAP[b+12]!=k?4:6;break;case 4:HEAP[c]-=1;e=HEAP[c]==0?5:1;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=1;break;case 6:h=HEAP[b+20];j=HEAP[b+16];f=d=0;e=d<=j?7:10;break;case 7:e=HEAP[h+12*d+8]!=0?8:9;break;case 8:e=HEAP[h+12*d+8];HEAP[e]+=1;HEAP[HEAP[c+12]+4*f]=e;f+=1;e=9;break;case 9:d+=1;e=d<=j?7:10;break;case 10:a= -c;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}} -function _dict_items(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m;b=g;e=1;break;case 1:h=HEAP[b+12];c=e=_PyList_New(h);e=e==0?2:3;break;case 2:a=0;e=18;break;case 3:d=0;e=9;break;case 4:k=_PyTuple_New(2);var n=c;e=k==0?5:8;break;case 5:HEAP[c]=HEAP[n]-1;e=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:a=0;e=18;break;case 8:HEAP[HEAP[n+12]+4*d]=k;d+=1;e=9;break;case 9:e=d=(HEAP[k+16]+1)*2?11:13;break;case 11:a=_dictresize(k,(HEAP[l+12]+HEAP[k+12])*2)!=0?12:13;break;case 12:j=-1;a=53;break;case 13:m=0;a=20;break;case 14:n=HEAP[l+20]+12*m;a=HEAP[n+8]!=0?15:19;break;case 15:a=h!=0?17:16;break;case 16:a=_PyDict_GetItem(d,HEAP[n+4])==0?17:19;break;case 17:HEAP[HEAP[n+4]]+=1;HEAP[HEAP[n+8]]+=1;a=_insertdict(k,HEAP[n+4],HEAP[n],HEAP[n+8])!=0?18:19;break;case 18:j=-1;a=53;break;case 19:m+=1;a=20;break;case 20:a=HEAP[l+16]>=m?14:52;break;case 21:o=_PyObject_CallMethod(s, -__str111092,0,allocate(1,"i32",ALLOC_STACK));a=o==0?22:23;break;case 22:j=-1;a=53;break;case 23:p=_PyObject_GetIter(o);HEAP[o]-=1;a=HEAP[o]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=25;break;case 25:a=p==0?26:27;break;case 26:j=-1;a=53;break;case 27:var t=_PyIter_Next(p);q=t;c=27;a=47;break;case 28:a=h==0?29:32;break;case 29:a=_PyDict_GetItem(d,q)!=0?30:32;break;case 30:HEAP[q]-=1;a=HEAP[q]==0?31:46;break;case 31:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=46;break;case 32:r=a=_PyObject_GetItem(f, -q);a=a==0?33:38;break;case 33:HEAP[p]-=1;a=HEAP[p]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=35;break;case 35:HEAP[q]-=1;a=HEAP[q]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=37;break;case 37:j=-1;a=53;break;case 38:u=_PyDict_SetItem(d,q,r);HEAP[q]-=1;a=HEAP[q]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=40;break;case 40:HEAP[r]-=1;a=HEAP[r]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=42;break;case 42:a=u<0?43:46;break; -case 43:HEAP[p]-=1;a=HEAP[p]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=45;break;case 45:j=-1;a=53;break;case 46:var v=_PyIter_Next(p);q=v;c=46;a=47;break;case 47:a=(c==46?v:t)!=0?28:48;break;case 48:HEAP[p]-=1;a=HEAP[p]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=50;break;case 50:a=_PyErr_Occurred()!=0?51:52;break;case 51:j=-1;a=53;break;case 52:j=0;a=53;break;case 53:return g=j;default:assert(0,"bad label: "+a)}} -function _dict_copy(g){return _PyDict_Copy(g)} -function _PyDict_Copy(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&536870912)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str21083,1624);a=0;e=10;break;case 3:c=_PyDict_New();e=c==0?4:5;break;case 4:a=0;e=10;break;case 5:e=_PyDict_Merge(c,b,1);var d=c;e=e==0?6:7;break;case 6:a=d;e=10;break;case 7:HEAP[c]=HEAP[d]-1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=9;break;case 9:a=0;e=10;break;case 10:return g=a;default:assert(0, -"bad label: "+e)}}function _PyDict_Size(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&536870912)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str21083,1640);a=-1;e=4;break;case 3:a=HEAP[b+12];e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _PyDict_Keys(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&536870912)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str21083,1650);a=0;e=4;break;case 3:a=_dict_keys(b);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _PyDict_Values(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&536870912)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str21083,1660);a=0;e=4;break;case 3:a=_dict_values(b);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _PyDict_Items(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&536870912)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str21083,1670);a=0;e=4;break;case 3:a=_dict_items(b);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _characterize(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;f=b;l=k=j=0;a=31;break;case 1:a=HEAP[HEAP[c+20]+12*l+8]==0?30:2;break;case 2:n=HEAP[HEAP[c+20]+12*l+4];HEAP[n]+=1;a=j!=0?3:11;break;case 3:m=_PyObject_RichCompareBool(j,n,0);a=m<0?4:6;break;case 4:HEAP[n]-=1;a=HEAP[n]==0?5:33;break;case 5:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=33;break;case 6:a=m>0?9:7;break;case 7:a=HEAP[c+16]=l?1:32;break;case 32:HEAP[f]=k;h=j;a=40;break;case 33:a=j!=0?34:36;break;case 34:HEAP[j]-=1;a=HEAP[j]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=36;break;case 36:a=k!=0?37:39;break;case 37:HEAP[k]-=1;a=HEAP[k]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=39;break;case 39:h=HEAP[f]=0;a=40;break;case 40:return g=h;default:assert(0,"bad label: "+a)}} -function _dict_compare(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4,n;c=g;d=e;a=HEAP[c+12]HEAP[d+12]?3:4;break;case 3:h=1;a=30;break;case 4:HEAP[m]=0;k=HEAP[m];j=_characterize(c,d,l);a=j==0?5:9;break;case 5:a=_PyErr_Occurred()!=0?6:7;break;case 6:f=-1;a=8;break;case 7:f=0;a=8;break;case 8:n=f;a=17;break;case 9:k=_characterize(d,c,m);a=k==0?11:10;break;case 10:n=0;a=14;break; -case 11:a=_PyErr_Occurred()!=0?12:13;break;case 12:n=-1;a=17;break;case 13:n=0;a=k!=0?14:15;break;case 14:n=a=_PyObject_Compare(j,k);a=a==0?15:17;break;case 15:a=HEAP[m]!=0?16:17;break;case 16:n=_PyObject_Compare(HEAP[l],HEAP[m]);a=17;break;case 17:a=j!=0?18:20;break;case 18:HEAP[j]-=1;a=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=20;break;case 20:a=k!=0?21:23;break;case 21:HEAP[k]-=1;a=HEAP[k]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=23;break;case 23:a= -HEAP[l]!=0?24:26;break;case 24:a=HEAP[l];HEAP[a]-=1;a=HEAP[a]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);a=26;break;case 26:a=HEAP[m]!=0?27:29;break;case 27:a=HEAP[m];HEAP[a]-=1;a=HEAP[a]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);a=29;break;case 29:h=n;a=30;break;case 30:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _dict_equal(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;b=HEAP[a+12]!=HEAP[c+12]?1:2;break;case 1:d=0;b=17;break;case 2:f=0;b=15;break;case 3:h=HEAP[HEAP[a+20]+12*f+8];b=h!=0?4:14;break;case 4:l=HEAP[HEAP[a+20]+12*f+4];HEAP[h]+=1;HEAP[l]+=1;k=_PyDict_GetItem(c,l);HEAP[l]-=1;b=HEAP[l]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=6;break;case 6:var m=h;b=k==0?7:10;break;case 7:HEAP[h]=HEAP[m]-1;b=HEAP[h]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);b=9;break;case 9:d=0;b=17;break;case 10:j=_PyObject_RichCompareBool(m,k,2);HEAP[h]-=1;b=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=12;break;case 12:b=j<=0?13:14;break;case 13:d=j;b=17;break;case 14:f+=1;b=15;break;case 15:b=HEAP[a+16]>=f?3:16;break;case 16:d=1;b=17;break;case 17:return b=d;default:assert(0,"bad label: "+b)}} -function _dict_richcompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&536870912)==0?2:1;break;case 1:a=(HEAP[HEAP[d+4]+84]&536870912)==0?2:3;break;case 2:l=__Py_NotImplementedStruct;a=14;break;case 3:a=f==2|f==3?4:10;break;case 4:k=_dict_equal(c,d);a=k<0?5:6;break;case 5:j=0;a=15;break;case 6:a=f==2==k?7:8;break;case 7:h=__Py_TrueStruct;a=9;break;case 8:h=__Py_ZeroStruct;a=9;break;case 9:l=h;a=14;break;case 10:a=HEAP[_Py_Py3kWarningFlag]!=0?11:13; -break;case 11:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str161097,1)<0?12:13;break;case 12:j=0;a=15;break;case 13:l=__Py_NotImplementedStruct;a=14;break;case 14:HEAP[l]+=1;j=l;a=15;break;case 15:return g=j;default:assert(0,"bad label: "+a)}} -function _dict_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[c+4]!=_PyString_Type?2:1;break;case 1:f=HEAP[c+12];b=f==-1?2:4;break;case 2:f=b=_PyObject_Hash(c);b=b==-1?3:4;break;case 3:d=0;b=7;break;case 4:h=b=FUNCTION_TABLE[HEAP[a+24]](a,c,f);b=b==0?5:6;break;case 5:d=0;b=7;break;case 6:d=_PyBool_FromLong(HEAP[h+8]!=0);b=7;break;case 7:return a=d;default:assert(0,"bad label: "+b)}} -function _dict_has_key(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str171098,1)<0?2:3;break;case 2:d=0;b=4;break;case 3:d=_dict_contains(a,c);b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}} -function _dict_get(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j,k,l;c=g;a=e;HEAP[h]=__Py_NoneStruct;j=0;a=_PyArg_UnpackTuple(a,__str181099,1,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=11;break;case 2:a=HEAP[HEAP[f]+4]!=_PyString_Type?4:3;break;case 3:k=HEAP[HEAP[f]+12];a=k==-1?4:6;break;case 4:k=a=_PyObject_Hash(HEAP[f]);a=a==-1?5:6;break;case 5:d=0;a= -11;break;case 6:l=a=FUNCTION_TABLE[HEAP[c+24]](c,HEAP[f],k);a=a==0?7:8;break;case 7:d=0;a=11;break;case 8:j=HEAP[l+8];a=j==0?9:10;break;case 9:j=HEAP[h];a=10;break;case 10:HEAP[j]+=1;d=j;a=11;break;case 11:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _dict_setdefault(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j,k,l;c=g;a=e;HEAP[h]=__Py_NoneStruct;j=0;a=_PyArg_UnpackTuple(a,__str191100,1,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=14;break;case 2:a=HEAP[HEAP[f]+4]!=_PyString_Type?4:3;break;case 3:k=HEAP[HEAP[f]+12];a=k==-1?4:6;break;case 4:k=a=_PyObject_Hash(HEAP[f]);a=a==-1?5:6;break;case 5:d= -0;a=14;break;case 6:l=a=FUNCTION_TABLE[HEAP[c+24]](c,HEAP[f],k);a=a==0?7:8;break;case 7:d=0;a=14;break;case 8:j=HEAP[l+8];a=j==0?9:12;break;case 9:j=HEAP[h];a=_PyDict_SetItem(c,HEAP[f],HEAP[h])!=0?10:11;break;case 10:j=0;a=13;break;case 11:a=j!=0?12:13;break;case 12:HEAP[j]+=1;a=13;break;case 13:d=j;a=14;break;case 14:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _dict_clear(g){_PyDict_Clear(g);HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct} -function _dict_pop(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4;c=g;a=e;HEAP[m]=0;a=_PyArg_UnpackTuple(a,__str201101,1,2,allocate([l,0,0,0,m,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=19;break;case 2:a=HEAP[c+12]==0?3:6;break;case 3:a=HEAP[m]!=0?4:5;break;case 4:HEAP[HEAP[m]]+=1;d=HEAP[m];a=19;break;case 5:_set_key_error(HEAP[l]);d=0;a=19;break;case 6:a=HEAP[HEAP[l]+4]!= -_PyString_Type?8:7;break;case 7:f=HEAP[HEAP[l]+12];a=f==-1?8:10;break;case 8:f=a=_PyObject_Hash(HEAP[l]);a=a==-1?9:10;break;case 9:d=0;a=19;break;case 10:h=a=FUNCTION_TABLE[HEAP[c+24]](c,HEAP[l],f);a=a==0?11:12;break;case 11:d=0;a=19;break;case 12:a=HEAP[h+8]==0?13:16;break;case 13:a=HEAP[m]!=0?14:15;break;case 14:HEAP[HEAP[m]]+=1;d=HEAP[m];a=19;break;case 15:_set_key_error(HEAP[l]);d=0;a=19;break;case 16:k=HEAP[h+4];HEAP[HEAP[_dummy]]+=1;HEAP[h+4]=HEAP[_dummy];j=HEAP[h+8];HEAP[h+8]=0;HEAP[c+12]-= -1;HEAP[k]-=1;a=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=18;break;case 18:d=j;a=19;break;case 19:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _dict_popitem(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=0;f=_PyTuple_New(2);e=f==0?1:2;break;case 1:a=0;e=14;break;case 2:e=HEAP[b+12]==0?3:6;break;case 3:HEAP[f]-=1;e=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=5;break;case 5:_PyErr_SetString(HEAP[_PyExc_KeyError],__str211102);a=0;e=14;break;case 6:d=HEAP[b+20];e=HEAP[d+8]==0?7:13;break;case 7:c=HEAP[d];e=HEAP[b+16]d?9:8;break;case 8:e=HEAP[f+12*c+8]==0?6:9;break;case 9:HEAP[b+16]=c+1;e=c>d?11:10;break;case 10:HEAP[b+24]-=1;e=HEAP[f+ -12*c+4];HEAP[e]+=1;a=e;e=14;break;case 11:HEAP[h]-=1;e=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=13;break;case 13:a=HEAP[b+8]=0;e=14;break;case 14:return g=a;default:assert(0,"bad label: "+e)}} -function _dictiter_iternextvalue(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;j=HEAP[b+8];e=j==0?1:2;break;case 1:a=0;e=13;break;case 2:e=HEAP[b+12]!=HEAP[j+12]?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str391123);HEAP[b+12]=-1;a=0;e=13;break;case 4:d=HEAP[b+16];f=HEAP[j+16];e=d<0?10:5;break;case 5:e=d>f?10:6;break;case 6:h=HEAP[j+20];e=8;break;case 7:d=k;e=d>f?10:8;break;case 8:c=HEAP[h+12*d+8];var k=d+1;e=HEAP[h+12*d+8]==0?7:9;break;case 9:HEAP[b+16]=k;HEAP[b+ -24]-=1;HEAP[c]+=1;a=c;e=13;break;case 10:HEAP[j]-=1;e=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=12;break;case 12:a=HEAP[b+8]=0;e=13;break;case 13:return g=a;default:assert(0,"bad label: "+e)}} -function _dictiter_iternextitem(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;c=HEAP[b+20];j=HEAP[b+8];e=j==0?1:2;break;case 1:a=0;e=21;break;case 2:e=HEAP[b+12]!=HEAP[j+12]?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str391123);HEAP[b+12]=-1;a=0;e=21;break;case 4:d=HEAP[b+16];e=d<0?18:5;break;case 5:h=HEAP[j+20];f=HEAP[j+16];e=7;break;case 6:d+=1;e=7;break;case 7:e=d>f?9:8;break;case 8:e=HEAP[h+12*d+8]==0?6:9;break;case 9:HEAP[b+16]=d+1;e=d>f?18:10;break;case 10:e= -HEAP[c]==1?11:15;break;case 11:HEAP[c]+=1;e=HEAP[c+12];HEAP[e]-=1;e=HEAP[e]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[HEAP[c+12]+4]+24]](HEAP[c+12]);e=13;break;case 13:e=HEAP[c+12+4];HEAP[e]-=1;e=HEAP[e]==0?14:17;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[c+12+4]+4]+24]](HEAP[c+12+4]);e=17;break;case 15:c=_PyTuple_New(2);e=c==0?16:17;break;case 16:a=0;e=21;break;case 17:HEAP[b+24]-=1;a=HEAP[h+12*d+4];e=HEAP[h+12*d+8];HEAP[a]+=1;HEAP[e]+=1;HEAP[c+12]=a;HEAP[c+12+4]=e;a=c;e=21;break;case 18:HEAP[j]-= -1;e=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=20;break;case 20:a=HEAP[b+8]=0;e=21;break;case 21:return g=a;default:assert(0,"bad label: "+e)}}function _dictview_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}} -function _dictview_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+8],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=0;a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}}function _dictview_len(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=0;e=HEAP[b+8]!=0?1:2;break;case 1:a=HEAP[HEAP[b+8]+12];e=2;break;case 2:return g=a;default:assert(0,"bad label: "+e)}} -function _dictview_new(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?1:2;break;case 1:__PyErr_BadInternalCall(__str21083,2761);d=0;b=9;break;case 2:b=(HEAP[HEAP[a+4]+84]&536870912)==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_TypeError],__str431127,allocate([HEAP[c+12],0,0,0,HEAP[HEAP[a+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=0;b=9;break;case 4:f=__PyObject_GC_New(c);b=f==0?5:6;break;case 5:d=0;b=9;break;case 6:HEAP[a]+=1;HEAP[f+8]=a;h=f+-12;b=HEAP[h+8]!=-2? -7:8;break;case 7:throw _Py_FatalError(__str11082),"Reached an unreachable!";case 8:HEAP[h+8]=-3;HEAP[h]=HEAP[__PyGC_generation0];HEAP[h+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[h+4]]=h;HEAP[HEAP[__PyGC_generation0]+4]=h;d=f;b=9;break;case 9:return b=d;default:assert(0,"bad label: "+b)}} -function _all_contained_in(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;a=_PyObject_GetIter(a);f=1;b=a==0?1:2;break;case 1:d=-1;b=11;break;case 2:h=b=_PyIter_Next(a);b=b==0?3:5;break;case 3:b=_PyErr_Occurred()!=0?4:8;break;case 4:f=-1;b=8;break;case 5:f=_PySequence_Contains(c,h);HEAP[h]-=1;b=HEAP[h]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=7;break;case 7:b=f<=0?8:2;break;case 8:HEAP[a]-=1;b=HEAP[a]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=10; -break;case 10:d=f;b=11;break;case 11:return c=d;default:assert(0,"bad label: "+b)}} -function _dictview_richcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;a=HEAP[f+4]!=_PySet_Type?1:7;break;case 1:a=HEAP[f+4]!=_PyFrozenSet_Type?2:7;break;case 2:a=_PyType_IsSubtype(HEAP[f+4],_PySet_Type)==0?3:7;break;case 3:a=_PyType_IsSubtype(HEAP[f+4],_PyFrozenSet_Type)==0?4:7;break;case 4:a=HEAP[f+4]!=_PyDictKeys_Type?5:7;break;case 5:a=HEAP[f+4]!=_PyDictItems_Type?6:7;break;case 6:HEAP[__Py_NotImplementedStruct]+=1;k=__Py_NotImplementedStruct;a=33;break; -case 7:l=a=_PyObject_Size(d);a=a<0?8:9;break;case 8:k=0;a=33;break;case 9:m=_PyObject_Size(f);a=m<0?10:11;break;case 10:k=0;a=33;break;case 11:n=0;a=h;a=a==0?17:a==1?19:a==2?12:a==3?12:a==4?21:a==5?23:31;break;case 12:a=l==m?13:14;break;case 13:n=_all_contained_in(d,f);a=14;break;case 14:a=h==3?15:25;break;case 15:a=n>=0?16:27;break;case 16:var o=n==0;n=o;c=16;a=29;break;case 17:a=lm?22:25;break;case 22:var r=_all_contained_in(f,d);n=r;c=22;a=26;break;case 23:a=l>=m?24:25;break;case 24:var u=_all_contained_in(f,d);n=u;c=24;a=26;break;case 25:var s=n,c=25;a=26;break;case 26:a=(c==25?s:c==22?r:c==20?q:c==18?p:u)<0?27:28;break;case 27:k=0;a=33;break;case 28:var t=n,c=28;a=29;break;case 29:a=(c==28?t:o)!=0?30:31;break;case 30:j=__Py_TrueStruct;a=32;break;case 31:j=__Py_ZeroStruct;a=32;break;case 32:k=j;HEAP[k]+=1;a=33;break;case 33:return g=k; -default:assert(0,"bad label: "+a)}} -function _dictview_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=_PySequence_List(b);e=c==0?1:2;break;case 1:a=0;e=7;break;case 2:d=_PyObject_Repr(c);f=_PyString_FromFormat(__str441128,allocate([HEAP[HEAP[b+4]+12],0,0,0,d+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[d]-=1;e=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=4;break;case 4:HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:a=f;e=7;break;case 7:return g= -a;default:assert(0,"bad label: "+e)}}function _dictkeys_iter(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_dictiter_new(HEAP[b+8],_PyDictIterKey_Type);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _dictkeys_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+8]==0?1:2;break;case 1:d=0;b=3;break;case 2:d=_PyDict_Contains(HEAP[a+8],c);b=3;break;case 3:return b=d;default:assert(0,"bad label: "+b)}} -function _dictviews_sub(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;d=_PySet_New(b);b=d==0?1:2;break;case 1:c=0;b=9;break;case 2:f=_PyObject_CallMethod(d,__str451129,__str461130,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=f==0?3:6;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=9;break;case 6:HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:c=d;b= -9;break;case 9:return a=c;default:assert(0,"bad label: "+b)}} -function _dictviews_and(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;d=_PySet_New(b);b=d==0?1:2;break;case 1:c=0;b=9;break;case 2:f=_PyObject_CallMethod(d,__str471131,__str461130,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=f==0?3:6;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=9;break;case 6:HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:c=d;b= -9;break;case 9:return a=c;default:assert(0,"bad label: "+b)}} -function _dictviews_or(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;d=_PySet_New(b);b=d==0?1:2;break;case 1:c=0;b=9;break;case 2:f=_PyObject_CallMethod(d,__str121093,__str461130,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=f==0?3:6;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=9;break;case 6:HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:c=d;b= -9;break;case 9:return a=c;default:assert(0,"bad label: "+b)}} -function _dictviews_xor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;d=_PySet_New(b);b=d==0?1:2;break;case 1:c=0;b=9;break;case 2:f=_PyObject_CallMethod(d,__str481132,__str461130,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=f==0?3:6;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=9;break;case 6:HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:c=d;b= -9;break;case 9:return a=c;default:assert(0,"bad label: "+b)}}function _dictkeys_new(g){return _dictview_new(g,_PyDictKeys_Type)}function _dictitems_iter(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_dictiter_new(HEAP[b+8],_PyDictIterItem_Type);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _dictitems_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[a+8]==0?1:2;break;case 1:d=0;b=10;break;case 2:b=(HEAP[HEAP[c+4]+84]&67108864)==0?4:3;break;case 3:b=HEAP[c+8]!=2?4:5;break;case 4:d=0;b=10;break;case 5:b=HEAP[c+12];f=HEAP[c+12+4];h=_PyDict_GetItem(HEAP[a+8],b);b=h==0?6:9;break;case 6:b=_PyErr_Occurred()!=0?7:8;break;case 7:d=-1;b=10;break;case 8:d=0;b=10;break;case 9:d=_PyObject_RichCompareBool(f,h,2);b=10;break;case 10:return a=d;default:assert(0, -"bad label: "+b)}}function _dictitems_new(g){return _dictview_new(g,_PyDictItems_Type)}function _dictvalues_iter(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_dictiter_new(HEAP[b+8],_PyDictIterValue_Type);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _dictvalues_new(g){return _dictview_new(g,_PyDictValues_Type)} -function __PyImport_GetDynLoadFunc(g,e,b,a){g=STACKTOP;STACKTOP+=614;_memset(g,0,614);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=g,m=g+258,n,o,p=g+518,q;d=e;f=b;h=a;n=0;c=_strchr(f,47)==0?1:2;break;case 1:_PyOS_snprintf(m,260,__str31151,allocate([f,0,0,0],["i8*",0,0,0],ALLOC_STACK));f=m;c=2;break;case 2:_PyOS_snprintf(l,258,__str41152,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=h!=0?3:11;break;case 3:o=_fileno(h);___01fstat64_(o,p);o=0;var r=p,u=p+88;c=8;break;case 4:c=HEAP[r]==HEAP[_handles+ -o*20]?5:7;break;case 5:c=HEAP[u]==HEAP[_handles+o*20+8]?6:7;break;case 6:j=_dlsym(HEAP[_handles+o*20+16],l);c=20;break;case 7:o+=1;c=8;break;case 8:c=o=0?1:6;break;case 1:c=_PySequence_GetItem(HEAP[b+12],d);e=c!=0?2:3;break;case 2:HEAP[b+8]-=1;a=c;e=10;break;case 3:e=_PyErr_ExceptionMatches(HEAP[_PyExc_IndexError])!=0?5:4;break;case 4:e=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?5:6;break;case 5:_PyErr_Clear();e=6;break;case 6:HEAP[b+8]=-1;e=HEAP[b+12]!=0?7:9;break;case 7:f=HEAP[b+12];HEAP[b+12]=0;HEAP[f]-=1;e=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);e=9;break;case 9:a=0;e=10;break;case 10:return g=a;default:assert(0,"bad label: "+e)}}function _reversed_len(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=HEAP[b+12]==0?1:2;break;case 1:c=_PyInt_FromLong(0);e=8;break;case 2:f=_PySequence_Size(HEAP[b+12]);e=f==-1?3:4;break;case 3:c=0;e=8;break;case 4:d=HEAP[b+8]+1;e=f>=d?5:6;break;case 5:a=d;e=7;break;case 6:a=0;e=7;break;case 7:c=_PyInt_FromSsize_t(a);e=8;break;case 8:return g=c;default:assert(0,"bad label: "+e)}} -function __inscode(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k;f=g;h=e;j=b;c=a;j=_PyString_FromString(j);var l=_PyInt_FromLong(c);k=l;j!=0?(d=-1,c=1):(d=-1,c=7);break;case 1:c=k!=0?2:3;break;case 2:_PyDict_SetItem(f,j,k);_PyDict_SetItem(h,k,j);c=3;break;case 3:c=j!=0?4:6;break;case 4:HEAP[j]-=1;c=HEAP[j]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);c=6;break;case 6:var m=k,d=6;c=7;break;case 7:c=(d==6?m:l)!=0?8:10;break;case 8:HEAP[k]-=1;c=HEAP[k]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);c=10;break;case 10:return;default:assert(0,"bad label: "+c)}} -function _initerrno(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;e=_Py_InitModule4(__str1167,_errno_methods,_errno__doc__,0,1013);g=e==0?6:1;break;case 1:b=_PyModule_GetDict(e);a=_PyDict_New();g=b==0?6:2;break;case 2:g=a==0?6:3;break;case 3:g=_PyDict_SetItemString(b,__str11168,a)<0?6:4;break;case 4:__inscode(b,a,__str21169,19);__inscode(b,a,__str31170,50);__inscode(b,a,__str41171,113);__inscode(b,a,__str51172,42);__inscode(b,a,__str61173,117);__inscode(b,a,__str71174,45);__inscode(b,a,__str81175, -51);__inscode(b,a,__str91176,61);__inscode(b,a,__str101177,15);__inscode(b,a,__str111178,38);__inscode(b,a,__str121179,32);__inscode(b,a,__str131180,22);__inscode(b,a,__str141181,75);__inscode(b,a,__str151182,68);__inscode(b,a,__str161183,4);__inscode(b,a,__str171184,87);__inscode(b,a,__str181185,39);__inscode(b,a,__str191186,105);__inscode(b,a,__str201187,71);__inscode(b,a,__str211188,66);__inscode(b,a,__str221189,119);__inscode(b,a,__str231190,10);__inscode(b,a,__str241191,40);__inscode(b,a,__str251192, -18);__inscode(b,a,__str261193,7);__inscode(b,a,__str271194,3);__inscode(b,a,__str281195,90);__inscode(b,a,__str291196,97);__inscode(b,a,__str301197,53);__inscode(b,a,__str311198,112);__inscode(b,a,__str321199,96);__inscode(b,a,__str331200,92);__inscode(b,a,__str341201,16);__inscode(b,a,__str351202,11);__inscode(b,a,__str361203,77);__inscode(b,a,__str371204,73);__inscode(b,a,__str381205,106);__inscode(b,a,__str391206,55);__inscode(b,a,__str401207,108);__inscode(b,a,__str411208,44);__inscode(b,a,__str421209, -80);__inscode(b,a,__str431210,64);__inscode(b,a,__str441211,52);__inscode(b,a,__str451212,9);__inscode(b,a,__str461213,72);__inscode(b,a,__str471214,5);__inscode(b,a,__str481215,49);__inscode(b,a,__str491216,91);__inscode(b,a,__str501217,28);__inscode(b,a,__str511218,8);__inscode(b,a,__str521219,114);__inscode(b,a,__str531220,100);__inscode(b,a,__str541221,118);__inscode(b,a,__str551222,13);__inscode(b,a,__str561223,48);__inscode(b,a,__str571224,84);__inscode(b,a,__str581225,20);__inscode(b,a,__str591226, -76);__inscode(b,a,__str601227,1);__inscode(b,a,__str611228,33);__inscode(b,a,__str621229,54);__inscode(b,a,__str631230,111);__inscode(b,a,__str641231,21);__inscode(b,a,__str651232,93);__inscode(b,a,__str661233,30);__inscode(b,a,__str671234,99);__inscode(b,a,__str681235,43);__inscode(b,a,__str691236,70);__inscode(b,a,__str701237,69);__inscode(b,a,__str711238,121);__inscode(b,a,__str721239,47);__inscode(b,a,__str731240,74);__inscode(b,a,__str741241,23);__inscode(b,a,__str751242,82);__inscode(b,a,__str761243, -29);__inscode(b,a,__str771244,67);__inscode(b,a,__str781245,102);__inscode(b,a,__str791246,110);__inscode(b,a,__str801247,2);__inscode(b,a,__str811248,17);__inscode(b,a,__str821249,122);__inscode(b,a,__str831250,60);__inscode(b,a,__str841251,57);__inscode(b,a,__str851252,56);__inscode(b,a,__str861253,79);__inscode(b,a,__str871254,14);__inscode(b,a,__str881255,27);__inscode(b,a,__str891256,35);__inscode(b,a,__str901257,107);__inscode(b,a,__str911258,89);__inscode(b,a,__str921259,81);__inscode(b,a, -__str931260,37);__inscode(b,a,__str941261,120);__inscode(b,a,__str951262,103);__inscode(b,a,__str961263,101);__inscode(b,a,__str971264,116);__inscode(b,a,__str981265,63);__inscode(b,a,__str991266,12);__inscode(b,a,__str1001267,88);__inscode(b,a,__str1011268,86);__inscode(b,a,__str1021269,31);__inscode(b,a,__str1031270,34);__inscode(b,a,__str1041271,83);__inscode(b,a,__str1051272,46);__inscode(b,a,__str1061273,104);__inscode(b,a,__str1071274,98);__inscode(b,a,__str1081275,95);__inscode(b,a,__str1091276, -78);__inscode(b,a,__str1101277,11);__inscode(b,a,__str1111278,36);__inscode(b,a,__str1121279,25);__inscode(b,a,__str1131280,85);__inscode(b,a,__str1141281,94);__inscode(b,a,__str1151282,62);__inscode(b,a,__str1161283,59);__inscode(b,a,__str1171284,35);__inscode(b,a,__str1181285,109);__inscode(b,a,__str1191286,24);__inscode(b,a,__str1201287,26);__inscode(b,a,__str1211288,115);__inscode(b,a,__str1221289,6);__inscode(b,a,__str1231290,65);HEAP[a]-=1;g=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[a+ -4]+24]](a);g=6;break;case 6:return;default:assert(0,"bad label: "+g)}} -function _PyErr_Restore(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;h=HEAP[__PyThreadState_Current];a=f!=0?1:5;break;case 1:a=HEAP[f+4]!=_PyTraceBack_Type?2:5;break;case 2:HEAP[f]-=1;a=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=4;break;case 4:f=0;a=5;break;case 5:j=HEAP[h+40];k=HEAP[h+44];l=HEAP[h+48];HEAP[h+40]=c;HEAP[h+44]=d;HEAP[h+48]=f;a=j!=0?6:8;break;case 6:HEAP[j]-=1;a=HEAP[j]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=8; -break;case 8:a=k!=0?9:11;break;case 9:HEAP[k]-=1;a=HEAP[k]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=11;break;case 11:a=l!=0?12:14;break;case 12:HEAP[l]-=1;a=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=14;break;case 14:return;default:assert(0,"bad label: "+a)}} -function _PyErr_SetObject(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d;c=g;d=e;c!=0?(a=-1,b=1):(a=-1,b=2);break;case 1:HEAP[c]+=1;var f=d,a=1;b=2;break;case 2:b=(a==1?f:e)!=0?3:4;break;case 3:HEAP[d]+=1;b=4;break;case 4:_PyErr_Restore(c,d,0);return;default:assert(0,"bad label: "+b)}}function _PyErr_SetNone(g){_PyErr_SetObject(g,0)} -function _PyErr_SetString(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=g;a=_PyString_FromString(e);_PyErr_SetObject(b,a);b=a!=0?1:3;break;case 1:HEAP[a]-=1;b=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=3;break;case 3:return;default:assert(0,"bad label: "+b)}}function _PyErr_Occurred(){return HEAP[HEAP[__PyThreadState_Current]+40]} -function _PyErr_GivenExceptionMatches(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m=b,n=b+4,o=b+8;c=g;d=e;a=c==0?2:1;break;case 1:a=d==0?2:3;break;case 2:h=0;a=26;break;case 3:a=(HEAP[HEAP[d+4]+84]&67108864)!=0?4:10;break;case 4:k=_PyTuple_Size(d);j=0;a=8;break;case 5:a=_PyErr_GivenExceptionMatches(c,HEAP[d+12+j*4])!=0?6:7;break;case 6:h=1;a=26;break;case 7:j+=1;a=8;break;case 8:a=j=0?25:18;break;case 18:a=(HEAP[c+84]&1073741824)!=0?19:25;break;case 19:a=HEAP[d+4]==_PyClass_Type?22:20;break;case 20:a=HEAP[HEAP[d+4]+84]>=0?25:21;break;case 21:a=(HEAP[d+84]&1073741824)!=0?22:25;break;case 22:_PyErr_Fetch(m, -n,o);a=_Py_GetRecursionLimit();_Py_SetRecursionLimit(a+5);l=_PyObject_IsSubclass(c,d);_Py_SetRecursionLimit(a);a=l==-1?23:24;break;case 23:_PyErr_WriteUnraisable(c);l=0;a=24;break;case 24:_PyErr_Restore(HEAP[m],HEAP[n],HEAP[o]);h=l;a=26;break;case 25:h=c==d;a=26;break;case 26:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _PyErr_ExceptionMatches(g){var e=_PyErr_Occurred();return _PyErr_GivenExceptionMatches(e,g)} -function _PyErr_NormalizeException(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;k=HEAP[d];l=HEAP[f];o=n=m=0;a=k==0?47:1;break;case 1:a=l==0?2:3;break;case 2:l=__Py_NoneStruct;HEAP[l]+=1;a=3;break;case 3:a=HEAP[l+4]==_PyInstance_Type?5:4;break;case 4:a=(HEAP[HEAP[l+4]+84]&1073741824)!=0?5:9;break;case 5:var r=l;a=HEAP[l+4]==_PyInstance_Type?6:7;break;case 6:j=HEAP[r+8];a=8;break;case 7:j=HEAP[r+4];a=8;break;case 8:m=j;a=9;break;case 9:a=HEAP[k+4]==_PyClass_Type? -12:10;break;case 10:a=HEAP[HEAP[k+4]+84]>=0?30:11;break;case 11:a=(HEAP[k+84]&1073741824)!=0?12:30;break;case 12:a=m==0?14:13;break;case 13:a=_PyObject_IsSubclass(m,k)==0?14:26;break;case 14:a=l==__Py_NoneStruct?15:16;break;case 15:var u=_PyTuple_New(0);p=u;c=15;a=19;break;case 16:var s=l;a=(HEAP[HEAP[l+4]+84]&67108864)!=0?17:18;break;case 17:HEAP[l]=HEAP[s]+1;var t=l;p=t;c=17;a=19;break;case 18:var v=_PyTuple_Pack(1,allocate([s,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));p=v;c=18;a=19;break; -case 19:a=(c==18?v:c==17?t:u)==0?31:20;break;case 20:q=_PyEval_CallObjectWithKeywords(k,p,0);HEAP[p]-=1;a=HEAP[p]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=22;break;case 22:a=q==0?31:23;break;case 23:HEAP[l]-=1;a=HEAP[l]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=25;break;case 25:l=q;a=30;break;case 26:a=m!=k?27:30;break;case 27:HEAP[k]-=1;a=HEAP[k]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=29;break;case 29:k=m;HEAP[k]+=1;a=30;break;case 30:HEAP[d]= -k;HEAP[f]=l;a=47;break;case 31:HEAP[k]-=1;a=HEAP[k]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=33;break;case 33:HEAP[l]-=1;a=HEAP[l]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=35;break;case 35:n=HEAP[h];_PyErr_Fetch(d,f,h);a=n!=0?36:40;break;case 36:a=HEAP[h]==0?37:38;break;case 37:HEAP[h]=n;a=40;break;case 38:HEAP[n]-=1;a=HEAP[n]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=40;break;case 40:o=HEAP[__PyThreadState_Current];HEAP[o+12]+=1;a= -HEAP[o+12];var w=_Py_GetRecursionLimit();a=a>w?41:46;break;case 41:HEAP[o+12]-=1;a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=43;break;case 43:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);a=45;break;case 45:HEAP[d]=HEAP[_PyExc_RuntimeError];HEAP[f]=HEAP[_PyExc_RecursionErrorInst];HEAP[HEAP[d]]+=1;HEAP[HEAP[f]]+=1;a=47;break;case 46:_PyErr_NormalizeException(d,f,h);HEAP[o+12]-=1; -a=47;break;case 47:return;default:assert(0,"bad label: "+a)}}function _PyErr_Fetch(g,e,b){var a;a=HEAP[__PyThreadState_Current];HEAP[g]=HEAP[a+40];HEAP[e]=HEAP[a+44];HEAP[b]=HEAP[a+48];HEAP[a+40]=0;HEAP[a+44]=0;HEAP[a+48]=0}function _PyErr_Clear(){_PyErr_Restore(0,0,0)}function _PyErr_BadArgument(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str1292);return 0} -function _PyErr_NoMemory(){var g;for(g=-1;;)switch(g){case -1:var e;g=_PyErr_ExceptionMatches(HEAP[_PyExc_MemoryError])!=0?1:2;break;case 1:e=0;g=6;break;case 2:g=HEAP[_PyExc_MemoryErrorInst]!=0?3:4;break;case 3:_PyErr_SetObject(HEAP[_PyExc_MemoryError],HEAP[_PyExc_MemoryErrorInst]);g=5;break;case 4:_PyErr_SetNone(HEAP[_PyExc_MemoryError]);g=5;break;case 5:e=0;g=6;break;case 6:return g=e;default:assert(0,"bad label: "+g)}} -function _PyErr_SetFromErrnoWithFilenameObject(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;b=___errno_location();var l=k=HEAP[b];l==4?(a=-1,b=1):(a=-1,b=4);break;case 1:b=_PyErr_CheckSignals()!=0?2:3;break;case 2:f=0;b=14;break;case 3:var m=k,a=3;b=4;break;case 4:b=(a==3?m:l)==0?5:6;break;case 5:j=__str11293;b=7;break;case 6:j=_strerror(k);b=7;break;case 7:var n=k,o=j;b=d!=0?8:9;break;case 8:var p=_Py_BuildValue(__str21294,allocate([n,0,0,0,o,0,0,0,d,0,0,0],["i32",0,0,0, -"i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));h=p;a=8;b=10;break;case 9:var q=_Py_BuildValue(__str31295,allocate([n,0,0,0,o,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=q;a=9;b=10;break;case 10:b=(a==9?q:p)!=0?11:13;break;case 11:_PyErr_SetObject(c,h);HEAP[h]-=1;b=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=13;break;case 13:f=0;b=14;break;case 14:return c=f;default:assert(0,"bad label: "+b)}} -function _PyErr_SetFromErrnoWithFilename(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=c!=0?1:2;break;case 1:d=_PyString_FromString(c);b=3;break;case 2:d=0;b=3;break;case 3:f=d;h=_PyErr_SetFromErrnoWithFilenameObject(a,f);b=f!=0?4:6;break;case 4:HEAP[f]-=1;b=HEAP[f]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=6;break;case 6:return b=h;default:assert(0,"bad label: "+b)}}function _PyErr_SetFromErrno(g){return _PyErr_SetFromErrnoWithFilenameObject(g,0)} -function __PyErr_BadInternalCall(g,e){_PyErr_Format(HEAP[_PyExc_SystemError],__str41296,allocate([g,0,0,0,e,0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK))}function _PyErr_BadInternalCall(){_PyErr_Format(HEAP[_PyExc_SystemError],__str51297,allocate(1,"i32",ALLOC_STACK))} -function _PyErr_Format(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=g;c=e;HEAP[d]=arguments[_PyErr_Format.length];c=_PyString_FromFormatV(c,HEAP[d]);_PyErr_SetObject(a,c);a=c!=0?1:3;break;case 1:HEAP[c]-=1;a=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=3;break;case 3:return STACKTOP=b,0;default:assert(0,"bad label: "+a)}} -function _PyErr_NewException(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;f=b;o=n=m=l=k=0;j=_strrchr(c,46);a=j==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str61298);h=0;a=26;break;case 2:a=d==0?3:4;break;case 3:d=HEAP[_PyExc_Exception];a=4;break;case 4:a=f==0?5:6;break;case 5:f=m=_PyDict_New();a=f==0?13:6;break;case 6:a=_PyDict_GetItemString(f,__str71299)==0?7:9;break;case 7:k=_PyString_FromStringAndSize(c,j-c);a=k==0?13:8;break;case 8:a=_PyDict_SetItemString(f, -__str71299,k)!=0?13:9;break;case 9:var p=d;a=(HEAP[HEAP[d+4]+84]&67108864)!=0?10:11;break;case 10:n=p;HEAP[n]+=1;a=12;break;case 11:n=_PyTuple_Pack(1,allocate([p,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));a=n==0?16:12;break;case 12:o=_PyObject_CallFunction(_PyType_Type,__str81300,allocate([j+1,0,0,0,n,0,0,0,f,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=13;break;case 13:a=n!=0?14:16;break;case 14:HEAP[n]-=1;a=HEAP[n]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[n+ -4]+24]](n);a=16;break;case 16:a=m!=0?17:19;break;case 17:HEAP[m]-=1;a=HEAP[m]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=19;break;case 19:a=l!=0?20:22;break;case 20:HEAP[l]-=1;a=HEAP[l]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=22;break;case 22:a=k!=0?23:25;break;case 23:HEAP[k]-=1;a=HEAP[k]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=25;break;case 25:h=o;a=26;break;case 26:return g=h;default:assert(0,"bad label: "+a)}} -function _PyErr_NewExceptionWithDoc(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;j=a;n=m=0;c=j==0?1:3;break;case 1:j=n=_PyDict_New();c=j==0?2:3;break;case 2:k=0;c=13;break;case 3:c=f!=0?4:8;break;case 4:o=_PyString_FromString(f);c=o==0?9:5;break;case 5:l=_PyDict_SetItemString(j,__str91301,o);HEAP[o]-=1;c=HEAP[o]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=7;break;case 7:c=l<0?9:8;break;case 8:m=_PyErr_NewException(d,h,j);c=9;break;case 9:c=n!=0?10: -12;break;case 10:HEAP[n]-=1;c=HEAP[n]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=12;break;case 12:k=m;c=13;break;case 13:return g=k;default:assert(0,"bad label: "+c)}} -function _PyErr_WriteUnraisable(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f=e,h=e+4,j=e+8,k,l,m,n;c=g;_PyErr_Fetch(f,h,j);d=_PySys_GetObject(__str101302);b=d!=0?1:22;break;case 1:_PyFile_WriteString(__str111303,d);b=HEAP[f]!=0?2:21;break;case 2:var o=HEAP[f];b=HEAP[HEAP[f]+4]==_PyClass_Type?3:4;break;case 3:var p=HEAP[o+16]+20,a=3;b=5;break;case 4:var q=HEAP[o+12],a=4;b=5;break;case 5:l=b=a==4?q:p;b=b!=0?6:8;break;case 6:m=_strrchr(l,46);b=m!= -0?7:8;break;case 7:l=m+1;b=8;break;case 8:k=b=_PyObject_GetAttrString(HEAP[f],__str71299);b=b==0?9:10;break;case 9:_PyFile_WriteString(__str121304,d);b=13;break;case 10:n=_PyString_AsString(k);b=n!=0?11:13;break;case 11:b=_strcmp(n,__str131305)!=0?12:13;break;case 12:_PyFile_WriteString(n,d);_PyFile_WriteString(__str141306,d);b=13;break;case 13:b=l==0?14:15;break;case 14:_PyFile_WriteString(__str121304,d);b=16;break;case 15:_PyFile_WriteString(l,d);b=16;break;case 16:b=HEAP[h]!=0&HEAP[h]!=__Py_NoneStruct? -17:18;break;case 17:_PyFile_WriteString(__str151307,d);_PyFile_WriteObject(HEAP[h],d,0);b=18;break;case 18:b=k!=0?19:21;break;case 19:HEAP[k]-=1;b=HEAP[k]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=21;break;case 21:_PyFile_WriteString(__str161308,d);_PyFile_WriteObject(c,d,0);_PyFile_WriteString(__str171309,d);_PyErr_Clear();b=22;break;case 22:b=HEAP[f]!=0?23:25;break;case 23:b=HEAP[f];HEAP[b]-=1;b=HEAP[b]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]); -b=25;break;case 25:b=HEAP[h]!=0?26:28;break;case 26:b=HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=28;break;case 28:b=HEAP[j]!=0?29:31;break;case 29:b=HEAP[j];HEAP[b]-=1;b=HEAP[b]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);b=31;break;case 31:STACKTOP=e;return;default:assert(0,"bad label: "+b)}} -function _PyErr_SyntaxLocation(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k;c=g;d=e;_PyErr_Fetch(f,h,j);_PyErr_NormalizeException(f,h,j);k=_PyInt_FromLong(d);a=k==0?1:2;break;case 1:_PyErr_Clear();a=6;break;case 2:a=_PyObject_SetAttrString(HEAP[h],__str181310,k)!=0?3:4;break;case 3:_PyErr_Clear();a=4;break;case 4:HEAP[k]-=1;a=HEAP[k]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=6;break;case 6:a=c!=0?7:18;break;case 7:k= -_PyString_FromString(c);a=k==0?8:9;break;case 8:_PyErr_Clear();a=13;break;case 9:a=_PyObject_SetAttrString(HEAP[h],__str191311,k)!=0?10:11;break;case 10:_PyErr_Clear();a=11;break;case 11:HEAP[k]-=1;a=HEAP[k]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=13;break;case 13:k=a=_PyErr_ProgramText(c,d);a=a!=0?14:18;break;case 14:a=_PyObject_SetAttrString(HEAP[h],__str201312,k)!=0?15:16;break;case 15:_PyErr_Clear();a=16;break;case 16:HEAP[k]-=1;a=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);a=18;break;case 18:a=_PyObject_SetAttrString(HEAP[h],__str211313,__Py_NoneStruct)!=0?19:20;break;case 19:_PyErr_Clear();a=20;break;case 20:a=HEAP[f]!=HEAP[_PyExc_SyntaxError]?21:31;break;case 21:a=_PyObject_HasAttrString(HEAP[h],__str221314)==0?22:28;break;case 22:k=_PyObject_Str(HEAP[h]);a=k!=0?23:27;break;case 23:a=_PyObject_SetAttrString(HEAP[h],__str221314,k)!=0?24:25;break;case 24:_PyErr_Clear();a=25;break;case 25:HEAP[k]-=1;a=HEAP[k]==0?26:28;break;case 26:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);a=28;break;case 27:_PyErr_Clear();a=28;break;case 28:a=_PyObject_HasAttrString(HEAP[h],__str231315)==0?29:31;break;case 29:a=_PyObject_SetAttrString(HEAP[h],__str231315,__Py_NoneStruct)!=0?30:31;break;case 30:_PyErr_Clear();a=31;break;case 31:_PyErr_Restore(HEAP[f],HEAP[h],HEAP[j]);STACKTOP=b;return;default:assert(0,"bad label: "+a)}} -function _PyErr_ProgramText(g,e){var b=STACKTOP;STACKTOP+=1E3;_memset(b,0,1E3);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l,m;c=g;d=e;a=c==0?3:1;break;case 1:a=HEAP[c]==0?3:2;break;case 2:a=d<=0?3:4;break;case 3:f=0;a=21;break;case 4:h=___01fopen64_(c,__str241316);a=h==0?5:6;break;case 5:f=0;a=21;break;case 6:j=0;a=j1?10:11;break;case 10:HEAP[c+20]=d;a=11;break;case 11:HEAP[HEAP[c+ -20]]+=1;f=0;a=12;break;case 12:return g=f;default:assert(0,"bad label: "+a)}}function _SystemExit_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+20]!=0?1:3;break;case 1:a=HEAP[b+20];HEAP[b+20]=0;HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:return g=_BaseException_clear(b);default:assert(0,"bad label: "+e)}} -function _SystemExit_dealloc(g){var e;e=g+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;_SystemExit_clear(g);FUNCTION_TABLE[HEAP[HEAP[g+4]+160]](g)}function _SystemExit_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+20]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+20],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=_BaseException_traverse(c,d,f);a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _EnvironmentError_init(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l=a+8,m,n,o,p;d=g;f=e;c=b;HEAP[j]=0;HEAP[k]=0;m=HEAP[l]=0;c=_BaseException_init(d,f,c)==-1?1:2;break;case 1:h=-1;c=23;break;case 2:c=HEAP[f+8]<=1?4:3;break;case 3:c=HEAP[f+8]>3?4:5;break;case 4:h=0;c=23;break;case 5:c=_PyArg_UnpackTuple(f,__str351376,2,3,allocate([j,0,0,0,k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**", -0,0,0],ALLOC_STACK))==0?6:7;break;case 6:h=-1;c=23;break;case 7:c=HEAP[d+20]!=0?8:10;break;case 8:n=HEAP[d+20];HEAP[d+20]=0;HEAP[n]-=1;c=HEAP[n]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=10;break;case 10:HEAP[d+20]=HEAP[j];HEAP[HEAP[d+20]]+=1;c=HEAP[d+24]!=0?11:13;break;case 11:o=HEAP[d+24];HEAP[d+24]=0;HEAP[o]-=1;c=HEAP[o]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=13;break;case 13:HEAP[d+24]=HEAP[k];HEAP[HEAP[d+24]]+=1;c=HEAP[l]!=0?14:22;break;case 14:c=HEAP[d+ -28]!=0?15:17;break;case 15:p=HEAP[d+28];HEAP[d+28]=0;HEAP[p]-=1;c=HEAP[p]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=17;break;case 17:HEAP[d+28]=HEAP[l];HEAP[HEAP[d+28]]+=1;m=c=_PyTuple_GetSlice(f,0,2);c=c==0?18:19;break;case 18:h=-1;c=23;break;case 19:c=HEAP[d+12];HEAP[c]-=1;c=HEAP[c]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+12]+4]+24]](HEAP[d+12]);c=21;break;case 21:HEAP[d+12]=m;c=22;break;case 22:h=0;c=23;break;case 23:return g=h,STACKTOP=a,g;default:assert(0, -"bad label: "+c)}} -function _EnvironmentError_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+20]!=0?1:3;break;case 1:a=HEAP[b+20];HEAP[b+20]=0;HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:e=HEAP[b+24]!=0?4:6;break;case 4:c=HEAP[b+24];HEAP[b+24]=0;HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:e=HEAP[b+28]!=0?7:9;break;case 7:d=HEAP[b+28];HEAP[b+28]=0;HEAP[d]-=1;e=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=9;break;case 9:return g=_BaseException_clear(b);default:assert(0,"bad label: "+e)}}function _EnvironmentError_dealloc(g){var e;e=g+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;_EnvironmentError_clear(g);FUNCTION_TABLE[HEAP[HEAP[g+4]+160]](g)} -function _EnvironmentError_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;a=HEAP[c+20]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+20],f);a=j!=0?2:3;break;case 2:h=j;a=10;break;case 3:a=HEAP[c+24]!=0?4:6;break;case 4:k=FUNCTION_TABLE[d](HEAP[c+24],f);a=k!=0?5:6;break;case 5:h=k;a=10;break;case 6:a=HEAP[c+28]!=0?7:9;break;case 7:l=FUNCTION_TABLE[d](HEAP[c+28],f);a=l!=0?8:9;break;case 8:h=l;a=10;break;case 9:h=_BaseException_traverse(c,d,f);a=10;break;case 10:return g= -h;default:assert(0,"bad label: "+a)}} -function _EnvironmentError_str(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k;b=g;c=0;e=HEAP[b+28]!=0?1:23;break;case 1:d=_PyString_FromString(__str361377);e=d==0?2:3;break;case 2:a=0;e=43;break;case 3:f=_PyObject_Repr(HEAP[b+28]);e=f==0?4:7;break;case 4:HEAP[d]-=1;e=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=6;break;case 6:a=0;e=43;break;case 7:h=_PyTuple_New(3);e=h==0?8:13;break;case 8:HEAP[f]-=1;e=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f); -e=10;break;case 10:HEAP[d]-=1;e=HEAP[d]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=12;break;case 12:a=0;e=43;break;case 13:e=HEAP[b+20]!=0?14:15;break;case 14:HEAP[HEAP[b+20]]+=1;HEAP[h+12]=HEAP[b+20];e=16;break;case 15:HEAP[__Py_NoneStruct]+=1;HEAP[h+12]=__Py_NoneStruct;e=16;break;case 16:e=HEAP[b+24]!=0?17:18;break;case 17:HEAP[HEAP[b+24]]+=1;HEAP[h+12+4]=HEAP[b+24];e=19;break;case 18:HEAP[__Py_NoneStruct]+=1;HEAP[h+12+4]=__Py_NoneStruct;e=19;break;case 19:HEAP[h+12+8]=f;c=_PyString_Format(d, -h);HEAP[d]-=1;e=HEAP[d]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=21;break;case 21:HEAP[h]-=1;e=HEAP[h]==0?22:42;break;case 22:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=42;break;case 23:e=HEAP[b+20]==0?41:24;break;case 24:e=HEAP[b+24]==0?41:25;break;case 25:j=_PyString_FromString(__str371378);e=j==0?26:27;break;case 26:a=0;e=43;break;case 27:k=_PyTuple_New(2);e=k==0?28:31;break;case 28:HEAP[j]-=1;e=HEAP[j]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=30;break; -case 30:a=0;e=43;break;case 31:e=HEAP[b+20]!=0?32:33;break;case 32:HEAP[HEAP[b+20]]+=1;HEAP[k+12]=HEAP[b+20];e=34;break;case 33:HEAP[__Py_NoneStruct]+=1;HEAP[k+12]=__Py_NoneStruct;e=34;break;case 34:e=HEAP[b+24]!=0?35:36;break;case 35:HEAP[HEAP[b+24]]+=1;HEAP[k+12+4]=HEAP[b+24];e=37;break;case 36:HEAP[__Py_NoneStruct]+=1;HEAP[k+12+4]=__Py_NoneStruct;e=37;break;case 37:c=_PyString_Format(j,k);HEAP[j]-=1;e=HEAP[j]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=39;break;case 39:HEAP[k]-= -1;e=HEAP[k]==0?40:42;break;case 40:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=42;break;case 41:c=_BaseException_str(b);e=42;break;case 42:a=c;e=43;break;case 43:return g=a;default:assert(0,"bad label: "+e)}} -function _EnvironmentError_reduce(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=HEAP[b+12];d=0;e=HEAP[c+8]!=2?5:1;break;case 1:e=HEAP[b+28]==0?5:2;break;case 2:c=_PyTuple_New(3);e=c==0?3:4;break;case 3:a=0;e=12;break;case 4:e=HEAP[HEAP[b+12]+12];HEAP[e]+=1;HEAP[c+12]=e;e=HEAP[HEAP[b+12]+12+4];HEAP[e]+=1;HEAP[c+12+4]=e;HEAP[HEAP[b+28]]+=1;HEAP[c+12+8]=HEAP[b+28];e=6;break;case 5:HEAP[c]+=1;e=6;break;case 6:var f=b;e=HEAP[b+8]!=0?7:8;break;case 7:d=_PyTuple_Pack(3,allocate([HEAP[b+4],0,0, -0,c,0,0,0,HEAP[f+8],0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=9;break;case 8:d=_PyTuple_Pack(2,allocate([HEAP[f+4],0,0,0,c,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=9;break;case 9:HEAP[c]-=1;e=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=11;break;case 11:a=d;e=12;break;case 12:return g=a;default:assert(0,"bad label: "+e)}} -function _SyntaxError_init(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;a=b;h=0;j=HEAP[d+8];a=_BaseException_init(c,d,a)==-1?1:2;break;case 1:f=-1;a=28;break;case 2:a=j>0?3:27;break;case 3:a=HEAP[c+20]!=0?4:6;break;case 4:k=HEAP[c+20];HEAP[c+20]=0;HEAP[k]-=1;a=HEAP[k]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=6;break;case 6:HEAP[c+20]=HEAP[d+12];HEAP[HEAP[c+20]]+=1;a=j==2?7:27;break;case 7:h=HEAP[d+12+4];h=_PySequence_Tuple(h);a=h==0?8:9;break;case 8:f= --1;a=28;break;case 9:a=HEAP[h+8]!=4?10:13;break;case 10:_PyErr_SetString(HEAP[_PyExc_IndexError],__str621409);HEAP[h]-=1;a=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=12;break;case 12:f=-1;a=28;break;case 13:a=HEAP[c+24]!=0?14:16;break;case 14:l=HEAP[c+24];HEAP[c+24]=0;HEAP[l]-=1;a=HEAP[l]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=16;break;case 16:HEAP[c+24]=HEAP[h+12];HEAP[HEAP[c+24]]+=1;a=HEAP[c+28]!=0?17:19;break;case 17:m=HEAP[c+28];HEAP[c+28]=0; -HEAP[m]-=1;a=HEAP[m]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=19;break;case 19:HEAP[c+28]=HEAP[h+12+4];HEAP[HEAP[c+28]]+=1;a=HEAP[c+32]!=0?20:22;break;case 20:n=HEAP[c+32];HEAP[c+32]=0;HEAP[n]-=1;a=HEAP[n]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=22;break;case 22:HEAP[c+32]=HEAP[h+12+8];HEAP[HEAP[c+32]]+=1;a=HEAP[c+36]!=0?23:25;break;case 23:o=HEAP[c+36];HEAP[c+36]=0;HEAP[o]-=1;a=HEAP[o]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=25; -break;case 25:HEAP[c+36]=HEAP[h+12+12];HEAP[HEAP[c+36]]+=1;HEAP[h]-=1;a=HEAP[h]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=27;break;case 27:f=0;a=28;break;case 28:return g=f;default:assert(0,"bad label: "+a)}} -function _SyntaxError_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;e=HEAP[b+20]!=0?1:3;break;case 1:a=HEAP[b+20];HEAP[b+20]=0;HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:e=HEAP[b+24]!=0?4:6;break;case 4:c=HEAP[b+24];HEAP[b+24]=0;HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:e=HEAP[b+28]!=0?7:9;break;case 7:d=HEAP[b+28];HEAP[b+28]=0;HEAP[d]-=1;e=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=9;break;case 9:e=HEAP[b+32]!=0?10:12;break;case 10:f=HEAP[b+32];HEAP[b+32]=0;HEAP[f]-=1;e=HEAP[f]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=12;break;case 12:e=HEAP[b+36]!=0?13:15;break;case 13:h=HEAP[b+36];HEAP[b+36]=0;HEAP[h]-=1;e=HEAP[h]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=15;break;case 15:e=HEAP[b+40]!=0?16:18;break;case 16:j=HEAP[b+40];HEAP[b+40]=0;HEAP[j]-=1;e=HEAP[j]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=18; -break;case 18:return g=_BaseException_clear(b);default:assert(0,"bad label: "+e)}}function _SyntaxError_dealloc(g){var e;e=g+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;_SyntaxError_clear(g);FUNCTION_TABLE[HEAP[HEAP[g+4]+160]](g)} -function _SyntaxError_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;f=b;a=HEAP[c+20]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+20],f);a=j!=0?2:3;break;case 2:h=j;a=19;break;case 3:a=HEAP[c+24]!=0?4:6;break;case 4:k=FUNCTION_TABLE[d](HEAP[c+24],f);a=k!=0?5:6;break;case 5:h=k;a=19;break;case 6:a=HEAP[c+28]!=0?7:9;break;case 7:l=FUNCTION_TABLE[d](HEAP[c+28],f);a=l!=0?8:9;break;case 8:h=l;a=19;break;case 9:a=HEAP[c+32]!=0?10:12;break;case 10:m=FUNCTION_TABLE[d](HEAP[c+ -32],f);a=m!=0?11:12;break;case 11:h=m;a=19;break;case 12:a=HEAP[c+36]!=0?13:15;break;case 13:n=FUNCTION_TABLE[d](HEAP[c+36],f);a=n!=0?14:15;break;case 14:h=n;a=19;break;case 15:a=HEAP[c+40]!=0?16:18;break;case 16:o=FUNCTION_TABLE[d](HEAP[c+40],f);a=o!=0?17:18;break;case 17:h=o;a=19;break;case 18:h=_BaseException_traverse(c,d,f);a=19;break;case 19:return g=h;default:assert(0,"bad label: "+a)}} -function _my_basename(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;c=a=e=g;e=e==0?2:1;break;case 1:e=HEAP[a]!=0?3:6;break;case 2:b=__str631410;e=7;break;case 3:e=HEAP[a]==47?4:5;break;case 4:c=a+1;e=5;break;case 5:a+=1;e=HEAP[a]!=0?3:6;break;case 6:b=c;e=7;break;case 7:return g=b;default:assert(0,"bad label: "+e)}} -function _SyntaxError_str(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n,o;a=g;n=m=l=0;e=HEAP[a+20]!=0?1:2;break;case 1:var p=_PyObject_Str(HEAP[a+20]);j=p;b=1;e=3;break;case 2:var q=_PyObject_Str(__Py_NoneStruct);j=q;b=2;e=3;break;case 3:e=(b==2?q:p)==0?4:5;break;case 4:h=0;e=40;break;case 5:e=(HEAP[HEAP[j+4]+84]&134217728)==0?6:7;break;case 6:h=j;e=40;break;case 7:e=HEAP[a+24]==0?10:8;break;case 8:e=(HEAP[HEAP[HEAP[a+24]+4]+84]&134217728)==0?10:9;break;case 9:f=1;e=11;break; -case 10:f=0;e=11;break;case 11:l=f;e=HEAP[a+28]==0?14:12;break;case 12:e=(HEAP[HEAP[HEAP[a+28]+4]+84]&8388608)==0?14:13;break;case 13:d=1;e=15;break;case 14:d=0;e=15;break;case 15:m=d;e=l==0?17:16;break;case 16:o=HEAP[j+8]+64;e=20;break;case 17:e=m==0?18:19;break;case 18:h=j;e=40;break;case 19:var r=HEAP[j+8]+64;o=r;l!=0?(b=19,e=20):(b=19,e=21);break;case 20:var u=o+HEAP[HEAP[a+24]+8];o=u;b=20;e=21;break;case 21:e=(b==20?u:r)>=0?22:25;break;case 22:e=o!=0?23:24;break;case 23:c=o;e=26;break;case 24:c= -1;e=26;break;case 25:n=0;e=27;break;case 26:n=e=_malloc(c);e=e==0?27:28;break;case 27:h=j;e=40;break;case 28:e=l==0?29:30;break;case 29:var s=a,b=29;e=34;break;case 30:e=m==0?32:31;break;case 31:e=_PyInt_AsLong(HEAP[a+28]);var t=_my_basename(HEAP[a+24]+20);_PyOS_snprintf(n,o,__str641411,allocate([j+20,0,0,0,t,0,0,0,e,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));e=35;break;case 32:var v=a;l!=0?(b=32,e=33):(b=32,e=34);break;case 33:e=_my_basename(HEAP[v+24]+20);_PyOS_snprintf(n,o,__str651412, -allocate([j+20,0,0,0,e,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=35;break;case 34:e=_PyInt_AsLong(HEAP[(b==29?s:v)+28]);_PyOS_snprintf(n,o,__str661413,allocate([j+20,0,0,0,e,0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));e=35;break;case 35:k=_PyString_FromString(n);_free(n);var w=j;e=k==0?36:37;break;case 36:k=w;e=39;break;case 37:HEAP[j]=HEAP[w]-1;e=HEAP[j]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=39;break;case 39:h=k;e=40;break;case 40:return g=h;default:assert(0,"bad label: "+ -e)}}function _KeyError_str(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=HEAP[HEAP[e+12]+8]==1?1:2;break;case 1:b=_PyObject_Repr(HEAP[HEAP[a+12]+12]);e=3;break;case 2:b=_BaseException_str(a);e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _get_string(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=a==0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_TypeError],__str931445,allocate([c,0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;b=5;break;case 2:b=(HEAP[HEAP[a+4]+84]&134217728)==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_TypeError],__str941446,allocate([c,0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;b=5;break;case 4:HEAP[a]+=1;d=a;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _set_string(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;d=_PyString_FromString(e);b=d==0?1:2;break;case 1:c=-1;b=6;break;case 2:b=HEAP[a]!=0?3:5;break;case 3:f=HEAP[a];HEAP[a]=0;HEAP[f]-=1;b=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=5;break;case 5:HEAP[a]=d;c=0;b=6;break;case 6:return b=c;default:assert(0,"bad label: "+b)}} -function _get_unicode(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=__str971449;e=b==0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_TypeError],__str931445,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;e=5;break;case 2:e=(HEAP[HEAP[b+4]+84]&268435456)==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_TypeError],__str951447,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;e=5;break;case 4:HEAP[b]+=1;c=b;e=5;break;case 5:return g=c;default:assert(0,"bad label: "+e)}} -function _PyUnicodeEncodeError_GetEncoding(g){return _get_string(HEAP[g+20],__str961448)}function _PyUnicodeDecodeError_GetEncoding(g){return _get_string(HEAP[g+20],__str961448)}function _PyUnicodeEncodeError_GetObject(g){return _get_unicode(HEAP[g+24])}function _PyUnicodeDecodeError_GetObject(g){return _get_string(HEAP[g+24],__str971449)}function _PyUnicodeTranslateError_GetObject(g){return _get_unicode(HEAP[g+24])} -function _PyUnicodeEncodeError_GetStart(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_get_unicode(HEAP[a+24]);b=h==0?1:2;break;case 1:d=-1;b=9;break;case 2:HEAP[c]=HEAP[a+28];f=HEAP[h+8];b=HEAP[c]<0?3:4;break;case 3:HEAP[c]=0;b=4;break;case 4:b=HEAP[c]>=f?5:6;break;case 5:HEAP[c]=f-1;b=6;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:d=0;b=9;break;case 9:return b=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeDecodeError_GetStart(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_get_string(HEAP[a+24],__str971449);b=h==0?1:2;break;case 1:d=-1;b=9;break;case 2:f=HEAP[h+8];HEAP[c]=HEAP[a+28];b=HEAP[c]<0?3:4;break;case 3:HEAP[c]=0;b=4;break;case 4:b=HEAP[c]>=f?5:6;break;case 5:HEAP[c]=f-1;b=6;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:d=0;b=9;break;case 9:return b=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeTranslateError_GetStart(g,e){return _PyUnicodeEncodeError_GetStart(g,e)}function _PyUnicodeEncodeError_SetStart(g,e){HEAP[g+28]=e;return 0}function _PyUnicodeDecodeError_SetStart(g,e){HEAP[g+28]=e;return 0}function _PyUnicodeTranslateError_SetStart(g,e){HEAP[g+28]=e;return 0} -function _PyUnicodeEncodeError_GetEnd(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_get_unicode(HEAP[a+24]);b=h==0?1:2;break;case 1:d=-1;b=9;break;case 2:HEAP[c]=HEAP[a+32];f=HEAP[h+8];b=HEAP[c]<=0?3:4;break;case 3:HEAP[c]=1;b=4;break;case 4:b=HEAP[c]>f?5:6;break;case 5:HEAP[c]=f;b=6;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:d=0;b=9;break;case 9:return b=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeDecodeError_GetEnd(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_get_string(HEAP[a+24],__str971449);b=h==0?1:2;break;case 1:d=-1;b=9;break;case 2:HEAP[c]=HEAP[a+32];f=HEAP[h+8];b=HEAP[c]<=0?3:4;break;case 3:HEAP[c]=1;b=4;break;case 4:b=HEAP[c]>f?5:6;break;case 5:HEAP[c]=f;b=6;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:d=0;b=9;break;case 9:return b=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeTranslateError_GetEnd(g,e){return _PyUnicodeEncodeError_GetEnd(g,e)}function _PyUnicodeEncodeError_SetEnd(g,e){HEAP[g+32]=e;return 0}function _PyUnicodeDecodeError_SetEnd(g,e){HEAP[g+32]=e;return 0}function _PyUnicodeTranslateError_SetEnd(g,e){HEAP[g+32]=e;return 0}function _PyUnicodeEncodeError_GetReason(g){return _get_string(HEAP[g+36],__str981450)}function _PyUnicodeDecodeError_GetReason(g){return _get_string(HEAP[g+36],__str981450)} -function _PyUnicodeTranslateError_GetReason(g){return _get_string(HEAP[g+36],__str981450)}function _PyUnicodeEncodeError_SetReason(g,e){return _set_string(g+36,e)}function _PyUnicodeDecodeError_SetReason(g,e){return _set_string(g+36,e)}function _PyUnicodeTranslateError_SetReason(g,e){return _set_string(g+36,e)} -function _UnicodeError_init(g,e,b,a){for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=a;b=HEAP[c+20]!=0?1:3;break;case 1:j=HEAP[c+20];HEAP[c+20]=0;HEAP[j]-=1;b=HEAP[j]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=3;break;case 3:b=HEAP[c+24]!=0?4:6;break;case 4:k=HEAP[c+24];HEAP[c+24]=0;HEAP[k]-=1;b=HEAP[k]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=6;break;case 6:b=HEAP[c+36]!=0?7:9;break;case 7:l=HEAP[c+36];HEAP[c+36]=0;HEAP[l]-=1;b=HEAP[l]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[l+ -4]+24]](l);b=9;break;case 9:var b=__PyArg_ParseTuple_SizeT(d,__str991451,allocate([_PyString_Type,0,0,0,c+20,0,0,0,f,0,0,0,c+24,0,0,0,c+28,0,0,0,c+32,0,0,0,_PyString_Type,0,0,0,c+36,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK)),m=c,b=b==0?10:11;break;case 10:HEAP[m+36]=0;HEAP[c+24]=HEAP[c+36];HEAP[c+20]=HEAP[c+24]; -h=-1;b=12;break;case 11:HEAP[HEAP[m+20]]+=1;HEAP[HEAP[c+24]]+=1;HEAP[HEAP[c+36]]+=1;h=0;b=12;break;case 12:return g=h;default:assert(0,"bad label: "+b)}} -function _UnicodeError_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+20]!=0?1:3;break;case 1:a=HEAP[b+20];HEAP[b+20]=0;HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:e=HEAP[b+24]!=0?4:6;break;case 4:c=HEAP[b+24];HEAP[b+24]=0;HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:e=HEAP[b+36]!=0?7:9;break;case 7:d=HEAP[b+36];HEAP[b+36]=0;HEAP[d]-=1;e=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=9;break;case 9:return g=_BaseException_clear(b);default:assert(0,"bad label: "+e)}}function _UnicodeError_dealloc(g){var e;e=g+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;_UnicodeError_clear(g);FUNCTION_TABLE[HEAP[HEAP[g+4]+160]](g)} -function _UnicodeError_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;a=HEAP[c+20]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+20],f);a=j!=0?2:3;break;case 2:h=j;a=10;break;case 3:a=HEAP[c+24]!=0?4:6;break;case 4:k=FUNCTION_TABLE[d](HEAP[c+24],f);a=k!=0?5:6;break;case 5:h=k;a=10;break;case 6:a=HEAP[c+36]!=0?7:9;break;case 7:l=FUNCTION_TABLE[d](HEAP[c+36],f);a=l!=0?8:9;break;case 8:h=l;a=10;break;case 9:h=_BaseException_traverse(c,d,f);a=10;break;case 10:return g= -h;default:assert(0,"bad label: "+a)}}function _UnicodeEncodeError_init(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=_BaseException_init(c,d,f)==-1?1:2;break;case 1:h=-1;a=3;break;case 2:h=_UnicodeError_init(c,d,f,_PyUnicode_Type);a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _UnicodeEncodeError_str(g){var e=STACKTOP;STACKTOP+=20;_memset(e,0,20);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j=e;a=g;f=c=0;d=_PyObject_Str(HEAP[a+36]);b=d==0?14:1;break;case 1:f=_PyObject_Str(HEAP[a+20]);b=f==0?11:2;break;case 2:b=HEAP[a+28]>=HEAP[HEAP[a+24]+8]?10:3;break;case 3:b=HEAP[a+32]!=HEAP[a+28]+1?10:4;break;case 4:h=HEAP[HEAP[HEAP[a+24]+12]+2*HEAP[a+28]];b=h<=255?5:6;break;case 5:_PyOS_snprintf(j,20,__str1071459,allocate([h,0,0,0],["i32",0,0,0],ALLOC_STACK));b=9;break; -case 6:var k=j,l=h;b=h<=65535?7:8;break;case 7:_PyOS_snprintf(k,20,__str1081460,allocate([l,0,0,0],["i32",0,0,0],ALLOC_STACK));b=9;break;case 8:_PyOS_snprintf(k,20,__str1091461,allocate([l,0,0,0],["i32",0,0,0],ALLOC_STACK));b=9;break;case 9:c=_PyString_FromFormat(__str1101462,allocate([f+20,0,0,0,j,0,0,0,HEAP[a+28],0,0,0,d+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=11;break;case 10:c=_PyString_FromFormat(__str1111463,allocate([f+20,0,0,0,HEAP[a+28],0,0,0,HEAP[a+32]- -1,0,0,0,d+20,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=11;break;case 11:b=d!=0?12:14;break;case 12:HEAP[d]-=1;b=HEAP[d]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=14;break;case 14:b=f!=0?15:17;break;case 15:HEAP[f]-=1;b=HEAP[f]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=17;break;case 17:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyUnicodeEncodeError_Create(g,e,b,a,c,d){return __PyObject_CallFunction_SizeT(HEAP[_PyExc_UnicodeEncodeError],__str1141467,allocate([g,0,0,0,e,0,0,0,b,0,0,0,a,0,0,0,c,0,0,0,d,0,0,0],["i8*",0,0,0,"i16*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK))} -function _UnicodeDecodeError_init(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=_BaseException_init(c,d,f)==-1?1:2;break;case 1:h=-1;a=3;break;case 2:h=_UnicodeError_init(c,d,f,_PyString_Type);a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _UnicodeDecodeError_str(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=e;a=g;f=c=0;d=_PyObject_Str(HEAP[a+36]);b=d==0?9:1;break;case 1:f=_PyObject_Str(HEAP[a+20]);b=f==0?6:2;break;case 2:b=HEAP[a+28]>=HEAP[HEAP[a+24]+8]?5:3;break;case 3:b=HEAP[a+32]!=HEAP[a+28]+1?5:4;break;case 4:_PyOS_snprintf(h,4,__str1151468,allocate([HEAP[HEAP[a+24]+20+HEAP[a+28]]&255,0,0,0],["i32",0,0,0],ALLOC_STACK));c=_PyString_FromFormat(__str1161469,allocate([f+20,0, -0,0,h,0,0,0,HEAP[a+28],0,0,0,d+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=6;break;case 5:c=_PyString_FromFormat(__str1171470,allocate([f+20,0,0,0,HEAP[a+28],0,0,0,HEAP[a+32]-1,0,0,0,d+20,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=6;break;case 6:b=d!=0?7:9;break;case 7:HEAP[d]-=1;b=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=9;break;case 9:b=f!=0?10:12;break;case 10:HEAP[f]-=1;b=HEAP[f]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=12;break;case 12:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _PyUnicodeDecodeError_Create(g,e,b,a,c,d){return __PyObject_CallFunction_SizeT(HEAP[_PyExc_UnicodeDecodeError],__str1201474,allocate([g,0,0,0,e,0,0,0,b,0,0,0,a,0,0,0,c,0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK))} -function _UnicodeTranslateError_init(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;a=_BaseException_init(c,d,b)==-1?1:2;break;case 1:f=-1;a=11;break;case 2:a=HEAP[c+24]!=0?3:5;break;case 3:h=HEAP[c+24];HEAP[c+24]=0;HEAP[h]-=1;a=HEAP[h]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=5;break;case 5:a=HEAP[c+36]!=0?6:8;break;case 6:j=HEAP[c+36];HEAP[c+36]=0;HEAP[j]-=1;a=HEAP[j]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=8;break;case 8:a=__PyArg_ParseTuple_SizeT(d, -__str1211475,allocate([_PyUnicode_Type,0,0,0,c+24,0,0,0,c+28,0,0,0,c+32,0,0,0,_PyString_Type,0,0,0,c+36,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK));var k=c;a=a==0?9:10;break;case 9:HEAP[k+36]=0;HEAP[c+24]=HEAP[c+36];f=-1;a=11;break;case 10:HEAP[HEAP[k+24]]+=1;HEAP[HEAP[c+36]]+=1;f=0;a=11;break;case 11:return g=f;default:assert(0,"bad label: "+a)}} -function _UnicodeTranslateError_str(g){var e=STACKTOP;STACKTOP+=20;_memset(e,0,20);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=e;a=g;c=0;d=_PyObject_Str(HEAP[a+36]);b=d==0?13:1;break;case 1:b=HEAP[a+28]>=HEAP[HEAP[a+24]+8]?9:2;break;case 2:b=HEAP[a+32]!=HEAP[a+28]+1?9:3;break;case 3:f=HEAP[HEAP[HEAP[a+24]+12]+2*HEAP[a+28]];b=f<=255?4:5;break;case 4:_PyOS_snprintf(h,20,__str1071459,allocate([f,0,0,0],["i32",0,0,0],ALLOC_STACK));b=8;break;case 5:var j=h,k=f;b=f<=65535?6:7;break;case 6:_PyOS_snprintf(j, -20,__str1081460,allocate([k,0,0,0],["i32",0,0,0],ALLOC_STACK));b=8;break;case 7:_PyOS_snprintf(j,20,__str1091461,allocate([k,0,0,0],["i32",0,0,0],ALLOC_STACK));b=8;break;case 8:c=_PyString_FromFormat(__str1221476,allocate([h,0,0,0,HEAP[a+28],0,0,0,d+20,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=10;break;case 9:c=_PyString_FromFormat(__str1231477,allocate([HEAP[a+28],0,0,0,HEAP[a+32]-1,0,0,0,d+20,0,0,0],["i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=10;break;case 10:b=d!=0? -11:13;break;case 11:HEAP[d]-=1;b=HEAP[d]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=13;break;case 13:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _PyUnicodeTranslateError_Create(g,e,b,a,c){return __PyObject_CallFunction_SizeT(HEAP[_PyExc_UnicodeTranslateError],__str1261481,allocate([g,0,0,0,e,0,0,0,b,0,0,0,a,0,0,0,c,0,0,0],["i16*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK))} -function __PyExc_Init(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;g=_PyType_Ready(__PyExc_BaseException)<0?1:2;break;case 1:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 2:g=_PyType_Ready(__PyExc_Exception)<0?3:4;break;case 3:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 4:g=_PyType_Ready(__PyExc_StandardError)<0?5:6;break;case 5:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 6:g=_PyType_Ready(__PyExc_TypeError)<0?7:8;break;case 7:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 8:g=_PyType_Ready(__PyExc_StopIteration)<0?9:10;break;case 9:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 10:g=_PyType_Ready(__PyExc_GeneratorExit)<0?11:12;break;case 11:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 12:g=_PyType_Ready(__PyExc_SystemExit)<0?13:14;break;case 13:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 14:g=_PyType_Ready(__PyExc_KeyboardInterrupt)<0?15:16;break;case 15:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 16:g=_PyType_Ready(__PyExc_ImportError)<0?17:18;break;case 17:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 18:g=_PyType_Ready(__PyExc_EnvironmentError)<0?19:20;break;case 19:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 20:g=_PyType_Ready(__PyExc_IOError)<0?21:22;break;case 21:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 22:g=_PyType_Ready(__PyExc_OSError)<0?23:24;break;case 23:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 24:g=_PyType_Ready(__PyExc_EOFError)<0?25:26;break;case 25:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 26:g=_PyType_Ready(__PyExc_RuntimeError)<0?27:28;break;case 27:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 28:g=_PyType_Ready(__PyExc_NotImplementedError)<0?29:30;break;case 29:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 30:g=_PyType_Ready(__PyExc_NameError)<0?31:32;break;case 31:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 32:g=_PyType_Ready(__PyExc_UnboundLocalError)<0?33:34;break;case 33:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 34:g=_PyType_Ready(__PyExc_AttributeError)<0?35:36;break;case 35:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 36:g=_PyType_Ready(__PyExc_SyntaxError)<0?37:38;break;case 37:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 38:g=_PyType_Ready(__PyExc_IndentationError)<0?39:40;break;case 39:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 40:g=_PyType_Ready(__PyExc_TabError)<0?41:42;break;case 41:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 42:g=_PyType_Ready(__PyExc_LookupError)<0?43:44;break;case 43:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 44:g=_PyType_Ready(__PyExc_IndexError)<0?45:46;break;case 45:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 46:g=_PyType_Ready(__PyExc_KeyError)<0?47:48;break;case 47:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 48:g=_PyType_Ready(__PyExc_ValueError)<0?49:50;break;case 49:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 50:g=_PyType_Ready(__PyExc_UnicodeError)<0?51:52;break;case 51:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 52:g=_PyType_Ready(__PyExc_UnicodeEncodeError)<0?53:54;break;case 53:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 54:g=_PyType_Ready(__PyExc_UnicodeDecodeError)<0?55:56;break;case 55:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 56:g=_PyType_Ready(__PyExc_UnicodeTranslateError)<0?57:58;break;case 57:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 58:g=_PyType_Ready(__PyExc_AssertionError)<0?59:60;break;case 59:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 60:g=_PyType_Ready(__PyExc_ArithmeticError)<0?61:62;break;case 61:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 62:g=_PyType_Ready(__PyExc_FloatingPointError)<0?63:64;break;case 63:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 64:g=_PyType_Ready(__PyExc_OverflowError)<0?65:66;break;case 65:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 66:g=_PyType_Ready(__PyExc_ZeroDivisionError)<0?67:68;break;case 67:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 68:g=_PyType_Ready(__PyExc_SystemError)<0?69:70;break;case 69:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 70:g=_PyType_Ready(__PyExc_ReferenceError)<0?71:72;break;case 71:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 72:g=_PyType_Ready(__PyExc_MemoryError)<0?73:74;break;case 73:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 74:g=_PyType_Ready(__PyExc_BufferError)<0?75:76;break;case 75:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 76:g=_PyType_Ready(__PyExc_Warning)<0?77:78;break;case 77:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 78:g=_PyType_Ready(__PyExc_UserWarning)<0?79:80;break;case 79:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 80:g=_PyType_Ready(__PyExc_DeprecationWarning)<0?81:82;break;case 81:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 82:g=_PyType_Ready(__PyExc_PendingDeprecationWarning)<0?83:84;break;case 83:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 84:g=_PyType_Ready(__PyExc_SyntaxWarning)<0?85:86;break;case 85:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 86:g=_PyType_Ready(__PyExc_RuntimeWarning)<0?87:88;break;case 87:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 88:g=_PyType_Ready(__PyExc_FutureWarning)<0?89:90;break;case 89:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 90:g=_PyType_Ready(__PyExc_ImportWarning)<0?91:92;break;case 91:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 92:g=_PyType_Ready(__PyExc_UnicodeWarning)<0?93:94;break;case 93:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 94:g=_PyType_Ready(__PyExc_BytesWarning)<0?95:96;break;case 95:throw _Py_FatalError(__str1651530), -"Reached an unreachable!";case 96:e=_Py_InitModule4(__str1661531,_functions,_exceptions_doc,0,1013);g=e==0?213:97;break;case 97:b=_PyImport_ImportModule(__str1671532);g=b==0?98:99;break;case 98:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 99:a=_PyModule_GetDict(b);g=a==0?100:101;break;case 100:throw _Py_FatalError(__str1651530),"Reached an unreachable!";case 101:HEAP[HEAP[_PyExc_BaseException]]+=1;_PyModule_AddObject(e,__str1681533,HEAP[_PyExc_BaseException]);g=_PyDict_SetItemString(a, -__str1681533,HEAP[_PyExc_BaseException])!=0?102:103;break;case 102:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 103:HEAP[HEAP[_PyExc_Exception]]+=1;_PyModule_AddObject(e,__str1701535,HEAP[_PyExc_Exception]);g=_PyDict_SetItemString(a,__str1701535,HEAP[_PyExc_Exception])!=0?104:105;break;case 104:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 105:HEAP[HEAP[_PyExc_StandardError]]+=1;_PyModule_AddObject(e,__str1711536,HEAP[_PyExc_StandardError]);g=_PyDict_SetItemString(a, -__str1711536,HEAP[_PyExc_StandardError])!=0?106:107;break;case 106:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 107:HEAP[HEAP[_PyExc_TypeError]]+=1;_PyModule_AddObject(e,__str1721537,HEAP[_PyExc_TypeError]);g=_PyDict_SetItemString(a,__str1721537,HEAP[_PyExc_TypeError])!=0?108:109;break;case 108:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 109:HEAP[HEAP[_PyExc_StopIteration]]+=1;_PyModule_AddObject(e,__str1731538,HEAP[_PyExc_StopIteration]);g=_PyDict_SetItemString(a, -__str1731538,HEAP[_PyExc_StopIteration])!=0?110:111;break;case 110:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 111:HEAP[HEAP[_PyExc_GeneratorExit]]+=1;_PyModule_AddObject(e,__str1741539,HEAP[_PyExc_GeneratorExit]);g=_PyDict_SetItemString(a,__str1741539,HEAP[_PyExc_GeneratorExit])!=0?112:113;break;case 112:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 113:HEAP[HEAP[_PyExc_SystemExit]]+=1;_PyModule_AddObject(e,__str1751540,HEAP[_PyExc_SystemExit]);g=_PyDict_SetItemString(a, -__str1751540,HEAP[_PyExc_SystemExit])!=0?114:115;break;case 114:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 115:HEAP[HEAP[_PyExc_KeyboardInterrupt]]+=1;_PyModule_AddObject(e,__str1761541,HEAP[_PyExc_KeyboardInterrupt]);g=_PyDict_SetItemString(a,__str1761541,HEAP[_PyExc_KeyboardInterrupt])!=0?116:117;break;case 116:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 117:HEAP[HEAP[_PyExc_ImportError]]+=1;_PyModule_AddObject(e,__str1771542,HEAP[_PyExc_ImportError]); -g=_PyDict_SetItemString(a,__str1771542,HEAP[_PyExc_ImportError])!=0?118:119;break;case 118:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 119:HEAP[HEAP[_PyExc_EnvironmentError]]+=1;_PyModule_AddObject(e,__str351376,HEAP[_PyExc_EnvironmentError]);g=_PyDict_SetItemString(a,__str351376,HEAP[_PyExc_EnvironmentError])!=0?120:121;break;case 120:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 121:HEAP[HEAP[_PyExc_IOError]]+=1;_PyModule_AddObject(e,__str1781543,HEAP[_PyExc_IOError]); -g=_PyDict_SetItemString(a,__str1781543,HEAP[_PyExc_IOError])!=0?122:123;break;case 122:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 123:HEAP[HEAP[_PyExc_OSError]]+=1;_PyModule_AddObject(e,__str179,HEAP[_PyExc_OSError]);g=_PyDict_SetItemString(a,__str179,HEAP[_PyExc_OSError])!=0?124:125;break;case 124:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 125:HEAP[HEAP[_PyExc_EOFError]]+=1;_PyModule_AddObject(e,__str180,HEAP[_PyExc_EOFError]);g=_PyDict_SetItemString(a, -__str180,HEAP[_PyExc_EOFError])!=0?126:127;break;case 126:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 127:HEAP[HEAP[_PyExc_RuntimeError]]+=1;_PyModule_AddObject(e,__str181,HEAP[_PyExc_RuntimeError]);g=_PyDict_SetItemString(a,__str181,HEAP[_PyExc_RuntimeError])!=0?128:129;break;case 128:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 129:HEAP[HEAP[_PyExc_NotImplementedError]]+=1;_PyModule_AddObject(e,__str1821544,HEAP[_PyExc_NotImplementedError]);g=_PyDict_SetItemString(a, -__str1821544,HEAP[_PyExc_NotImplementedError])!=0?130:131;break;case 130:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 131:HEAP[HEAP[_PyExc_NameError]]+=1;_PyModule_AddObject(e,__str1831545,HEAP[_PyExc_NameError]);g=_PyDict_SetItemString(a,__str1831545,HEAP[_PyExc_NameError])!=0?132:133;break;case 132:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 133:HEAP[HEAP[_PyExc_UnboundLocalError]]+=1;_PyModule_AddObject(e,__str184,HEAP[_PyExc_UnboundLocalError]);g=_PyDict_SetItemString(a, -__str184,HEAP[_PyExc_UnboundLocalError])!=0?134:135;break;case 134:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 135:HEAP[HEAP[_PyExc_AttributeError]]+=1;_PyModule_AddObject(e,__str185,HEAP[_PyExc_AttributeError]);g=_PyDict_SetItemString(a,__str185,HEAP[_PyExc_AttributeError])!=0?136:137;break;case 136:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 137:HEAP[HEAP[_PyExc_SyntaxError]]+=1;_PyModule_AddObject(e,__str186,HEAP[_PyExc_SyntaxError]);g=_PyDict_SetItemString(a, -__str186,HEAP[_PyExc_SyntaxError])!=0?138:139;break;case 138:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 139:HEAP[HEAP[_PyExc_IndentationError]]+=1;_PyModule_AddObject(e,__str187,HEAP[_PyExc_IndentationError]);g=_PyDict_SetItemString(a,__str187,HEAP[_PyExc_IndentationError])!=0?140:141;break;case 140:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 141:HEAP[HEAP[_PyExc_TabError]]+=1;_PyModule_AddObject(e,__str188,HEAP[_PyExc_TabError]);g=_PyDict_SetItemString(a, -__str188,HEAP[_PyExc_TabError])!=0?142:143;break;case 142:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 143:HEAP[HEAP[_PyExc_LookupError]]+=1;_PyModule_AddObject(e,__str189,HEAP[_PyExc_LookupError]);g=_PyDict_SetItemString(a,__str189,HEAP[_PyExc_LookupError])!=0?144:145;break;case 144:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 145:HEAP[HEAP[_PyExc_IndexError]]+=1;_PyModule_AddObject(e,__str190,HEAP[_PyExc_IndexError]);g=_PyDict_SetItemString(a,__str190,HEAP[_PyExc_IndexError])!= -0?146:147;break;case 146:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 147:HEAP[HEAP[_PyExc_KeyError]]+=1;_PyModule_AddObject(e,__str191,HEAP[_PyExc_KeyError]);g=_PyDict_SetItemString(a,__str191,HEAP[_PyExc_KeyError])!=0?148:149;break;case 148:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 149:HEAP[HEAP[_PyExc_ValueError]]+=1;_PyModule_AddObject(e,__str192,HEAP[_PyExc_ValueError]);g=_PyDict_SetItemString(a,__str192,HEAP[_PyExc_ValueError])!=0?150:151;break;case 150:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 151:HEAP[HEAP[_PyExc_UnicodeError]]+=1;_PyModule_AddObject(e,__str193,HEAP[_PyExc_UnicodeError]);g=_PyDict_SetItemString(a,__str193,HEAP[_PyExc_UnicodeError])!=0?152:153;break;case 152:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 153:HEAP[HEAP[_PyExc_UnicodeEncodeError]]+=1;_PyModule_AddObject(e,__str194,HEAP[_PyExc_UnicodeEncodeError]);g=_PyDict_SetItemString(a,__str194,HEAP[_PyExc_UnicodeEncodeError])!=0?154:155;break;case 154:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 155:HEAP[HEAP[_PyExc_UnicodeDecodeError]]+=1;_PyModule_AddObject(e,__str195,HEAP[_PyExc_UnicodeDecodeError]);g=_PyDict_SetItemString(a,__str195,HEAP[_PyExc_UnicodeDecodeError])!=0?156:157;break;case 156:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 157:HEAP[HEAP[_PyExc_UnicodeTranslateError]]+=1;_PyModule_AddObject(e,__str1961546,HEAP[_PyExc_UnicodeTranslateError]);g=_PyDict_SetItemString(a,__str1961546,HEAP[_PyExc_UnicodeTranslateError])!=0?158: -159;break;case 158:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 159:HEAP[HEAP[_PyExc_AssertionError]]+=1;_PyModule_AddObject(e,__str197,HEAP[_PyExc_AssertionError]);g=_PyDict_SetItemString(a,__str197,HEAP[_PyExc_AssertionError])!=0?160:161;break;case 160:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 161:HEAP[HEAP[_PyExc_ArithmeticError]]+=1;_PyModule_AddObject(e,__str198,HEAP[_PyExc_ArithmeticError]);g=_PyDict_SetItemString(a,__str198,HEAP[_PyExc_ArithmeticError])!= -0?162:163;break;case 162:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 163:HEAP[HEAP[_PyExc_FloatingPointError]]+=1;_PyModule_AddObject(e,__str199,HEAP[_PyExc_FloatingPointError]);g=_PyDict_SetItemString(a,__str199,HEAP[_PyExc_FloatingPointError])!=0?164:165;break;case 164:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 165:HEAP[HEAP[_PyExc_OverflowError]]+=1;_PyModule_AddObject(e,__str200,HEAP[_PyExc_OverflowError]);g=_PyDict_SetItemString(a,__str200,HEAP[_PyExc_OverflowError])!= -0?166:167;break;case 166:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 167:HEAP[HEAP[_PyExc_ZeroDivisionError]]+=1;_PyModule_AddObject(e,__str201,HEAP[_PyExc_ZeroDivisionError]);g=_PyDict_SetItemString(a,__str201,HEAP[_PyExc_ZeroDivisionError])!=0?168:169;break;case 168:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 169:HEAP[HEAP[_PyExc_SystemError]]+=1;_PyModule_AddObject(e,__str202,HEAP[_PyExc_SystemError]);g=_PyDict_SetItemString(a,__str202,HEAP[_PyExc_SystemError])!= -0?170:171;break;case 170:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 171:HEAP[HEAP[_PyExc_ReferenceError]]+=1;_PyModule_AddObject(e,__str203,HEAP[_PyExc_ReferenceError]);g=_PyDict_SetItemString(a,__str203,HEAP[_PyExc_ReferenceError])!=0?172:173;break;case 172:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 173:HEAP[HEAP[_PyExc_MemoryError]]+=1;_PyModule_AddObject(e,__str204,HEAP[_PyExc_MemoryError]);g=_PyDict_SetItemString(a,__str204,HEAP[_PyExc_MemoryError])!= -0?174:175;break;case 174:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 175:HEAP[HEAP[_PyExc_BufferError]]+=1;_PyModule_AddObject(e,__str205,HEAP[_PyExc_BufferError]);g=_PyDict_SetItemString(a,__str205,HEAP[_PyExc_BufferError])!=0?176:177;break;case 176:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 177:HEAP[HEAP[_PyExc_Warning]]+=1;_PyModule_AddObject(e,__str206,HEAP[_PyExc_Warning]);g=_PyDict_SetItemString(a,__str206,HEAP[_PyExc_Warning])!=0?178:179;break;case 178:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 179:HEAP[HEAP[_PyExc_UserWarning]]+=1;_PyModule_AddObject(e,__str207,HEAP[_PyExc_UserWarning]);g=_PyDict_SetItemString(a,__str207,HEAP[_PyExc_UserWarning])!=0?180:181;break;case 180:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 181:HEAP[HEAP[_PyExc_DeprecationWarning]]+=1;_PyModule_AddObject(e,__str208,HEAP[_PyExc_DeprecationWarning]);g=_PyDict_SetItemString(a,__str208,HEAP[_PyExc_DeprecationWarning])!=0?182:183;break;case 182:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 183:HEAP[HEAP[_PyExc_PendingDeprecationWarning]]+=1;_PyModule_AddObject(e,__str209,HEAP[_PyExc_PendingDeprecationWarning]);g=_PyDict_SetItemString(a,__str209,HEAP[_PyExc_PendingDeprecationWarning])!=0?184:185;break;case 184:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 185:HEAP[HEAP[_PyExc_SyntaxWarning]]+=1;_PyModule_AddObject(e,__str210,HEAP[_PyExc_SyntaxWarning]);g=_PyDict_SetItemString(a,__str210,HEAP[_PyExc_SyntaxWarning])!=0?186:187;break;case 186:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 187:HEAP[HEAP[_PyExc_RuntimeWarning]]+=1;_PyModule_AddObject(e,__str211,HEAP[_PyExc_RuntimeWarning]);g=_PyDict_SetItemString(a,__str211,HEAP[_PyExc_RuntimeWarning])!=0?188:189;break;case 188:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 189:HEAP[HEAP[_PyExc_FutureWarning]]+=1;_PyModule_AddObject(e,__str212,HEAP[_PyExc_FutureWarning]);g=_PyDict_SetItemString(a,__str212,HEAP[_PyExc_FutureWarning])!=0?190:191;break;case 190:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 191:HEAP[HEAP[_PyExc_ImportWarning]]+=1;_PyModule_AddObject(e,__str213,HEAP[_PyExc_ImportWarning]);g=_PyDict_SetItemString(a,__str213,HEAP[_PyExc_ImportWarning])!=0?192:193;break;case 192:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 193:HEAP[HEAP[_PyExc_UnicodeWarning]]+=1;_PyModule_AddObject(e,__str214,HEAP[_PyExc_UnicodeWarning]);g=_PyDict_SetItemString(a,__str214,HEAP[_PyExc_UnicodeWarning])!=0?194:195;break;case 194:throw _Py_FatalError(__str1691534), -"Reached an unreachable!";case 195:HEAP[HEAP[_PyExc_BytesWarning]]+=1;_PyModule_AddObject(e,__str215,HEAP[_PyExc_BytesWarning]);g=_PyDict_SetItemString(a,__str215,HEAP[_PyExc_BytesWarning])!=0?196:197;break;case 196:throw _Py_FatalError(__str1691534),"Reached an unreachable!";case 197:g=_BaseException_new(__PyExc_MemoryError,0,0);HEAP[_PyExc_MemoryErrorInst]=g;g=HEAP[_PyExc_MemoryErrorInst]==0?198:199;break;case 198:throw _Py_FatalError(__str216),"Reached an unreachable!";case 199:g=_BaseException_new(__PyExc_RuntimeError, -0,0);HEAP[_PyExc_RecursionErrorInst]=g;g=HEAP[_PyExc_RecursionErrorInst]==0?200:201;break;case 200:throw _Py_FatalError(__str217),"Reached an unreachable!";case 201:c=HEAP[_PyExc_RecursionErrorInst];f=_PyString_FromString(__str218);g=f==0?202:203;break;case 202:throw _Py_FatalError(__str219),"Reached an unreachable!";case 203:d=_PyTuple_Pack(1,allocate([f,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));g=d==0?204:205;break;case 204:throw _Py_FatalError(__str220),"Reached an unreachable!";case 205:HEAP[f]-= -1;g=HEAP[f]==0?206:207;break;case 206:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);g=207;break;case 207:g=_BaseException_init(c,d,0)!=0?208:209;break;case 208:throw _Py_FatalError(__str221),"Reached an unreachable!";case 209:HEAP[d]-=1;g=HEAP[d]==0?210:211;break;case 210:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);g=211;break;case 211:HEAP[b]-=1;g=HEAP[b]==0?212:213;break;case 212:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=213;break;case 213:return;default:assert(0,"bad label: "+g)}} -function __PyExc_Fini(){var g;for(g=-1;;)switch(g){case -1:var e,b;g=HEAP[_PyExc_MemoryErrorInst]!=0?1:3;break;case 1:e=HEAP[_PyExc_MemoryErrorInst];HEAP[_PyExc_MemoryErrorInst]=0;HEAP[e]-=1;g=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[e+4]+24]](e);g=3;break;case 3:g=HEAP[_PyExc_RecursionErrorInst]!=0?4:6;break;case 4:b=HEAP[_PyExc_RecursionErrorInst];HEAP[_PyExc_RecursionErrorInst]=0;HEAP[b]-=1;g=HEAP[b]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=6;break;case 6:return; -default:assert(0,"bad label: "+g)}}function _PyFile_AsFile(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?3:1;break;case 1:e=HEAP[b+4]==_PyFile_Type?4:2;break;case 2:e=_PyType_IsSubtype(HEAP[b+4],_PyFile_Type)==0?3:4;break;case 3:a=0;e=5;break;case 4:a=HEAP[b+8];e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}}function _PyFile_IncUseCount(g){HEAP[g+72]+=1}function _PyFile_DecUseCount(g){HEAP[g+72]-=1} -function _PyFile_Name(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?3:1;break;case 1:e=HEAP[b+4]==_PyFile_Type?4:2;break;case 2:e=_PyType_IsSubtype(HEAP[b+4],_PyFile_Type)==0?3:4;break;case 3:a=0;e=5;break;case 4:a=HEAP[b+12];e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}}function _file_PyObject_Print(g,e,b){_PyFile_IncUseCount(e);g=_PyObject_Print(g,HEAP[e+8],b);_PyFile_DecUseCount(e);return g} -function _dircheck(g){var e=STACKTOP;STACKTOP+=96;_memset(e,0,96);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f,h=a=g;b=HEAP[a+8]==0?1:2;break;case 1:c=h;b=9;break;case 2:b=_fileno(HEAP[h+8]);b=___01fstat64_(b,d)==0?3:8;break;case 3:b=(HEAP[d+16]&61440)==16384?4:8;break;case 4:f=_strerror(21);f=__PyObject_CallFunction_SizeT(HEAP[_PyExc_IOError],__str1553,allocate([21,0,0,0,f,0,0,0,HEAP[a+12],0,0,0],["i32",0,0,0,"i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));_PyErr_SetObject(HEAP[_PyExc_IOError], -f);b=f!=0?5:7;break;case 5:HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:c=0;b=9;break;case 8:c=a;b=9;break;case 9:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _fill_file_fields(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m;f=g;h=e;j=b;k=a;l=c;d=HEAP[f+12];HEAP[d]-=1;d=HEAP[d]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+12]+4]+24]](HEAP[f+12]);d=2;break;case 2:d=HEAP[f+16];HEAP[d]-=1;d=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+16]+4]+24]](HEAP[f+16]);d=4;break;case 4:d=HEAP[f+60];HEAP[d]-=1;d=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+60]+4]+24]](HEAP[f+60]);d=6;break;case 6:d=HEAP[f+64]; -HEAP[d]-=1;d=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+64]+4]+24]](HEAP[f+64]);d=8;break;case 8:HEAP[j]+=1;HEAP[f+12]=j;d=_PyString_FromString(k);HEAP[f+16]=d;HEAP[f+20]=l;HEAP[f+24]=0;d=_strchr(k,98);HEAP[f+28]=d!=0;HEAP[f+32]=0;d=_strchr(k,85);HEAP[f+48]=d!=0;HEAP[f+52]=0;HEAP[f+56]=0;HEAP[__Py_NoneStruct]+=1;HEAP[f+60]=__Py_NoneStruct;HEAP[__Py_NoneStruct]+=1;HEAP[f+64]=__Py_NoneStruct;HEAP[f+80]=0;HEAP[f+76]=HEAP[f+80];d=_strchr(k,114)!=0?10:9;break;case 9:d=HEAP[f+48]!=0?10: -11;break;case 10:HEAP[f+76]=1;d=11;break;case 11:d=_strchr(k,119)!=0?13:12;break;case 12:d=_strchr(k,97)!=0?13:14;break;case 13:HEAP[f+80]=1;d=14;break;case 14:d=_strchr(k,43)!=0?15:16;break;case 15:HEAP[f+80]=1;HEAP[f+76]=HEAP[f+80];d=16;break;case 16:d=HEAP[f+16]==0?17:18;break;case 17:m=0;d=19;break;case 18:HEAP[f+8]=h;m=f=_dircheck(f);d=19;break;case 19:return g=m;default:assert(0,"bad label: "+d)}} -function __PyFile_SanitizeMode(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;d=_strlen(b);e=d==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str11554);a=-1;e=15;break;case 2:c=_strchr(b,85);e=c!=0?3:10;break;case 3:_llvm_memmove_p0i8_p0i8_i32(c,c+1,d+(0-c)+(0-(0-b)),1,0);e=HEAP[b]==119?5:4;break;case 4:e=HEAP[b]==97?5:6;break;case 5:_PyErr_Format(HEAP[_PyExc_ValueError],__str21555,allocate(1,"i32",ALLOC_STACK));a=-1;e=15;break;case 6:e=HEAP[b]!=114?7:8;break;case 7:e=_strlen(b)+ -1;_llvm_memmove_p0i8_p0i8_i32(b+1,b,e,1,0);HEAP[b]=114;e=8;break;case 8:e=_strchr(b,98)==0?9:14;break;case 9:e=_strlen(b);_llvm_memmove_p0i8_p0i8_i32(b+2,b+1,e,1,0);HEAP[b+1]=98;e=14;break;case 10:e=HEAP[b]!=114?11:14;break;case 11:e=HEAP[b]!=119?12:14;break;case 12:e=HEAP[b]!=97?13:14;break;case 13:_PyErr_Format(HEAP[_PyExc_ValueError],__str31556,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=-1;e=15;break;case 14:a=0;e=15;break;case 15:return g=a;default:assert(0,"bad label: "+e)}} -function _open_the_file(g,e,b){var a=STACKTOP;STACKTOP+=100;_memset(a,0,100);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n=a;d=g;f=e;h=b;c=_strlen(h)+3>=0?1:4;break;case 1:c=_strlen(h)!=-3?2:3;break;case 2:k=_strlen(h)+3;c=5;break;case 3:k=1;c=5;break;case 4:l=0;c=6;break;case 5:l=c=_malloc(k);c=c==0?6:7;break;case 6:_PyErr_NoMemory();j=0;c=24;break;case 7:_strcpy(l,h);c=__PyFile_SanitizeMode(l)!=0?8:9;break;case 8:d=0;c=23;break;case 9:c=_PyEval_GetRestricted()!=0?10:11;break;case 10:_PyErr_SetString(HEAP[_PyExc_IOError], -__str41557);d=0;c=23;break;case 11:c=___errno_location();HEAP[c]=0;c=HEAP[d+8]==0?12:14;break;case 12:c=f!=0?13:14;break;case 13:HEAP[d+72]+=1;c=___01fopen64_(f,l);HEAP[d+8]=c;HEAP[d+72]-=1;c=14;break;case 14:var o=d;c=HEAP[o+8]==0?15:21;break;case 15:c=___errno_location();c=HEAP[c]==22?16:19;break;case 16:_PyOS_snprintf(n,100,__str51558,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));m=HEAP[d+12];c=___errno_location();m=__Py_BuildValue_SizeT(__str1553,allocate([HEAP[c],0,0,0,n,0,0,0,m,0,0,0],["i32", -0,0,0,"i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));c=m!=0?17:20;break;case 17:_PyErr_SetObject(HEAP[_PyExc_IOError],m);HEAP[m]-=1;c=HEAP[m]==0?18:20;break;case 18:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=20;break;case 19:_PyErr_SetFromErrnoWithFilenameObject(HEAP[_PyExc_IOError],HEAP[d+12]);c=20;break;case 20:d=0;c=23;break;case 21:c=o!=0?22:23;break;case 22:d=_dircheck(d);c=23;break;case 23:_free(l);j=d;c=24;break;case 24:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _close_the_file(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;c=0;f=HEAP[b+8];h=HEAP[b+44];e=f!=0?1:12;break;case 1:d=HEAP[b+20];e=d!=0?2:7;break;case 2:e=HEAP[b+72]>0?3:7;break;case 3:e=HEAP[b]>0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_IOError],__str61559);e=6;break;case 5:_PyErr_SetString(HEAP[_PyExc_SystemError],__str71560);e=6;break;case 6:a=0;e=13;break;case 7:HEAP[b+8]=0;e=d!=0?8:12;break;case 8:HEAP[b+44]=0;e=___errno_location();HEAP[e]=0;c=FUNCTION_TABLE[d](f);HEAP[b+ -44]=h;e=c==-1?9:10;break;case 9:a=_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);e=13;break;case 10:e=c!=0?11:12;break;case 11:a=_PyInt_FromLong(c);e=13;break;case 12:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=13;break;case 13:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFile_FromFile(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;l=FUNCTION_TABLE[HEAP[_PyFile_Type+156]](_PyFile_Type,0,0);c=l!=0?1:9;break;case 1:m=_PyString_FromString(f);c=m==0?2:3;break;case 2:k=0;c=10;break;case 3:c=_fill_file_fields(l,d,m,h,j)==0?4:7;break;case 4:HEAP[l]-=1;c=HEAP[l]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=6;break;case 6:l=0;c=7;break;case 7:HEAP[m]-=1;c=HEAP[m]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m); -c=9;break;case 9:k=l;c=10;break;case 10:return g=k;default:assert(0,"bad label: "+c)}}function _PyFile_FromString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;d=_PyFile_FromFile(0,a,c,68);b=d!=0?1:5;break;case 1:b=_open_the_file(d,a,c)==0?2:5;break;case 2:HEAP[d]-=1;b=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=4;break;case 4:d=0;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _PyFile_SetBufSize(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=c>=0?1:9;break;case 1:b=c;b=b==0?2:b==1?3:4;break;case 2:d=2;b=5;break;case 3:d=1;c=8192;b=5;break;case 4:d=0;b=5;break;case 5:_fflush(HEAP[a+8]);b=d==2?6:7;break;case 6:_PyMem_Free(HEAP[a+44]);HEAP[a+44]=0;b=8;break;case 7:b=_PyMem_Realloc(HEAP[a+44],c);HEAP[a+44]=b;b=8;break;case 8:_setvbuf(HEAP[a+8],HEAP[a+44],d,c);b=9;break;case 9:return;default:assert(0,"bad label: "+b)}} -function _PyFile_SetEncoding(g,e){return _PyFile_SetEncodingAndErrors(g,e,0)} -function _PyFile_SetEncodingAndErrors(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;d=_PyString_FromString(d);a=d==0?1:2;break;case 1:h=0;a=13;break;case 2:a=f!=0?3:7;break;case 3:j=_PyString_FromString(f);a=j==0?4:8;break;case 4:HEAP[d]-=1;a=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=6;break;case 6:h=0;a=13;break;case 7:j=__Py_NoneStruct;HEAP[__Py_NoneStruct]+=1;a=8;break;case 8:a=HEAP[c+60];HEAP[a]-=1;a=HEAP[a]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[c+ -60]+4]+24]](HEAP[c+60]);a=10;break;case 10:HEAP[c+60]=d;a=HEAP[c+64];HEAP[a]-=1;a=HEAP[a]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[c+64]+4]+24]](HEAP[c+64]);a=12;break;case 12:HEAP[c+64]=j;h=1;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}}function _err_closed(){_PyErr_SetString(HEAP[_PyExc_ValueError],__str81561);return 0}function _err_mode(g){_PyErr_Format(HEAP[_PyExc_IOError],__str91562,allocate([g,0,0,0],["i8*",0,0,0],ALLOC_STACK));return 0} -function _err_iterbuffered(){_PyErr_SetString(HEAP[_PyExc_ValueError],__str101563);return 0} -function _file_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+68]!=0?1:2;break;case 1:_PyObject_ClearWeakRefs(b);e=2;break;case 2:a=e=_close_the_file(b);e=e==0?3:4;break;case 3:_PySys_WriteStderr(__str111564,allocate(1,"i32",ALLOC_STACK));_PyErr_Print();e=6;break;case 4:HEAP[a]-=1;e=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=6;break;case 6:_PyMem_Free(HEAP[b+44]);e=HEAP[b+12]!=0?7:9;break;case 7:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+ -12]+4]+24]](HEAP[b+12]);e=9;break;case 9:e=HEAP[b+16]!=0?10:12;break;case 10:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=12;break;case 12:e=HEAP[b+60]!=0?13:15;break;case 13:e=HEAP[b+60];HEAP[e]-=1;e=HEAP[e]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+60]+4]+24]](HEAP[b+60]);e=15;break;case 15:e=HEAP[b+64]!=0?16:18;break;case 16:e=HEAP[b+64];HEAP[e]-=1;e=HEAP[e]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+ -64]+4]+24]](HEAP[b+64]);e=18;break;case 18:_drop_readahead(b);FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);return;default:assert(0,"bad label: "+e)}} -function _file_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k;b=g;e=(HEAP[HEAP[HEAP[b+12]+4]+84]&268435456)!=0?1:11;break;case 1:h=0;j=_PyUnicodeUCS2_AsUnicodeEscapeString(HEAP[b+12]);e=j!=0?2:3;break;case 2:f=_PyString_AsString(j);e=4;break;case 3:f=__str121565;e=4;break;case 4:k=f;var l=_PyString_AsString(HEAP[b+16]);e=HEAP[b+8]==0?5:6;break;case 5:d=__str131566;e=7;break;case 6:d=__str141567;e=7;break;case 7:h=_PyString_FromFormat(__str151568,allocate([d,0,0,0,k,0,0,0,l,0,0,0,b, -0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"%struct.PyFileObject*",0,0,0],ALLOC_STACK));e=j!=0?8:10;break;case 8:HEAP[j]-=1;e=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=10;break;case 10:c=h;e=15;break;case 11:var m=_PyString_AsString(HEAP[b+16]),n=_PyString_AsString(HEAP[b+12]);e=HEAP[b+8]==0?12:13;break;case 12:a=__str131566;e=14;break;case 13:a=__str141567;e=14;break;case 14:c=_PyString_FromFormat(__str161569,allocate([a,0,0,0,n,0,0,0,m,0,0,0,b,0,0,0],["i8*",0,0,0,"i8*", -0,0,0,"i8*",0,0,0,"%struct.PyFileObject*",0,0,0],ALLOC_STACK));e=15;break;case 15:return g=c;default:assert(0,"bad label: "+e)}}function _file_close(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=_close_the_file(b);e=a!=0?1:2;break;case 1:_PyMem_Free(HEAP[b+44]);HEAP[b+44]=0;e=2;break;case 2:return g=a;default:assert(0,"bad label: "+e)}}function __portable_fseek(g,e,b){return ___01fseeko64_(g,e,b)}function __portable_ftell(g){return ___01ftello64_(g)} -function _file_seek(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k,l=b+4,m;c=g;d=e;a=HEAP[c+8]==0?1:2;break;case 1:h=_err_closed();a=21;break;case 2:_drop_readahead(c);HEAP[j]=0;a=__PyArg_ParseTuple_SizeT(d,__str171570,allocate([l,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:h=0;a=21;break;case 4:m=_PyNumber_Index(HEAP[l]);a=m==0?5:11;break;case 5:a=HEAP[HEAP[l]+4]!=_PyFloat_Type?6:8;break;case 6:a= -_PyType_IsSubtype(HEAP[HEAP[l]+4],_PyFloat_Type)==0?7:8;break;case 7:h=0;a=21;break;case 8:_PyErr_Clear();a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str181571,1)<0?9:10;break;case 9:h=0;a=21;break;case 10:m=HEAP[l];HEAP[HEAP[l]]+=1;a=11;break;case 11:var n=m;a=(HEAP[HEAP[m+4]+84]&16777216)!=0?12:13;break;case 12:f=_PyLong_AsLongLong(n);a=14;break;case 13:f=_PyInt_AsLong(n);a=14;break;case 14:k=f;HEAP[m]-=1;a=HEAP[m]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=16;break;case 16:a= -_PyErr_Occurred()!=0?17:18;break;case 17:h=0;a=21;break;case 18:HEAP[c+72]+=1;a=___errno_location();HEAP[a]=0;a=__portable_fseek(HEAP[c+8],k,HEAP[j]);HEAP[c+72]-=1;a=a!=0?19:20;break;case 19:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(HEAP[c+8]);h=0;a=21;break;case 20:HEAP[c+56]=0;HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct;a=21;break;case 21:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _file_truncate(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l;c=g;d=e;HEAP[k]=0;a=HEAP[c+8]==0?1:2;break;case 1:h=_err_closed();a=19;break;case 2:a=HEAP[c+80]==0?3:4;break;case 3:h=_err_mode(__str191572);a=19;break;case 4:a=_PyArg_UnpackTuple(d,__str201573,0,1,allocate([k,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?5:6;break;case 5:h=0;a=19;break;case 6:HEAP[c+72]+=1;l=___errno_location();HEAP[l]=0;l=__portable_ftell(HEAP[c+ -8]);HEAP[c+72]-=1;a=l==-1?18:7;break;case 7:a=HEAP[k]!=0?8:13;break;case 8:var m=HEAP[k];a=(HEAP[HEAP[HEAP[k]+4]+84]&16777216)!=0?9:10;break;case 9:f=_PyLong_AsLongLong(m);a=11;break;case 10:f=_PyInt_AsLong(m);a=11;break;case 11:j=f;a=_PyErr_Occurred()!=0?12:14;break;case 12:h=0;a=19;break;case 13:j=l;a=14;break;case 14:HEAP[c+72]+=1;a=___errno_location();HEAP[a]=0;a=_fflush(HEAP[c+8]);HEAP[c+72]-=1;a=a!=0?18:15;break;case 15:HEAP[c+72]+=1;a=___errno_location();HEAP[a]=0;a=_fileno(HEAP[c+8]);a=___01ftruncate64_(a, -j);HEAP[c+72]-=1;a=a!=0?18:16;break;case 16:HEAP[c+72]+=1;a=___errno_location();HEAP[a]=0;a=__portable_fseek(HEAP[c+8],l,0)!=0;HEAP[c+72]-=1;a=a!=0?18:17;break;case 17:HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct;a=19;break;case 18:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(HEAP[c+8]);h=0;a=19;break;case 19:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _file_tell(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+8]==0?1:2;break;case 1:a=_err_closed();e=10;break;case 2:HEAP[b+72]+=1;e=___errno_location();HEAP[e]=0;c=__portable_ftell(HEAP[b+8]);HEAP[b+72]-=1;e=c==-1?3:4;break;case 3:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(HEAP[b+8]);a=0;e=10;break;case 4:e=HEAP[b+56]!=0?5:9;break;case 5:d=_getc_unlocked(HEAP[b+8]);e=d==10?6:7;break;case 6:HEAP[b+52]|=4;c+=1;HEAP[b+56]=0;e=9;break;case 7:e=d!=-1?8:9;break;case 8:_ungetc(d, -HEAP[b+8]);e=9;break;case 9:a=_PyLong_FromLongLong(c);e=10;break;case 10:return g=a;default:assert(0,"bad label: "+e)}}function _file_fileno(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:a=_err_closed();e=3;break;case 2:e=_fileno(HEAP[b+8]);a=_PyInt_FromLong(e);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _file_flush(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:a=_err_closed();e=5;break;case 2:HEAP[b+72]+=1;e=___errno_location();HEAP[e]=0;e=_fflush(HEAP[b+8]);HEAP[b+72]-=1;e=e!=0?3:4;break;case 3:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(HEAP[b+8]);a=0;e=5;break;case 4:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _file_isatty(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]==0?1:2;break;case 1:a=_err_closed();e=3;break;case 2:HEAP[b+72]+=1;e=_fileno(HEAP[b+8]);e=_isatty(e);HEAP[b+72]-=1;a=_PyBool_FromLong(e);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _new_buffersize(g,e){var b=STACKTOP;STACKTOP+=96;_memset(b,0,96);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b;c=g;d=e;a=_fileno(HEAP[c+8]);a=___01fstat64_(a,k)==0?1:6;break;case 1:j=HEAP[k+44];h=_fileno(HEAP[c+8]);h=___01lseek64_(h,0,1);a=h>=0?2:3;break;case 2:h=a=_ftell(HEAP[c+8]);a=a<0?3:4;break;case 3:_clearerr(HEAP[c+8]);a=4;break;case 4:a=j>h&h>=0?5:6;break;case 5:f=d+1+(j&4294967295)+(0-(h&4294967295));a=11;break;case 6:var l=d;a=l>8192?7:10;break;case 7:var m=d;a=l<=524288? -8:9;break;case 8:f=d+m;a=11;break;case 9:f=m+524288;a=11;break;case 10:f=l+8192;a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _file_read(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j=b,k,l,m,n=b+4;d=g;f=e;HEAP[j]=-1;a=HEAP[d+8]==0?1:2;break;case 1:h=_err_closed();a=34;break;case 2:a=HEAP[d+76]==0?3:4;break;case 3:h=_err_mode(__str211574);a=34;break;case 4:a=HEAP[d+32]!=0?5:8;break;case 5:a=HEAP[d+36]-HEAP[d+40]>0?6:8;break;case 6:a=HEAP[HEAP[d+32]]!=0?7:8;break;case 7:h=_err_iterbuffered();a=34;break;case 8:a=__PyArg_ParseTuple_SizeT(f,__str221575,allocate([j, -0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?9:10;break;case 9:h=0;a=34;break;case 10:a=HEAP[j]<0?11:12;break;case 11:var o=_new_buffersize(d,0);l=o;c=11;a=13;break;case 12:var p=HEAP[j];l=p;c=12;a=13;break;case 13:a=(c==12?p:o)<0?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str231576);h=0;a=34;break;case 15:a=_PyString_FromStringAndSize(0,l);HEAP[n]=a;a=HEAP[n]==0?16:17;break;case 16:h=0;a=34;break;case 17:k=0;a=18;break;case 18:HEAP[d+72]+=1;m=___errno_location();HEAP[m]=0;m=_Py_UniversalNewlineFread(HEAP[n]+ -20+k,l-k,HEAP[d+8],d);HEAP[d+72]-=1;a=m==0?19:25;break;case 19:a=_ferror(HEAP[d+8])==0?30:20;break;case 20:_clearerr(HEAP[d+8]);a=k!=0?21:22;break;case 21:a=___errno_location();a=HEAP[a]==11?30:22;break;case 22:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);a=HEAP[n];HEAP[a]-=1;a=HEAP[a]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);a=24;break;case 24:h=0;a=34;break;case 25:k=m+k;a=k0?6:8;break;case 6:a=HEAP[HEAP[d+32]]!=0?7:8;break;case 7:h=_err_iterbuffered();a=17;break;case 8:a=__PyArg_ParseTuple_SizeT(f,__str241577,allocate([n,0,0,0], -["%struct.Py_buffer*",0,0,0],ALLOC_STACK))==0?9:10;break;case 9:h=0;a=17;break;case 10:j=HEAP[n];var o=HEAP[n+8];k=o;l=0;c=10;a=15;break;case 11:HEAP[d+72]+=1;a=___errno_location();HEAP[a]=0;m=_Py_UniversalNewlineFread(j+l,k,HEAP[d+8],d);HEAP[d+72]-=1;a=m==0?12:14;break;case 12:a=_ferror(HEAP[d+8])==0?16:13;break;case 13:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(HEAP[d+8]);_PyBuffer_Release(n);h=0;a=17;break;case 14:l=m+l;var p=k-m;k=p;c=14;a=15;break;case 15:a=(c==14?p:o)>0?11:16;break; -case 16:_PyBuffer_Release(n);h=_PyInt_FromSsize_t(l);a=17;break;case 17:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _get_line(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q=b,r,u,s;d=g;f=e;k=HEAP[d+8];r=HEAP[d+52];u=HEAP[d+56];s=HEAP[d+48];a=f>0?1:2;break;case 1:j=f;a=3;break;case 2:j=100;a=3;break;case 3:o=j;a=_PyString_FromStringAndSize(0,o);HEAP[q]=a;a=a==0?4:5;break;case 4:h=0;a=48;break;case 5:m=HEAP[q]+20;n=m+o;a=6;break;case 6:HEAP[d+72]+=1;_flockfile(k);a=s!=0?7:23;break;case 7:l=120;a=18;break;case 8:a=u!=0?9:12;break;case 9:u= -0;var t=r;a=l==10?10:11;break;case 10:r=t|4;var v=l=_getc_unlocked(k);v==-1?(c=10,a=21):(c=10,a=13);break;case 11:r=t|1;a=12;break;case 12:var w=l,c=12;a=13;break;case 13:a=(c==12?w:v)==13?14:15;break;case 14:u=1;l=10;a=17;break;case 15:a=l==10?16:17;break;case 16:r|=2;a=17;break;case 17:HEAP[m]=l&255;m+=1;a=l==10?26:18;break;case 18:a=m==n?20:19;break;case 19:l=_getc_unlocked(k);a=l!=-1?8:21;break;case 20:a=l==-1?21:26;break;case 21:a=u!=0?22:26;break;case 22:r|=1;a=26;break;case 23:l=a=_getc_unlocked(k); -a=a==-1?26:24;break;case 24:HEAP[m]=l&255;a=HEAP[m]!=10;m+=1;a=(a!=0^1)!=0?26:25;break;case 25:a=m!=n?23:26;break;case 26:_funlockfile(k);HEAP[d+72]-=1;HEAP[d+52]=r;HEAP[d+56]=u;a=l==10?44:27;break;case 27:a=l==-1?28:36;break;case 28:a=_ferror(k)!=0?29:32;break;case 29:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(k);a=HEAP[q];HEAP[a]-=1;a=HEAP[a]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);a=31;break;case 31:h=0;a=48;break;case 32:_clearerr(k);a=_PyErr_CheckSignals()!= -0?33:44;break;case 33:a=HEAP[q];HEAP[a]-=1;a=HEAP[a]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);a=35;break;case 35:h=0;a=48;break;case 36:a=f>0?44:37;break;case 37:p=o;a=o>>>2;o=a+o;a=o<0?38:41;break;case 38:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str251578);a=HEAP[q];HEAP[a]-=1;a=HEAP[a]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);a=40;break;case 40:h=0;a=48;break;case 41:a=__PyString_Resize(q,o)<0?42:43;break;case 42:h=0;a=48;break; -case 43:m=HEAP[q]+20+p;n=HEAP[q]+20+o;a=6;break;case 44:p=m-(HEAP[q]+20);a=p!=o?45:47;break;case 45:a=__PyString_Resize(q,p)!=0?46:47;break;case 46:h=0;a=48;break;case 47:h=HEAP[q];a=48;break;case 48:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyFile_GetLine(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j=b,k,l,m,n,o,p,q,r,u;d=g;f=e;a=d==0?1:2;break;case 1:__PyErr_BadInternalCall(__str261579,1493);h=0;a=60;break;case 2:a=HEAP[d+4]==_PyFile_Type?4:3;break;case 3:a=_PyType_IsSubtype(HEAP[d+4],_PyFile_Type)!=0?4:13;break;case 4:k=d;a=HEAP[k+8]==0?5:6;break;case 5:h=_err_closed();a=60;break;case 6:a=HEAP[k+76]==0?7:8;break;case 7:h=_err_mode(__str211574);a=60;break;case 8:a=HEAP[k+ -32]!=0?9:12;break;case 9:a=HEAP[k+36]-HEAP[k+40]>0?10:12;break;case 10:a=HEAP[HEAP[k+32]]!=0?11:12;break;case 11:h=_err_iterbuffered();a=60;break;case 12:a=_get_line(k,f);HEAP[j]=a;a=32;break;case 13:l=_PyObject_GetAttrString(d,__str271580);a=l==0?14:15;break;case 14:h=0;a=60;break;case 15:a=f<=0?16:17;break;case 16:var s=_PyTuple_New(0);m=s;c=16;a=18;break;case 17:var t=__Py_BuildValue_SizeT(__str281581,allocate([f,0,0,0],["i32",0,0,0],ALLOC_STACK));m=t;c=17;a=18;break;case 18:var v=l;a=(c==17?t: -s)==0?19:22;break;case 19:HEAP[l]=HEAP[v]-1;a=HEAP[l]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=21;break;case 21:h=0;a=60;break;case 22:a=_PyEval_CallObjectWithKeywords(v,m,0);HEAP[j]=a;HEAP[l]-=1;a=HEAP[l]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=24;break;case 24:HEAP[m]-=1;a=HEAP[m]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=26;break;case 26:a=HEAP[j]!=0?27:32;break;case 27:a=(HEAP[HEAP[HEAP[j]+4]+84]&134217728)==0?28:32;break;case 28:a= -(HEAP[HEAP[HEAP[j]+4]+84]&268435456)==0?29:32;break;case 29:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=31;break;case 31:HEAP[j]=0;_PyErr_SetString(HEAP[_PyExc_TypeError],__str291582);a=32;break;case 32:a=f<0?33:59;break;case 33:a=HEAP[j]!=0?34:46;break;case 34:a=(HEAP[HEAP[HEAP[j]+4]+84]&134217728)!=0?35:46;break;case 35:n=HEAP[j]+20;o=HEAP[HEAP[j]+8];a=o==0?36:39;break;case 36:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+ -4]+24]](HEAP[j]);a=38;break;case 38:HEAP[j]=0;_PyErr_SetString(HEAP[_PyExc_EOFError],__str301583);a=46;break;case 39:a=HEAP[n+(o-1)]==10?40:46;break;case 40:var w=o-1;a=HEAP[HEAP[j]]==1?41:43;break;case 41:a=__PyString_Resize(j,w)!=0?42:46;break;case 42:h=0;a=60;break;case 43:p=_PyString_FromStringAndSize(n,w);a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=45;break;case 45:HEAP[j]=p;a=46;break;case 46:a=f<0?47:59;break;case 47:a=HEAP[j]!= -0?48:59;break;case 48:a=(HEAP[HEAP[HEAP[j]+4]+84]&268435456)!=0?49:59;break;case 49:q=HEAP[HEAP[j]+12];r=HEAP[HEAP[j]+8];a=r==0?50:53;break;case 50:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=52;break;case 52:HEAP[j]=0;_PyErr_SetString(HEAP[_PyExc_EOFError],__str301583);a=59;break;case 53:a=HEAP[q+2*(r-1)]==10?54:59;break;case 54:var x=r-1;a=HEAP[HEAP[j]]==1?55:56;break;case 55:_PyUnicodeUCS2_Resize(j,x);a=59;break;case 56:u=_PyUnicodeUCS2_FromUnicode(q, -x);a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=58;break;case 58:HEAP[j]=u;a=59;break;case 59:h=HEAP[j];a=60;break;case 60:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _file_readline(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;HEAP[h]=-1;a=HEAP[c+8]==0?1:2;break;case 1:f=_err_closed();a=15;break;case 2:a=HEAP[c+76]==0?3:4;break;case 3:f=_err_mode(__str211574);a=15;break;case 4:a=HEAP[c+32]!=0?5:8;break;case 5:a=HEAP[c+36]-HEAP[c+40]>0?6:8;break;case 6:a=HEAP[HEAP[c+32]]!=0?7:8;break;case 7:f=_err_iterbuffered();a=15;break;case 8:a=__PyArg_ParseTuple_SizeT(d,__str311584,allocate([h,0,0,0],["i32*", -0,0,0],ALLOC_STACK))==0?9:10;break;case 9:f=0;a=15;break;case 10:a=HEAP[h]==0?11:12;break;case 11:f=_PyString_FromString(__str321585);a=15;break;case 12:a=HEAP[h]<0?13:14;break;case 13:HEAP[h]=0;a=14;break;case 14:f=_get_line(c,HEAP[h]);a=15;break;case 15:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _file_readlines(g,e){var b=STACKTOP;STACKTOP+=8204;_memset(b,0,8204);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j,k=b+4,l=b+8,m,n,o=b+8200,p,q,r,u,s,t,v,w,x,y;c=g;d=e;j=HEAP[h]=0;m=l;n=8192;w=r=p=HEAP[o]=0;a=HEAP[c+8]==0?1:2;break;case 1:f=_err_closed();a=53;break;case 2:a=HEAP[c+76]==0?3:4;break;case 3:f=_err_mode(__str211574);a=53;break;case 4:a=HEAP[c+32]!=0?5:8;break;case 5:a=HEAP[c+36]-HEAP[c+40]>0?6:8;break;case 6:a=HEAP[HEAP[c+32]]!=0?7:8;break;case 7:f=_err_iterbuffered();a= -53;break;case 8:a=__PyArg_ParseTuple_SizeT(d,__str331586,allocate([h,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?9:10;break;case 9:f=0;a=53;break;case 10:j=_PyList_New(0);a=j==0?12:11;break;case 11:var z=l;a=13;break;case 12:f=0;a=53;break;case 13:a=w!=0?14:15;break;case 14:q=0;a=16;break;case 15:HEAP[c+72]+=1;q=___errno_location();HEAP[q]=0;q=_Py_UniversalNewlineFread(m+p,n-p,HEAP[c+8],c);HEAP[c+72]-=1;w=n-p>q;a=q==0?16:18;break;case 16:HEAP[h]=0;a=_ferror(HEAP[c+8])==0?34:17;break;case 17:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]); -_clearerr(HEAP[c+8]);a=50;break;case 18:r=q+r;u=_memchr(m+p,10,q);a=u==0?19:26;break;case 19:p=q+p;n*=2;a=n<0?20:21;break;case 20:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str251578);a=50;break;case 21:var C=n;a=HEAP[o]==0?22:24;break;case 22:a=_PyString_FromStringAndSize(0,C);HEAP[o]=a;a=HEAP[o]==0?50:23;break;case 23:m=HEAP[o]+20;_llvm_memcpy_p0i8_p0i8_i32(m,z,p,1,0);a=13;break;case 24:a=__PyString_Resize(o,C)<0?50:25;break;case 25:m=HEAP[o]+20;a=13;break;case 26:t=m+p+q;s=m;a=27;break;case 27:u+= -1;a=_PyString_FromStringAndSize(s,u-s);HEAP[k]=a;a=a==0?50:28;break;case 28:v=_PyList_Append(j,HEAP[k]);a=HEAP[k];HEAP[a]-=1;a=HEAP[a]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);a=30;break;case 30:a=v!=0?50:31;break;case 31:s=u;u=_memchr(s,10,t-s);a=u!=0?27:32;break;case 32:p=t-s;_llvm_memmove_p0i8_p0i8_i32(m,s,p,1,0);a=HEAP[h]>0?33:13;break;case 33:a=HEAP[h]<=r?34:13;break;case 34:a=p!=0?35:46;break;case 35:a=_PyString_FromStringAndSize(m,p);HEAP[k]=a;a=HEAP[k]==0?50: -36;break;case 36:a=HEAP[h]>0?37:43;break;case 37:x=_get_line(c,0);a=x==0?38:40;break;case 38:a=HEAP[k];HEAP[a]-=1;a=HEAP[a]==0?39:50;break;case 39:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);a=50;break;case 40:_PyString_Concat(k,x);HEAP[x]-=1;a=HEAP[x]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);a=42;break;case 42:a=HEAP[k]==0?50:43;break;case 43:v=_PyList_Append(j,HEAP[k]);a=HEAP[k];HEAP[a]-=1;a=HEAP[a]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]); -a=45;break;case 45:a=v!=0?50:46;break;case 46:a=HEAP[o]!=0?47:49;break;case 47:a=HEAP[o];HEAP[a]-=1;a=HEAP[a]==0?48:49;break;case 48:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);a=49;break;case 49:f=j;a=53;break;case 50:a=j!=0?51:46;break;case 51:y=j;j=0;HEAP[y]-=1;a=HEAP[y]==0?52:46;break;case 52:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);a=46;break;case 53:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _file_write(g,e){var b=STACKTOP;STACKTOP+=64;_memset(b,0,64);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+52,k=b+56,l,m,n,o,p=b+60;c=g;d=e;m=0;a=HEAP[c+8]==0?1:2;break;case 1:f=_err_closed();a=32;break;case 2:a=HEAP[c+80]==0?3:4;break;case 3:f=_err_mode(__str191572);a=32;break;case 4:var q=d;a=HEAP[c+28]!=0?5:8;break;case 5:a=__PyArg_ParseTuple_SizeT(q,__str341587,allocate([h,0,0,0],["%struct.Py_buffer*",0,0,0],ALLOC_STACK))==0?6:7;break;case 6:f=0;a=32;break;case 7:HEAP[j]=HEAP[h]; -HEAP[k]=HEAP[h+8];a=24;break;case 8:a=__PyArg_ParseTuple_SizeT(q,__str351588,allocate([p,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?9:10;break;case 9:f=0;a=32;break;case 10:var r=HEAP[p];a=(HEAP[HEAP[HEAP[p]+4]+84]&134217728)!=0?11:12;break;case 11:HEAP[j]=r+20;HEAP[k]=HEAP[HEAP[p]+8];a=24;break;case 12:a=(HEAP[HEAP[r+4]+84]&268435456)!=0?13:22;break;case 13:a=HEAP[c+60]!=__Py_NoneStruct?14:15;break;case 14:n=HEAP[c+60]+20;a=16;break;case 15:n=_PyUnicodeUCS2_GetDefaultEncoding();a=16; -break;case 16:a=HEAP[c+64]!=__Py_NoneStruct?17:18;break;case 17:o=HEAP[c+64]+20;a=19;break;case 18:o=__str361589;a=19;break;case 19:m=a=_PyUnicodeUCS2_AsEncodedString(HEAP[p],n,o);a=a==0?20:21;break;case 20:f=0;a=32;break;case 21:HEAP[j]=m+20;HEAP[k]=HEAP[m+8];a=24;break;case 22:a=_PyObject_AsCharBuffer(HEAP[p],j,k)!=0?23:24;break;case 23:f=0;a=32;break;case 24:HEAP[c+24]=0;HEAP[c+72]+=1;l=___errno_location();HEAP[l]=0;l=_fwrite(HEAP[j],1,HEAP[k],HEAP[c+8]);HEAP[c+72]-=1;a=m!=0?25:27;break;case 25:HEAP[m]-= -1;a=HEAP[m]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=27;break;case 27:a=HEAP[c+28]!=0?28:29;break;case 28:_PyBuffer_Release(h);a=29;break;case 29:a=l!=HEAP[k]?30:31;break;case 30:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(HEAP[c+8]);f=0;a=32;break;case 31:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=32;break;case 32:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _file_writelines(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r=b,u,s=b+4;d=g;f=e;a=HEAP[d+8]==0?1:2;break;case 1:h=_err_closed();a=52;break;case 2:a=HEAP[d+80]==0?3:4;break;case 3:h=_err_mode(__str191572);a=52;break;case 4:j=m=0;o=(HEAP[HEAP[f+4]+84]&33554432)!=0;a=o!=0?5:6;break;case 5:l=0;a=9;break;case 6:l=_PyObject_GetIter(f);a=l==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str371590);h=0;a=52;break; -case 8:j=_PyList_New(1E3);a=j==0?48:9;break;case 9:n=0;a=10;break;case 10:a=o!=0?11:16;break;case 11:a=j!=0?12:14;break;case 12:HEAP[j]-=1;a=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=14;break;case 14:j=a=_PyList_GetSlice(f,n,n+1E3);a=a==0?48:15;break;case 15:var t=HEAP[j+8];q=t;c=15;a=24;break;case 16:q=0;c=16;a=20;break;case 17:k=_PyIter_Next(l);a=k==0?18:19;break;case 18:a=_PyErr_Occurred()!=0?45:21;break;case 19:_PyList_SetItem(j,q,k);var v=q+1;q=v;c=19;a=20;break; -case 20:a=(c==19?v:0)<=999?17:21;break;case 21:a=HEAP[d+8]==0?22:23;break;case 22:_err_closed();a=45;break;case 23:var w=q,c=23;a=24;break;case 24:a=(c==23?w:t)==0?44:25;break;case 25:p=0;a=36;break;case 26:u=HEAP[HEAP[j+12]+4*p];a=(HEAP[HEAP[u+4]+84]&134217728)==0?27:35;break;case 27:a=HEAP[d+28]==0?29:28;break;case 28:a=_PyObject_AsReadBuffer(u,s,r)!=0?30:29;break;case 29:a=_PyObject_AsCharBuffer(u,s,r)!=0?30:31;break;case 30:_PyErr_SetString(HEAP[_PyExc_TypeError],__str381591);a=45;break;case 31:k= -_PyString_FromStringAndSize(HEAP[s],HEAP[r]);a=k==0?45:32;break;case 32:HEAP[u]-=1;a=HEAP[u]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=34;break;case 34:HEAP[HEAP[j+12]+4*p]=k;a=35;break;case 35:p+=1;a=36;break;case 36:a=p0?2:3;break;case 2:d=0;b=10;break;case 3:_drop_readahead(a);b=4;break;case 4:b=_PyMem_Malloc(c);HEAP[a+32]=b;b=HEAP[a+32]==0?5:6;break;case 5:_PyErr_NoMemory();d=-1;b=10;break;case 6:HEAP[a+72]+=1;f=___errno_location();HEAP[f]=0;f=_Py_UniversalNewlineFread(HEAP[a+32],c,HEAP[a+8],a);HEAP[a+72]-=1;b=f==0?7:9;break;case 7:b=_ferror(HEAP[a+8])!=0?8:9;break;case 8:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]); -_clearerr(HEAP[a+8]);_drop_readahead(a);d=-1;b=10;break;case 9:HEAP[a+40]=HEAP[a+32];HEAP[a+36]=HEAP[a+32]+f;d=0;b=10;break;case 10:return a=d;default:assert(0,"bad label: "+b)}} -function _readahead_get_line_skip(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;a=HEAP[c+32]==0?1:3;break;case 1:a=_readahead(c,f)<0?2:3;break;case 2:h=0;a=14;break;case 3:m=HEAP[c+36]-HEAP[c+40];a=HEAP[c+36]-HEAP[c+40]==0?4:5;break;case 4:h=_PyString_FromStringAndSize(0,d);a=14;break;case 5:k=_memchr(HEAP[c+40],10,m);a=k!=0?6:10;break;case 6:k+=1;m=k-HEAP[c+40];j=_PyString_FromStringAndSize(0,m+d);a=j==0?7:8;break;case 7:h=0;a=14;break;case 8:_llvm_memcpy_p0i8_p0i8_i32(j+ -20+d,HEAP[c+40],m,1,0);HEAP[c+40]=k;a=HEAP[c+36]==k?9:13;break;case 9:_drop_readahead(c);a=13;break;case 10:k=HEAP[c+40];l=HEAP[c+32];HEAP[c+32]=0;j=_readahead_get_line_skip(c,m+d,(f>>2)+f);a=j==0?11:12;break;case 11:_PyMem_Free(l);h=0;a=14;break;case 12:_llvm_memcpy_p0i8_p0i8_i32(j+20+d,k,m,1,0);_PyMem_Free(l);a=13;break;case 13:h=j;a=14;break;case 14:return g=h;default:assert(0,"bad label: "+a)}} -function _file_iternext(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[b+8]==0?1:2;break;case 1:a=_err_closed();e=11;break;case 2:e=HEAP[b+76]==0?3:4;break;case 3:a=_err_mode(__str211574);e=11;break;case 4:c=_readahead_get_line_skip(b,0,8192);e=c==0?9:5;break;case 5:var d=c;e=HEAP[d+8]==0?6:10;break;case 6:e=d!=0?7:9;break;case 7:HEAP[c]-=1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=9;break;case 9:a=0;e=11;break;case 10:a=c;e=11;break;case 11:return g=a;default:assert(0, -"bad label: "+e)}} -function _file_new(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[_not_yet_string_10508]==0?1:3;break;case 1:e=_PyString_InternFromString(__str751628);HEAP[_not_yet_string_10508]=e;e=HEAP[_not_yet_string_10508]==0?2:3;break;case 2:a=0;e=6;break;case 3:c=e=FUNCTION_TABLE[HEAP[b+152]](b,0);e=e!=0?4:5;break;case 4:HEAP[HEAP[_not_yet_string_10508]]+=1;HEAP[c+12]=HEAP[_not_yet_string_10508];HEAP[HEAP[_not_yet_string_10508]]+=1;HEAP[c+16]=HEAP[_not_yet_string_10508];HEAP[__Py_NoneStruct]+=1; -HEAP[c+60]=__Py_NoneStruct;HEAP[__Py_NoneStruct]+=1;HEAP[c+64]=__Py_NoneStruct;HEAP[c+68]=0;HEAP[c+72]=0;e=5;break;case 5:a=c;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _file_init(g,e,b){var a=STACKTOP;STACKTOP+=16;_memset(a,0,16);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m=a,n=a+4,o=a+8,p,q,r=a+12;d=g;f=e;h=b;k=d;l=0;HEAP[m]=0;HEAP[n]=__str761629;HEAP[o]=-1;p=0;c=HEAP[k+8]!=0?1:6;break;case 1:q=_file_close(k);c=q==0?2:3;break;case 2:j=-1;c=14;break;case 3:HEAP[q]-=1;c=HEAP[q]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=5;break;case 5:c=p==0?6:10;break;case 6:c=__PyArg_ParseTupleAndKeywords_SizeT(f,h,__str771630,_kwlist_10547,allocate([HEAP[_Py_FileSystemDefaultEncoding], -0,0,0,m,0,0,0,n,0,0,0,o,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?7:8;break;case 7:j=-1;c=14;break;case 8:c=__PyArg_ParseTupleAndKeywords_SizeT(f,h,__str791632,_kwlist_10547,allocate([r,0,0,0,n,0,0,0,o,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?12:9;break;case 9:c=_fill_file_fields(k,0,HEAP[r],HEAP[n],68)==0?12:10;break;case 10:c=_open_the_file(k,HEAP[m],HEAP[n])==0?12:11;break;case 11:HEAP[k+44]=0;_PyFile_SetBufSize(d,HEAP[o]); -c=13;break;case 12:l=-1;c=13;break;case 13:_PyMem_Free(HEAP[m]);j=l;c=14;break;case 14:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyFile_SoftSpace(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;d=0;b=a!=0?1:16;break;case 1:b=HEAP[a+4]==_PyFile_Type?3:2;break;case 2:b=_PyType_IsSubtype(HEAP[a+4],_PyFile_Type)!=0?3:4;break;case 3:d=HEAP[a+24];HEAP[a+24]=c;b=16;break;case 4:f=_PyObject_GetAttrString(a,__str731626);b=f==0?5:6;break;case 5:_PyErr_Clear();b=10;break;case 6:b=(HEAP[HEAP[f+4]+84]&8388608)!=0?7:8;break;case 7:d=_PyInt_AsLong(f);b=8;break;case 8:HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=10;break;case 10:f=b=_PyInt_FromLong(c);b=b==0?11:12;break;case 11:_PyErr_Clear();b=16;break;case 12:b=_PyObject_SetAttrString(a,__str731626,f)!=0?13:14;break;case 13:_PyErr_Clear();b=14;break;case 14:HEAP[f]-=1;b=HEAP[f]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=16;break;case 16:return a=d;default:assert(0,"bad label: "+b)}} -function _PyFile_WriteObject(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u;d=g;f=e;h=b;a=f==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str811635);k=-1;a=46;break;case 2:a=HEAP[f+4]==_PyFile_Type?4:3;break;case 3:a=_PyType_IsSubtype(HEAP[f+4],_PyFile_Type)!=0?4:18;break;case 4:p=f;q=HEAP[p+60];a=HEAP[p+8]==0?5:6;break;case 5:_err_closed();k=-1;a=46;break;case 6:a=((h&1)!=0^1)!=0?14:7;break;case 7:a=(HEAP[HEAP[d+4]+84]&268435456)==0?14:8;break;case 8:a= -q==__Py_NoneStruct?14:9;break;case 9:u=q+20;a=HEAP[p+64]!=__Py_NoneStruct?10:11;break;case 10:j=HEAP[p+64]+20;a=12;break;case 11:j=__str361589;a=12;break;case 12:m=j;m=a=_PyUnicodeUCS2_AsEncodedString(d,u,m);a=a==0?13:15;break;case 13:k=-1;a=46;break;case 14:m=d;HEAP[m]+=1;a=15;break;case 15:r=_file_PyObject_Print(m,p,h);HEAP[m]-=1;a=HEAP[m]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=17;break;case 17:k=r;a=46;break;case 18:l=_PyObject_GetAttrString(f,__str421595);a=l==0?19:20; -break;case 19:k=-1;a=46;break;case 20:var s=d;a=(h&1)!=0?21:24;break;case 21:var t=d;a=(HEAP[HEAP[s+4]+84]&268435456)!=0?22:23;break;case 22:m=t;HEAP[m]+=1;var v=m,c=22;a=25;break;case 23:var w=_PyObject_Str(t);m=w;c=23;a=25;break;case 24:var x=_PyObject_Repr(s);m=x;c=24;a=25;break;case 25:a=(c==22?v:c==23?w:x)==0?26:29;break;case 26:HEAP[l]-=1;a=HEAP[l]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=28;break;case 28:k=-1;a=46;break;case 29:n=_PyTuple_Pack(1,allocate([m,0,0,0],["%struct.NullImporter*", -0,0,0],ALLOC_STACK));a=n==0?30:35;break;case 30:HEAP[m]-=1;a=HEAP[m]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=32;break;case 32:HEAP[l]-=1;a=HEAP[l]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=34;break;case 34:k=-1;a=46;break;case 35:o=_PyEval_CallObjectWithKeywords(l,n,0);HEAP[n]-=1;a=HEAP[n]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=37;break;case 37:HEAP[m]-=1;a=HEAP[m]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=39; -break;case 39:HEAP[l]-=1;a=HEAP[l]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=41;break;case 41:a=o==0?42:43;break;case 42:k=-1;a=46;break;case 43:HEAP[o]-=1;a=HEAP[o]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=45;break;case 45:k=0;a=46;break;case 46:return g=k;default:assert(0,"bad label: "+a)}} -function _PyFile_WriteString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;b=c==0?1:4;break;case 1:b=_PyErr_Occurred()==0?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_SystemError],__str821636);b=3;break;case 3:d=-1;b=16;break;case 4:b=HEAP[c+4]==_PyFile_Type?6:5;break;case 5:b=_PyType_IsSubtype(HEAP[c+4],_PyFile_Type)!=0?6:9;break;case 6:f=c;h=b=_PyFile_AsFile(c);b=b==0?7:8;break;case 7:_err_closed();d=-1;b=16;break;case 8:HEAP[f+72]+=1;_fputs(a,h);HEAP[f+72]-=1;d=0;b=16;break; -case 9:b=_PyErr_Occurred()==0?10:15;break;case 10:j=_PyString_FromString(a);b=j==0?11:12;break;case 11:d=-1;b=16;break;case 12:k=_PyFile_WriteObject(j,c,1);HEAP[j]-=1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:d=k;b=16;break;case 15:d=-1;b=16;break;case 16:return a=d;default:assert(0,"bad label: "+b)}} -function _PyObject_AsFileDescriptor(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j=a=g;e=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:var k=_PyInt_AsLong(j);d=k;b=1;e=20;break;case 2:var l=a;e=(HEAP[HEAP[j+4]+84]&16777216)!=0?3:4;break;case 3:var m=_PyLong_AsLong(l);d=m;b=3;e=20;break;case 4:f=_PyObject_GetAttrString(l,__str431596);e=f!=0?5:18;break;case 5:h=_PyEval_CallObjectWithKeywords(f,0,0);HEAP[f]-=1;e=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=7;break; -case 7:e=h==0?8:9;break;case 8:c=-1;e=23;break;case 9:var n=h;e=(HEAP[HEAP[h+4]+84]&8388608)!=0?10:12;break;case 10:d=_PyInt_AsLong(n);HEAP[h]-=1;e=HEAP[h]==0?11:19;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=19;break;case 12:e=(HEAP[HEAP[n+4]+84]&16777216)!=0?13:15;break;case 13:d=_PyLong_AsLong(h);HEAP[h]-=1;e=HEAP[h]==0?14:19;break;case 14:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=19;break;case 15:_PyErr_SetString(HEAP[_PyExc_TypeError],__str831637);HEAP[h]-=1;e=HEAP[h]==0?16:17;break; -case 16:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=17;break;case 17:c=-1;e=23;break;case 18:_PyErr_SetString(HEAP[_PyExc_TypeError],__str841638);c=-1;e=23;break;case 19:var o=d,b=19;e=20;break;case 20:e=(b==19?o:b==3?m:k)<0?21:22;break;case 21:_PyErr_Format(HEAP[_PyExc_ValueError],__str851639,allocate([d,0,0,0],["i32",0,0,0],ALLOC_STACK));c=-1;e=23;break;case 22:c=d;e=23;break;case 23:return g=c;default:assert(0,"bad label: "+e)}} -function _Py_UniversalNewlineFgets(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;m=f;p=o=0;c=k!=0?1:7;break;case 1:c=HEAP[k+4]!=_PyFile_Type?2:4;break;case 2:c=_PyType_IsSubtype(HEAP[k+4],_PyFile_Type)==0?3:4;break;case 3:l=___errno_location();HEAP[l]=6;l=0;c=31;break;case 4:c=HEAP[k+48]==0?5:6;break;case 5:l=_fgets(f,h,j);c=31;break;case 6:o=HEAP[k+52];p=HEAP[k+56];c=7;break;case 7:_flockfile(j);n=120;c=18;break;case 8:c=p!=0?9:12;break;case 9:p=0;var q= -o;c=n==10?10:11;break;case 10:o=q|4;var r=n=_getc_unlocked(j);r==-1?(d=10,c=21):(d=10,c=13);break;case 11:o=q|1;c=12;break;case 12:var u=n,d=12;c=13;break;case 13:c=(d==12?u:r)==13?14:15;break;case 14:p=1;n=10;c=17;break;case 15:c=n==10?16:17;break;case 16:o|=2;c=17;break;case 17:HEAP[m]=n&255;m+=1;c=n==10?23:18;break;case 18:h=c=h-1;c=c<=0?20:19;break;case 19:n=_getc_unlocked(j);c=n!=-1?8:21;break;case 20:c=n==-1?21:23;break;case 21:c=p!=0?22:23;break;case 22:o|=1;c=23;break;case 23:_funlockfile(j); -HEAP[m]=0;c=k!=0?24:25;break;case 24:HEAP[k+52]=o;HEAP[k+56]=p;c=28;break;case 25:c=p!=0?26:28;break;case 26:n=_getc_unlocked(j);c=n!=10?27:28;break;case 27:_ungetc(n,j);c=28;break;case 28:c=m==f?29:30;break;case 29:l=0;c=31;break;case 30:l=f;c=31;break;case 31:return g=l;default:assert(0,"bad label: "+c)}} -function _Py_UniversalNewlineFread(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s;f=g;h=e;j=b;k=a;m=f;n=k;c=k==0?3:1;break;case 1:c=HEAP[k+4]==_PyFile_Type?4:2;break;case 2:c=_PyType_IsSubtype(HEAP[k+4],_PyFile_Type)==0?3:4;break;case 3:l=___errno_location();HEAP[l]=6;l=0;c=27;break;case 4:c=HEAP[n+48]==0?5:6;break;case 5:l=_fread(f,1,h,j);c=27;break;case 6:o=HEAP[n+52];p=HEAP[n+56];c=25;break;case 7:u=m;q=_fread(m,1,h,j);c=q==0?26:8;break;case 8:h-=q;var t=h!=0; -r=t;q=d=q-1;d!=-1?(d=8,c=9):(d=8,c=21);break;case 9:s=c=HEAP[u];u+=1;c=c==13?10:12;break;case 10:HEAP[m]=10;m+=1;p=1;c=11;break;case 11:q=c=q-1;c=c!=-1?9:20;break;case 12:var v=s;c=p==0?15:13;break;case 13:c=v!=10?17:14;break;case 14:p=0;o|=4;h+=1;c=11;break;case 15:c=v==10?16:17;break;case 16:o|=2;c=19;break;case 17:c=p!=0?18:19;break;case 18:o|=1;c=19;break;case 19:HEAP[m]=s;m+=1;p=0;c=11;break;case 20:var w=r,d=20;c=21;break;case 21:c=(d==20?w:t)!=0?22:25;break;case 22:c=p!=0?23:26;break;case 23:c= -_feof(j)!=0?24:26;break;case 24:o|=1;c=26;break;case 25:c=h!=0?7:26;break;case 26:HEAP[n+52]=o;HEAP[n+56]=p;l=m-f;c=27;break;case 27:return g=l;default:assert(0,"bad label: "+c)}} -function __Py_addfirstsets(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[_Py_DebugFlag]!=0?1:2;break;case 1:_puts(__str1647);e=2;break;case 2:a=0;e=HEAP[b]>a?3:6;break;case 3:c=HEAP[b+4]+24*a;e=HEAP[c+20]==0?4:5;break;case 4:_calcfirstset(b,c);e=5;break;case 5:a+=1;e=HEAP[b]>a?3:6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _calcfirstset(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r;a=g;c=e;b=HEAP[_Py_DebugFlag]!=0?1:2;break;case 1:_printf(__str11648,allocate([HEAP[c+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=2;break;case 2:b=HEAP[_dummy_8427]==0?3:4;break;case 3:b=__Py_newbitset(1);HEAP[_dummy_8427]=b;b=4;break;case 4:var u=c;b=HEAP[c+20]==HEAP[_dummy_8427]?5:6;break;case 5:_fprintf(HEAP[_stderr],__str21649,allocate([HEAP[u+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=40;break;case 6:b=HEAP[u+ -20]!=0?7:8;break;case 7:_fprintf(HEAP[_stderr],__str31650,allocate([HEAP[c+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=8;break;case 8:HEAP[c+20]=HEAP[_dummy_8427];r=HEAP[a+8+4];n=HEAP[a+8];o=__Py_newbitset(n);m=b=_malloc(4);b=b==0?9:10;break;case 9:throw _Py_FatalError(__str41651),"Reached an unreachable!";case 10:l=1;f=__Py_findlabel(a+8,HEAP[c],0);HEAP[m]=f;j=HEAP[c+16]+24*HEAP[c+8];f=0;b=32;break;case 11:k=HEAP[j+4]+4*f;h=0;b=14;break;case 12:b=HEAP[m+4*h]==HEAP[k]?15:13;break;case 13:h+=1;b=14;break; -case 14:b=h=l?16:31;break;case 16:b=(l+1)*4>=0?17:20;break;case 17:b=(l+1)*4!=0?18:19;break;case 18:d=(l+1)*4;b=21;break;case 19:d=1;b=21;break;case 20:m=0;b=22;break;case 21:m=b=_realloc(m,d);b=b==0?22:23;break;case 22:throw _Py_FatalError(__str51652),"Reached an unreachable!";case 23:HEAP[m+4*l]=HEAP[k];l+=1;p=HEAP[r+8*HEAP[k]];b=p>255?24:29;break;case 24:q=_PyGrammar_FindDFA(a,p);b=HEAP[q+20]==HEAP[_dummy_8427]?25:26;break;case 25:_fprintf(HEAP[_stderr],__str61653,allocate([HEAP[c+ -4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=31;break;case 26:b=HEAP[q+20]==0?27:28;break;case 27:_calcfirstset(a,q);b=28;break;case 28:__Py_mergebitset(o,HEAP[q+20],n);b=31;break;case 29:b=p<=255?30:31;break;case 30:__Py_addbit(o,HEAP[k]);b=31;break;case 31:f+=1;b=32;break;case 32:b=HEAP[j]>f?11:33;break;case 33:HEAP[c+20]=o;b=HEAP[_Py_DebugFlag]!=0?34:39;break;case 34:_printf(__str71654,allocate([HEAP[c+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));f=0;b=f>(f& -7)&1)!=0?36:37;break;case 36:b=_PyGrammar_LabelRepr(r+8*f);_printf(__str81655,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=37;break;case 37:f+=1;b=fa?(e=2,g=3):(e=2,g=4);break;case 3:HEAP[(e==3?f:d)+4]=c+-16;c+=-16;var f=c;c>a?g=e=3:(e=3,g=4);break;case 4:HEAP[(e==2?d:f)+4]=0;b=a+992+-16;g=5;break;case 5:return g=b;default:assert(0,"bad label: "+g)}}function _PyFloat_GetMax(){return 1.7976931348623157E308} -function _PyFloat_GetMin(){return 2.2250738585072014E-308} -function _PyFloat_GetInfo(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c;a=0;b=_PyStructSequence_New(_FloatInfoType);g=b==0?1:2;break;case 1:e=0;g=8;break;case 2:var d=b;g=a;var f=_PyFloat_FromDouble(1.7976931348623157E308);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(1024);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(308);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyFloat_FromDouble(2.2250738585072014E-308);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(-1021);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(-307); -HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(15);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(53);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyFloat_FromDouble(2.220446049250313E-16);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(2);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_llvm_flt_rounds();f=_PyInt_FromLong(f);HEAP[d+12+g*4]=f;a+=1;g=_PyErr_Occurred();d=b;g=g!=0?3:7;break;case 3:g=d!=0?4:6;break;case 4:c=b;b=0;HEAP[c]-=1;g=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=6;break;case 6:e= -0;g=8;break;case 7:e=d;g=8;break;case 8:return e;default:assert(0,"bad label: "+g)}}function _PyFloat_FromDouble(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_free_list1657]==0?1:3;break;case 1:e=_fill_free_list();HEAP[_free_list1657]=e;e=HEAP[_free_list1657]==0?2:3;break;case 2:a=0;e=4;break;case 3:a=HEAP[_free_list1657];HEAP[_free_list1657]=HEAP[a+4];HEAP[a+4]=_PyFloat_Type;HEAP[a]=1;HEAP[a+8]=b;e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFloat_FromString(g,e){var b=STACKTOP;STACKTOP+=268;_memset(b,0,268);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k=b,l,m=b+4,n,o=b+8,p,q=b+264,r;d=g;f=e;r=p=0;a=f!=0?1:2;break;case 1:HEAP[f]=0;a=2;break;case 2:var u=d;a=(HEAP[HEAP[d+4]+84]&134217728)!=0?3:4;break;case 3:HEAP[k]=u+20;HEAP[q]=HEAP[d+8];a=16;break;case 4:var s=d;a=(HEAP[HEAP[u+4]+84]&268435456)!=0?5:14;break;case 5:a=HEAP[s+8]+1>=0?6:9;break;case 6:a=HEAP[d+8]!=-1?7:8;break;case 7:j=HEAP[d+8]+1;a=10;break;case 8:j= -1;a=10;break;case 9:p=0;a=11;break;case 10:p=a=_malloc(j);a=a==0?11:12;break;case 11:h=_PyErr_NoMemory();a=28;break;case 12:a=_PyUnicodeUCS2_EncodeDecimal(HEAP[d+12],HEAP[d+8],p,0)!=0?25:13;break;case 13:HEAP[k]=p;a=_strlen(HEAP[k]);HEAP[q]=a;a=16;break;case 14:a=_PyObject_AsCharBuffer(s,k,q)!=0?15:16;break;case 15:_PyErr_SetString(HEAP[_PyExc_TypeError],__str231681);h=0;a=28;break;case 16:l=HEAP[k]+HEAP[q];var t=HEAP[k];(HEAP[__Py_ctype_table+HEAP[HEAP[k]]*4]&8)!=0?(c=16,a=17):(c=16,a=18);break; -case 17:HEAP[k]=(c==17?v:t)+1;var v=HEAP[k];(HEAP[__Py_ctype_table+HEAP[HEAP[k]]*4]&8)!=0?a=c=17:(c=17,a=18);break;case 18:n=a=_PyOS_string_to_double(c==16?t:v,m,0);a=a==-1?19:20;break;case 19:a=_PyErr_Occurred()!=0?25:20;break;case 20:var w=HEAP[m];(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?(c=20,a=21):(c=20,a=22);break;case 21:HEAP[m]=(c==21?x:w)+1;var x=HEAP[m];(HEAP[__Py_ctype_table+HEAP[HEAP[m]]*4]&8)!=0?a=c=21:(c=21,a=22);break;case 22:a=(c==20?w:x)==l?23:24;break;case 23:r=_PyFloat_FromDouble(n); -a=25;break;case 24:_PyOS_snprintf(o,256,__str241682,allocate([HEAP[k],0,0,0],["i8*",0,0,0],ALLOC_STACK));_PyErr_SetString(HEAP[_PyExc_ValueError],o);r=0;a=25;break;case 25:a=p!=0?26:27;break;case 26:_free(p);a=27;break;case 27:h=r;a=28;break;case 28:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _float_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a=b=g;e=HEAP[b+4]==_PyFloat_Type?1:2;break;case 1:HEAP[a+4]=HEAP[_free_list1657];HEAP[_free_list1657]=b;e=3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+160]](b);e=3;break;case 3:return;default:assert(0,"bad label: "+e)}} -function _PyFloat_AsDouble(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=b!=0?1:5;break;case 1:e=HEAP[b+4]==_PyFloat_Type?3:2;break;case 2:e=_PyType_IsSubtype(HEAP[b+4],_PyFloat_Type)!=0?3:4;break;case 3:a=HEAP[b+8];e=17;break;case 4:e=b==0?5:6;break;case 5:_PyErr_BadArgument();a=-1;e=17;break;case 6:c=HEAP[HEAP[b+4]+48];e=c==0?8:7;break;case 7:e=HEAP[c+80]==0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str251683);a=-1;e=17;break;case 9:d=FUNCTION_TABLE[HEAP[c+80]](b);e= -d==0?10:11;break;case 10:a=-1;e=17;break;case 11:e=HEAP[d+4]!=_PyFloat_Type?12:14;break;case 12:e=_PyType_IsSubtype(HEAP[d+4],_PyFloat_Type)==0?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_TypeError],__str261684);a=-1;e=17;break;case 14:f=HEAP[d+8];HEAP[d]-=1;e=HEAP[d]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=16;break;case 16:a=f;e=17;break;case 17:return g=a;default:assert(0,"bad label: "+e)}} -function _convert_to_double(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;var h=f=HEAP[a];b=(HEAP[HEAP[f+4]+84]&8388608)!=0?1:2;break;case 1:HEAP[c]=HEAP[h+8];b=7;break;case 2:b=(HEAP[HEAP[h+4]+84]&16777216)!=0?3:6;break;case 3:b=_PyLong_AsDouble(f);HEAP[c]=b;b=HEAP[c]==-1?4:7;break;case 4:b=_PyErr_Occurred()!=0?5:7;break;case 5:HEAP[a]=0;d=-1;b=8;break;case 6:HEAP[__Py_NotImplementedStruct]+=1;HEAP[a]=__Py_NotImplementedStruct;d=-1;b=8;break;case 7:d=0;b=8;break;case 8:return a=d;default:assert(0, -"bad label: "+b)}}function _PyFloat_AsString(g,e){var b;b=_PyOS_double_to_string(HEAP[e+8],103,12,2,0);_strcpy(g,b);_PyMem_Free(b)}function _PyFloat_AsReprString(g,e){var b;b=_PyOS_double_to_string(HEAP[e+8],114,0,2,0);_strcpy(g,b);_PyMem_Free(b)} -function _float_print(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d;a=g;c=e;var f=HEAP[a+8];a=(b&1)!=0?1:2;break;case 1:d=_PyOS_double_to_string(f,103,12,2,0);a=3;break;case 2:d=_PyOS_double_to_string(f,114,0,2,0);a=3;break;case 3:return _fputs(d,c),_PyMem_Free(d),0;default:assert(0,"bad label: "+a)}} -function _float_str_or_repr(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d;d=_PyOS_double_to_string(HEAP[g+8],b&255,e,2,0);a=d==0?1:2;break;case 1:c=_PyErr_NoMemory();a=3;break;case 2:a=_PyString_FromString(d);_PyMem_Free(d);c=a;a=3;break;case 3:return g=c;default:assert(0,"bad label: "+a)}}function _float_repr(g){return _float_str_or_repr(g,0,114)}function _float_str(g){return _float_str_or_repr(g,12,103)} -function _float_richcompare(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r,u=a,s,t=a+4,v,w,x,y,z;f=g;h=e;j=b;o=0;f=HEAP[f+8];c=HEAP[h+4]==_PyFloat_Type?2:1;break;case 1:c=_PyType_IsSubtype(HEAP[h+4],_PyFloat_Type)!=0?2:3;break;case 2:n=HEAP[h+8];c=59;break;case 3:c=___finite(f);var C=(HEAP[HEAP[h+4]+84]&8388608)!=0;c=c==0?4:7;break;case 4:c=C?6:5;break;case 5:c=(HEAP[HEAP[h+4]+84]&16777216)!=0?6:67;break;case 6:n=0;c=59;break; -case 7:var A=h;c=C?8:9;break;case 8:n=HEAP[A+8];c=59;break;case 9:c=(HEAP[HEAP[A+4]+84]&16777216)!=0?10:67;break;case 10:c=f!=0?11:15;break;case 11:c=f<0?12:13;break;case 12:l=-1;c=14;break;case 13:l=1;c=14;break;case 14:m=l;c=16;break;case 15:m=0;c=16;break;case 16:p=m;q=__PyLong_Sign(h);c=p!=q?17:18;break;case 17:f=p;n=q;c=59;break;case 18:var G=r=__PyLong_NumBits(h);G==-1?(d=18,c=19):(d=18,c=22);break;case 19:c=_PyErr_Occurred()!=0?20:21;break;case 20:_PyErr_Clear();f=p;n=q*2;c=59;break;case 21:var E= -r,d=21;c=22;break;case 22:c=(d==21?E:G)<=48?23:24;break;case 23:n=_PyLong_AsDouble(h);c=59;break;case 24:c=p<0?25:26;break;case 25:f=0-f;j=HEAP[__Py_SwappedOp+j*4];c=26;break;case 26:_frexp(f,u);c=HEAP[u]<0?28:27;break;case 27:c=HEAP[u]r?30:31;break;case 30:f=2;n=1;c=59;break;case 31:x=w=v=0;y=h;c=q<0?32:33;break;case 32:y=_PyNumber_Negative(h);c=y==0?49:34;break;case 33:HEAP[y]+=1;c=34;break;case 34:s=_modf(f,t);x=c=_PyLong_FromDouble(HEAP[t]); -c=c==0?52:35;break;case 35:c=s!=0?36:47;break;case 36:w=_PyInt_FromLong(1);c=w==0?49:37;break;case 37:z=_PyNumber_Lshift(y,w);c=z==0?49:38;break;case 38:HEAP[y]-=1;c=HEAP[y]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);c=40;break;case 40:y=z;z=c=_PyNumber_Lshift(x,w);c=c==0?49:41;break;case 41:HEAP[x]-=1;c=HEAP[x]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);c=43;break;case 43:x=z;z=c=_PyNumber_Or(x,w);c=c==0?49:44;break;case 44:HEAP[x]-=1;c=HEAP[x]==0?45:46;break; -case 45:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);c=46;break;case 46:x=z;c=47;break;case 47:o=c=_PyObject_RichCompareBool(x,y,j);c=c<0?49:48;break;case 48:v=_PyBool_FromLong(o);c=49;break;case 49:c=x!=0?50:52;break;case 50:HEAP[x]-=1;c=HEAP[x]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);c=52;break;case 52:c=y!=0?53:55;break;case 53:HEAP[y]-=1;c=HEAP[y]==0?54:55;break;case 54:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);c=55;break;case 55:c=w!=0?56:58;break;case 56:HEAP[w]-=1;c=HEAP[w]==0?57: -58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);c=58;break;case 58:k=v;c=68;break;case 59:c=j;c=c==0?64:c==1?62:c==2?60:c==3?61:c==4?65:c==5?63:66;break;case 60:o=f==n;c=66;break;case 61:o=f!=n;c=66;break;case 62:o=f<=n;c=66;break;case 63:o=f>=n;c=66;break;case 64:o=fn;c=66;break;case 66:k=_PyBool_FromLong(o);c=68;break;case 67:HEAP[__Py_NotImplementedStruct]+=1;k=__Py_NotImplementedStruct;c=68;break;case 68:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _float_hash(g){return __Py_HashDouble(HEAP[g+8])} -function _float_add(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+16;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[h]=HEAP[HEAP[c]+8];a=5;break;case 3:a=_convert_to_double(c,h)<0?4:5;break;case 4:f=HEAP[c];a=11;break;case 5:a=HEAP[HEAP[d]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?7:8;break; -case 7:HEAP[j]=HEAP[HEAP[d]+8];a=10;break;case 8:a=_convert_to_double(d,j)<0?9:10;break;case 9:f=HEAP[d];a=11;break;case 10:HEAP[h]+=HEAP[j];f=_PyFloat_FromDouble(HEAP[h]);a=11;break;case 11:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _float_sub(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+16;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[h]=HEAP[HEAP[c]+8];a=5;break;case 3:a=_convert_to_double(c,h)<0?4:5;break;case 4:f=HEAP[c];a=11;break;case 5:a=HEAP[HEAP[d]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?7:8;break; -case 7:HEAP[j]=HEAP[HEAP[d]+8];a=10;break;case 8:a=_convert_to_double(d,j)<0?9:10;break;case 9:f=HEAP[d];a=11;break;case 10:HEAP[h]-=HEAP[j];f=_PyFloat_FromDouble(HEAP[h]);a=11;break;case 11:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _float_mul(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+16;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[h]=HEAP[HEAP[c]+8];a=5;break;case 3:a=_convert_to_double(c,h)<0?4:5;break;case 4:f=HEAP[c];a=11;break;case 5:a=HEAP[HEAP[d]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?7:8;break; -case 7:HEAP[j]=HEAP[HEAP[d]+8];a=10;break;case 8:a=_convert_to_double(d,j)<0?9:10;break;case 9:f=HEAP[d];a=11;break;case 10:HEAP[h]*=HEAP[j];f=_PyFloat_FromDouble(HEAP[h]);a=11;break;case 11:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _float_div(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a,c=null;for(a=-1;;)switch(a){case -1:var d=b,f=b+4,h,j=b+8,k=b+16;HEAP[d]=g;HEAP[f]=e;a=HEAP[HEAP[d]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[j]=HEAP[HEAP[d]+8];a=5;break;case 3:a=_convert_to_double(d,j)<0?4:5;break;case 4:h=HEAP[d];a=14;break;case 5:a=HEAP[HEAP[f]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFloat_Type)!=0?7: -8;break;case 7:var l=HEAP[HEAP[f]+8];HEAP[k]=l;c=7;a=11;break;case 8:a=_convert_to_double(f,k)<0?9:10;break;case 9:h=HEAP[f];a=14;break;case 10:var m=HEAP[k],c=10;a=11;break;case 11:a=(c==10?m:l)==0?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str271685);h=0;a=14;break;case 13:HEAP[j]/=HEAP[k];h=_PyFloat_FromDouble(HEAP[j]);a=14;break;case 14:return a=h,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _float_classic_div(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h=b+8,j=b+16;HEAP[c]=g;HEAP[d]=e;a=HEAP[HEAP[c]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[h]=HEAP[HEAP[c]+8];a=5;break;case 3:a=_convert_to_double(c,h)<0?4:5;break;case 4:f=HEAP[c];a=16;break;case 5:a=HEAP[HEAP[d]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?7: -8;break;case 7:HEAP[j]=HEAP[HEAP[d]+8];a=10;break;case 8:a=_convert_to_double(d,j)<0?9:10;break;case 9:f=HEAP[d];a=16;break;case 10:a=HEAP[_Py_DivisionWarningFlag]>1?11:13;break;case 11:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str281686,1)<0?12:13;break;case 12:f=0;a=16;break;case 13:a=HEAP[j]==0?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str271685);f=0;a=16;break;case 15:HEAP[h]/=HEAP[j];f=_PyFloat_FromDouble(HEAP[h]);a=16;break;case 16:return a=f,STACKTOP=b,a; -default:assert(0,"bad label: "+a)}} -function _float_rem(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a,c=null;for(a=-1;;)switch(a){case -1:var d=b,f=b+4,h,j=b+8,k=b+16,l;HEAP[d]=g;HEAP[f]=e;a=HEAP[HEAP[d]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[j]=HEAP[HEAP[d]+8];a=5;break;case 3:a=_convert_to_double(d,j)<0?4:5;break;case 4:h=HEAP[d];a=19;break;case 5:a=HEAP[HEAP[f]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFloat_Type)!=0? -7:8;break;case 7:var m=HEAP[HEAP[f]+8];HEAP[k]=m;c=7;a=11;break;case 8:a=_convert_to_double(f,k)<0?9:10;break;case 9:h=HEAP[f];a=19;break;case 10:var n=HEAP[k],c=10;a=11;break;case 11:a=(c==10?n:m)==0?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str291687);h=0;a=19;break;case 13:l=_fmod(HEAP[j],HEAP[k]);a=l!=0?14:16;break;case 14:a=(HEAP[k]<0!=0^l<0!=0)!=0?15:18;break;case 15:l+=HEAP[k];a=18;break;case 16:l*=l;a=HEAP[k]<0?17:18;break;case 17:l=0-l;a=18;break;case 18:h=_PyFloat_FromDouble(l); -a=19;break;case 19:return a=h,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _float_divmod(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a,c=null;for(a=-1;;)switch(a){case -1:var d=b,f=b+4,h,j=b+8,k=b+16,l,m,n;HEAP[d]=g;HEAP[f]=e;a=HEAP[HEAP[d]+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[HEAP[d]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[j]=HEAP[HEAP[d]+8];a=5;break;case 3:a=_convert_to_double(d,j)<0?4:5;break;case 4:h=HEAP[d];a=24;break;case 5:a=HEAP[HEAP[f]+4]==_PyFloat_Type?7:6;break;case 6:a=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFloat_Type)!= -0?7:8;break;case 7:var o=HEAP[HEAP[f]+8];HEAP[k]=o;c=7;a=11;break;case 8:a=_convert_to_double(f,k)<0?9:10;break;case 9:h=HEAP[f];a=24;break;case 10:var p=HEAP[k],c=10;a=11;break;case 11:a=(c==10?p:o)==0?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str301688);h=0;a=24;break;case 13:m=_fmod(HEAP[j],HEAP[k]);l=(HEAP[j]-m)/HEAP[k];a=m!=0?14:16;break;case 14:a=(HEAP[k]<0!=0^m<0!=0)!=0?15:18;break;case 15:m+=HEAP[k];var q=l-1;l=q;c=15;a=19;break;case 16:m*=m;a=HEAP[k]<0?17:18;break; -case 17:m=0-m;a=18;break;case 18:var r=l,c=18;a=19;break;case 19:var u=l;a=(c==18?r:q)!=0?20:22;break;case 20:n=_floor(u);a=l-n>0.5?21:23;break;case 21:n+=1;a=23;break;case 22:l*=u;n=l*HEAP[j]/HEAP[k];a=23;break;case 23:h=_Py_BuildValue(__str311689,allocate([n,0,0,0,0,0,0,0,m,0,0,0,0,0,0,0],["double",0,0,0,0,0,0,0,"double",0,0,0,0,0,0,0],ALLOC_STACK));a=24;break;case 24:return a=h,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _float_floor_div(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f=c=_float_divmod(g,e);b=c==0|c==__Py_NotImplementedStruct?1:2;break;case 1:a=f;b=5;break;case 2:d=HEAP[f+12];HEAP[d]+=1;HEAP[c]-=1;b=HEAP[c]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=4;break;case 4:a=d;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _float_pow(g,e,b){var a=STACKTOP;STACKTOP+=24;_memset(a,0,24);var c,d=null;for(c=-1;;)switch(c){case -1:var f=a,h=a+4,j,k,l,m,n,o,p,q=a+8,r=a+16,u,s,t,v;HEAP[f]=g;HEAP[h]=e;c=b;s=0;c=c!=__Py_NoneStruct?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str321690);p=0;c=68;break;case 2:c=HEAP[HEAP[f]+4]==_PyFloat_Type?4:3;break;case 3:c=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFloat_Type)!=0?4:5;break;case 4:HEAP[q]=HEAP[HEAP[f]+8];c=7;break;case 5:c=_convert_to_double(f,q)<0?6:7;break; -case 6:p=HEAP[f];c=68;break;case 7:c=HEAP[HEAP[h]+4]==_PyFloat_Type?9:8;break;case 8:c=_PyType_IsSubtype(HEAP[HEAP[h]+4],_PyFloat_Type)!=0?9:10;break;case 9:var w=HEAP[HEAP[h]+8];HEAP[r]=w;d=9;c=13;break;case 10:c=_convert_to_double(h,r)<0?11:12;break;case 11:p=HEAP[h];c=68;break;case 12:var x=HEAP[r],d=12;c=13;break;case 13:c=(d==12?x:w)==0?14:15;break;case 14:p=_PyFloat_FromDouble(1);c=68;break;case 15:c=___isnan(HEAP[q])!=0?16:17;break;case 16:p=_PyFloat_FromDouble(HEAP[q]);c=68;break;case 17:c= -___isnan(HEAP[r])!=0?18:22;break;case 18:c=HEAP[q]!=1?19:20;break;case 19:o=HEAP[r];c=21;break;case 20:o=1;c=21;break;case 21:p=_PyFloat_FromDouble(o);c=68;break;case 22:c=___isinf(HEAP[r]);var y=HEAP[q];c=c!=0?23:28;break;case 23:c=_fabs(y);HEAP[q]=c;c=HEAP[q]==1?24:25;break;case 24:p=_PyFloat_FromDouble(1);c=68;break;case 25:c=(HEAP[r]<=0!=0^HEAP[q]>1!=0)!=0?26:27;break;case 26:p=_fabs(HEAP[r]);p=_PyFloat_FromDouble(p);c=68;break;case 27:p=_PyFloat_FromDouble(0);c=68;break;case 28:c=___isinf(y)!= -0?29:38;break;case 29:t=_fabs(HEAP[r]);t=_fmod(t,2)==1;c=HEAP[r]>0?30:34;break;case 30:var z=HEAP[q];c=t==0?31:32;break;case 31:n=_fabs(z);c=33;break;case 32:n=z;c=33;break;case 33:p=_PyFloat_FromDouble(n);c=68;break;case 34:c=t!=0?35:36;break;case 35:m=_copysign(0,HEAP[q]);c=37;break;case 36:m=0;c=37;break;case 37:p=_PyFloat_FromDouble(m);c=68;break;case 38:c=HEAP[q]==0?39:45;break;case 39:v=_fabs(HEAP[r]);v=_fmod(v,2)==1;c=HEAP[r]<0?40:41;break;case 40:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError], -__str331691);p=0;c=68;break;case 41:c=v!=0?42:43;break;case 42:l=HEAP[q];c=44;break;case 43:l=0;c=44;break;case 44:p=_PyFloat_FromDouble(l);c=68;break;case 45:var C=HEAP[q];C<0?(d=45,c=46):(d=45,c=49);break;case 46:c=_floor(HEAP[r])!=HEAP[r]?47:48;break;case 47:_PyErr_SetString(HEAP[_PyExc_ValueError],__str341692);p=0;c=68;break;case 48:HEAP[q]=0-HEAP[q];d=_fabs(HEAP[r]);s=_fmod(d,2)==1;var A=HEAP[q],d=48;c=49;break;case 49:c=(d==48?A:C)==1?50:54;break;case 50:c=s!=0?51:52;break;case 51:k=-1;c=53; -break;case 52:k=1;c=53;break;case 53:p=_PyFloat_FromDouble(k);c=68;break;case 54:u=___errno_location();HEAP[u]=0;u=_llvm_pow_f64(HEAP[q],HEAP[r]);c=___errno_location();c=HEAP[c]==0?55:57;break;case 55:c=u==Infinity|u==-Infinity?56:60;break;case 56:c=___errno_location();HEAP[c]=34;c=60;break;case 57:c=___errno_location();c=HEAP[c]==34?58:60;break;case 58:c=u==0?59:60;break;case 59:c=___errno_location();HEAP[c]=0;c=60;break;case 60:c=s!=0?61:62;break;case 61:u=0-u;c=62;break;case 62:c=___errno_location(); -c=HEAP[c]!=0?63:67;break;case 63:c=___errno_location();c=HEAP[c]==34?64:65;break;case 64:j=HEAP[_PyExc_OverflowError];c=66;break;case 65:j=HEAP[_PyExc_ValueError];c=66;break;case 66:_PyErr_SetFromErrno(j);p=0;c=68;break;case 67:p=_PyFloat_FromDouble(u);c=68;break;case 68:return g=p,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _float_neg(g){return _PyFloat_FromDouble(0-HEAP[g+8])}function _float_abs(g){g=_fabs(HEAP[g+8]);return _PyFloat_FromDouble(g)} -function _float_nonzero(g){return HEAP[g+8]!=0} -function _float_coerce(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;var h=HEAP[c];b=(HEAP[HEAP[HEAP[c]+4]+84]&8388608)!=0?1:2;break;case 1:b=_PyInt_AsLong(h);b=_PyFloat_FromDouble(b);HEAP[c]=b;HEAP[HEAP[a]]+=1;d=0;b=11;break;case 2:var j=HEAP[c];b=(HEAP[HEAP[h+4]+84]&16777216)!=0?3:7;break;case 3:f=_PyLong_AsDouble(j);b=f==-1?4:6;break;case 4:b=_PyErr_Occurred()!=0?5:6;break;case 5:d=-1;b=11;break;case 6:b=_PyFloat_FromDouble(f);HEAP[c]=b;HEAP[HEAP[a]]+=1;d=0;b=11;break;case 7:b=HEAP[j+ -4]==_PyFloat_Type?9:8;break;case 8:b=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyFloat_Type)!=0?9:10;break;case 9:HEAP[HEAP[a]]+=1;HEAP[HEAP[c]]+=1;d=0;b=11;break;case 10:d=1;b=11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}} -function _float_is_integer(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;d=_PyFloat_AsDouble(g);e=d==-1?1:3;break;case 1:e=_PyErr_Occurred()!=0?2:3;break;case 2:c=0;e=14;break;case 3:e=___finite(d)==0?4:5;break;case 4:HEAP[__Py_ZeroStruct]+=1;c=__Py_ZeroStruct;e=14;break;case 5:e=___errno_location();HEAP[e]=0;e=_floor(d)==d?6:7;break;case 6:a=__Py_TrueStruct;e=8;break;case 7:a=__Py_ZeroStruct;e=8;break;case 8:f=a;e=___errno_location();e=HEAP[e]!=0?9:13;break;case 9:e=___errno_location();e=HEAP[e]== -34?10:11;break;case 10:b=HEAP[_PyExc_OverflowError];e=12;break;case 11:b=HEAP[_PyExc_ValueError];e=12;break;case 12:_PyErr_SetFromErrno(b);c=0;e=14;break;case 13:HEAP[f]+=1;c=f;e=14;break;case 14:return g=c;default:assert(0,"bad label: "+e)}} -function _float_trunc(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a;b=e;var c=_PyFloat_AsDouble(g);_modf(c,b);c=HEAP[b];b=HEAP[b]>=-2147483648&HEAP[b]<2147483648?1:2;break;case 1:a=c|0;a=_PyInt_FromLong(a);b=3;break;case 2:a=_PyLong_FromDouble(c);b=3;break;case 3:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _float_long(g){g=_PyFloat_AsDouble(g);return _PyLong_FromDouble(g)} -function __Py_double_round(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;var l=c=e;b=c>=0?1:6;break;case 1:var m=c;b=l>22?2:3;break;case 2:f=_llvm_pow_f64(10,m-22);h=1.0E22;b=4;break;case 3:f=_llvm_pow_f64(10,m);h=1;b=4;break;case 4:j=a*f*h;b=___finite(j)==0?5:7;break;case 5:d=_PyFloat_FromDouble(a);b=15;break;case 6:f=_llvm_pow_f64(10,0-l);h=1;j=a/f;b=7;break;case 7:k=_round(j);b=_fabs(j-k)==0.5?8:9;break;case 8:k=_copysign(0.5,j)+j;b=9;break;case 9:var n=k;b=c>=0?10:11;break;case 10:k= -n/h/f;b=12;break;case 11:k=n*f;b=12;break;case 12:b=___finite(k)==0?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str351693);d=0;b=15;break;case 14:d=_PyFloat_FromDouble(k);b=15;break;case 15:return b=d;default:assert(0,"bad label: "+b)}} -function _float_float(g){var e;for(e=-1;;)switch(e){case -1:var b,a=b=g;e=HEAP[b+4]==_PyFloat_Type?1:2;break;case 1:HEAP[b]=HEAP[a]+1;e=3;break;case 2:b=_PyFloat_FromDouble(HEAP[a+8]);e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _char_from_hex(g){return HEAP[__str535251+g]&255} -function _hex_from_char(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=e==48?1:e==49?2:e==50?3:e==51?4:e==52?5:e==53?6:e==54?7:e==55?8:e==56?9:e==57?10:e==65?11:e==66?12:e==67?13:e==68?14:e==69?15:e==70?16:e==97?11:e==98?12:e==99?13:e==100?14:e==101?15:e==102?16:17;break;case 1:b=0;e=18;break;case 2:b=1;e=18;break;case 3:b=2;e=18;break;case 4:b=3;e=18;break;case 5:b=4;e=18;break;case 6:b=5;e=18;break;case 7:b=6;e=18;break;case 8:b=7;e=18;break;case 9:b=8;e=18;break;case 10:b=9;e=18;break;case 11:b= -10;e=18;break;case 12:b=11;e=18;break;case 13:b=12;e=18;break;case 14:b=13;e=18;break;case 15:b=14;e=18;break;case 16:b=15;e=18;break;case 17:b=-1;e=18;break;case 18:return g=b;default:assert(0,"bad label: "+e)}} -function _float_hex(g){var e=STACKTOP;STACKTOP+=32;_memset(e,0,32);var b;for(b=-1;;)switch(b){case -1:var a=e,c,d=e+4,f,h=e+12,j,k,l,m=e+16;HEAP[a]=g;b=HEAP[HEAP[a]+4]==_PyFloat_Type?2:1;break;case 1:b=_PyType_IsSubtype(HEAP[HEAP[a]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[d]=HEAP[HEAP[a]+8];b=5;break;case 3:b=_convert_to_double(a,d)<0?4:5;break;case 4:c=HEAP[a];b=20;break;case 5:b=___isnan(HEAP[d])!=0?7:6;break;case 6:b=___isinf(HEAP[d])!=0?7:8;break;case 7:c=_float_str(HEAP[a]);b=20;break;case 8:var n= -HEAP[d];b=HEAP[d]==0?9:12;break;case 9:b=_copysign(1,n)==-1?10:11;break;case 10:c=_PyString_FromString(__str371695);b=20;break;case 11:c=_PyString_FromString(__str381696);b=20;break;case 12:f=_fabs(n);f=_frexp(f,h);j=-1021-HEAP[h];j=1-(j>=0?j:0);f=_ldexp(f,j);HEAP[h]-=j;k=j=0;b=_char_from_hex(f|0);HEAP[m+k]=b;j+=1;f-=f|0;HEAP[m+j]=46;j+=1;k=0;b=13;break;case 13:f*=16;b=j;var o=_char_from_hex(f|0);HEAP[m+b]=o;j+=1;f-=f|0;k=b=k+1;b=b<=12?13:14;break;case 14:HEAP[m+j]=0;b=HEAP[h]<0?15:16;break;case 15:l= -45;HEAP[h]=0-HEAP[h];b=17;break;case 16:l=43;b=17;break;case 17:var p=HEAP[h],q=m,r=l;b=HEAP[d]<0?18:19;break;case 18:c=_PyString_FromFormat(__str391697,allocate([q,0,0,0,r,0,0,0,p,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));b=20;break;case 19:c=_PyString_FromFormat(__str401698,allocate([q,0,0,0,r,0,0,0,p,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));b=20;break;case 20:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _case_insensitive_match(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=2;break;case 1:a+=1;c+=1;b=2;break;case 2:b=HEAP[c]==0?4:3;break;case 3:b=HEAP[__Py_ctype_tolower+HEAP[a]]==HEAP[c]?1:4;break;case 4:return b=HEAP[c]==0;default:assert(0,"bad label: "+b)}} -function _float_fromhex(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w=b,x,y,z,C,A,G,E,D,R,M=b+4,L,I,J;d=g;a=e;R=1;a=_PyString_AsStringAndSize(a,w,M)!=0?1:2;break;case 1:o=0;a=110;break;case 2:A=HEAP[w]+HEAP[M];var F=HEAP[w];(HEAP[__Py_ctype_table+HEAP[HEAP[w]]*4]&8)!=0?(c=2,a=3):(c=2,a=4);break;case 3:HEAP[w]=(c==3?V:F)+1;var V=HEAP[w];(HEAP[__Py_ctype_table+HEAP[HEAP[w]]*4]&8)!=0?a=c=3:(c=3,a=4);break;case 4:var Q=HEAP[w]; -a=HEAP[c==2?F:V]==45?5:6;break;case 5:HEAP[w]=Q+1;R=-1;a=8;break;case 6:a=HEAP[Q]==43?7:8;break;case 7:HEAP[w]+=1;a=8;break;case 8:a=HEAP[HEAP[w]]==105?10:9;break;case 9:a=HEAP[HEAP[w]]==73?10:13;break;case 10:a=_case_insensitive_match(HEAP[w]+1,__str411699)==0?108:11;break;case 11:HEAP[w]+=3;r=Infinity;a=_case_insensitive_match(HEAP[w],__str421700)!=0?12:99;break;case 12:HEAP[w]+=5;a=99;break;case 13:a=HEAP[HEAP[w]]==110?15:14;break;case 14:a=HEAP[HEAP[w]]==78?15:17;break;case 15:a=_case_insensitive_match(HEAP[w]+ -1,__str431701)==0?108:16;break;case 16:HEAP[w]+=3;r=NaN;a=99;break;case 17:y=HEAP[w];a=HEAP[HEAP[w]]==48?18:22;break;case 18:HEAP[w]+=1;a=HEAP[HEAP[w]]==120?20:19;break;case 19:a=HEAP[HEAP[w]]==88?20:21;break;case 20:HEAP[w]+=1;a=22;break;case 21:HEAP[w]=y;a=22;break;case 22:x=HEAP[w];var c=_hex_from_char(HEAP[HEAP[w]]&255),Z=HEAP[w];c>=0?(c=22,a=23):(c=22,a=24);break;case 23:HEAP[w]=(c==23?K:Z)+1;var c=_hex_from_char(HEAP[HEAP[w]]&255),K=HEAP[w];c>=0?a=c=23:(c=23,a=24);break;case 24:y=c==22?Z:K; -var N=HEAP[w];a=HEAP[HEAP[w]]==46?25:28;break;case 25:HEAP[w]=N+1;var c=_hex_from_char(HEAP[HEAP[w]]&255),H=HEAP[w];c>=0?(c=25,a=26):(c=25,a=27);break;case 26:HEAP[w]=(c==26?ba:H)+1;var c=_hex_from_char(HEAP[HEAP[w]]&255),ba=HEAP[w];c>=0?a=c=26:(c=26,a=27);break;case 27:z=(c==25?H:ba)+-1;a=29;break;case 28:z=N;a=29;break;case 29:L=z-x;I=z-y;a=L==0?108:30;break;case 30:a=L>268435187?109:31;break;case 31:a=HEAP[HEAP[w]]==112?33:32;break;case 32:a=HEAP[HEAP[w]]==80?33:43;break;case 33:HEAP[w]+=1;C=HEAP[w]; -a=HEAP[HEAP[w]]==45?35:34;break;case 34:a=HEAP[HEAP[w]]==43?35:36;break;case 35:HEAP[w]+=1;a=36;break;case 36:a=HEAP[HEAP[w]]<=47?108:37;break;case 37:a=HEAP[HEAP[w]]>57?108:38;break;case 38:HEAP[w]+=1;a=40;break;case 39:HEAP[w]+=1;a=40;break;case 40:a=HEAP[HEAP[w]]<=47?42:41;break;case 41:a=HEAP[HEAP[w]]<=57?39:42;break;case 42:u=_strtol(C,0,10);a=45;break;case 43:u=0;a=45;break;case 44:var W=L-1;L=W;c=44;a=46;break;case 45:var B=L,c=45;a=46;break;case 46:a=(c==45?B:W)<=0?51:47;break;case 47:a=L- -11073741823?107:55;break;case 55:u-=I*4;s=u+-4+L*4;a=L-11024?107:64;break;case 64:t=(s>=-1021?s:-1021)-53;r=0;a=u>=t?65:71;break;case 65:J=L-1;var ra=r;L-1>=0?(c=65,a=66):(c=65,a=70);break;case 66:var ya=(c==69?Da:ra)*16;a=J=0?(c=69,a=66):(c=69,a=70);break;case 70:r=_ldexp(c== -65?ra:Da,u);a=99;break;case 71:G=1<<(t+-1+(0-u))%4;v=(t+-1+(0-u))/4|0;J=L-1;a=J>v?72:76;break;case 72:var Ua=r*16;a=Jv?72:76;break;case 76:a=v=0?88:95;break;case 95:a=D==1?96:98;break;case 96:r=G*2+r;a=s==1024?97:98; -break;case 97:a=_ldexp(G*2,53)==r?107:98;break;case 98:r=_ldexp(r,v*4+u);a=99;break;case 99:var wa=HEAP[w];(HEAP[__Py_ctype_table+HEAP[HEAP[w]]*4]&8)!=0?(c=99,a=100):(c=99,a=101);break;case 100:HEAP[w]=(c==100?Ya:wa)+1;var Ya=HEAP[w];(HEAP[__Py_ctype_table+HEAP[HEAP[w]]*4]&8)!=0?a=c=100:(c=100,a=101);break;case 101:a=(c==99?wa:Ya)!=A?108:102;break;case 102:p=_Py_BuildValue(__str441702,allocate([R*r,0,0,0,0,0,0,0],["double",0,0,0,0,0,0,0],ALLOC_STACK));a=p==0?103:104;break;case 103:o=0;a=110;break; -case 104:q=_PyObject_CallObject(d,p);HEAP[p]-=1;a=HEAP[p]==0?105:106;break;case 105:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=106;break;case 106:o=q;a=110;break;case 107:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str451703);o=0;a=110;break;case 108:_PyErr_SetString(HEAP[_PyExc_ValueError],__str461704);o=0;a=110;break;case 109:_PyErr_SetString(HEAP[_PyExc_ValueError],__str471705);o=0;a=110;break;case 110:return d=o,STACKTOP=b,d;default:assert(0,"bad label: "+a)}} -function _float_as_integer_ratio(g){var e=STACKTOP;STACKTOP+=16;_memset(e,0,16);var b,a=null;for(b=-1;;)switch(b){case -1:var c=e,d,f=e+4,h,j=e+12,k,l,m,n,o,p,q;HEAP[c]=g;p=o=n=m=0;q=HEAP[_PyLong_Type+48];b=HEAP[HEAP[c]+4]==_PyFloat_Type?2:1;break;case 1:b=_PyType_IsSubtype(HEAP[HEAP[c]+4],_PyFloat_Type)!=0?2:3;break;case 2:HEAP[f]=HEAP[HEAP[c]+8];b=5;break;case 3:b=_convert_to_double(c,f)<0?4:5;break;case 4:d=HEAP[c];b=42;break;case 5:b=___isinf(HEAP[f])!=0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_OverflowError], -__str481706);d=0;b=42;break;case 7:b=___isnan(HEAP[f])!=0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_ValueError],__str491707);d=0;b=42;break;case 9:h=_frexp(HEAP[f],j);k=0;a=9;b=11;break;case 10:h*=2;HEAP[j]-=1;var r=k+1;k=r;a=10;b=11;break;case 11:b=(a==10?r:0)>299?13:12;break;case 12:b=_floor(h)!=h?10:13;break;case 13:n=b=_PyLong_FromDouble(h);b=b==0?32:14;break;case 14:o=_PyLong_FromLong(1);m=_PyLong_FromLong(HEAP[j]>=0?HEAP[j]:0-HEAP[j]);b=m==0?35:15;break;case 15:l=m;m=FUNCTION_TABLE[HEAP[q+ -48]](o,m);HEAP[l]-=1;b=HEAP[l]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=17;break;case 17:b=m==0?35:18;break;case 18:b=HEAP[j]>0?19:22;break;case 19:l=n;n=FUNCTION_TABLE[HEAP[q+8]](n,m);HEAP[l]-=1;b=HEAP[l]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=21;break;case 21:b=n==0?32:25;break;case 22:HEAP[o]-=1;b=HEAP[o]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);b=24;break;case 24:o=m;m=0;b=25;break;case 25:l=n;n=_PyNumber_Int(n);HEAP[l]-=1;b=HEAP[l]== -0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=27;break;case 27:b=n==0?32:28;break;case 28:l=o;o=_PyNumber_Int(o);HEAP[l]-=1;b=HEAP[l]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=30;break;case 30:b=o==0?32:31;break;case 31:p=_PyTuple_Pack(2,allocate([n,0,0,0,o,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=32;break;case 32:b=m!=0?33:35;break;case 33:HEAP[m]-=1;b=HEAP[m]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m); -b=35;break;case 35:b=o!=0?36:38;break;case 36:HEAP[o]-=1;b=HEAP[o]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);b=38;break;case 38:b=n!=0?39:41;break;case 39:HEAP[n]-=1;b=HEAP[n]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=41;break;case 41:d=p;b=42;break;case 42:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _float_new(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;HEAP[k]=__Py_ZeroStruct;c=d!=_PyFloat_Type?1:2;break;case 1:j=_float_subtype_new(d,f,h);c=7;break;case 2:c=_PyArg_ParseTupleAndKeywords(f,h,__str501708,_kwlist_10262,allocate([k,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:j=0;c=7;break;case 4:var l=HEAP[k];c=HEAP[HEAP[k]+4]==_PyString_Type?5:6;break;case 5:j=_PyFloat_FromString(l,0);c=7; -break;case 6:j=_PyNumber_Float(l);c=7;break;case 7:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _float_subtype_new(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;f=_float_new(_PyFloat_Type,e,b);a=f==0?1:2;break;case 1:d=0;a=9;break;case 2:h=FUNCTION_TABLE[HEAP[c+152]](c,0);a=h==0?3:6;break;case 3:HEAP[f]-=1;a=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=5;break;case 5:d=0;a=9;break;case 6:HEAP[h+8]=HEAP[f+8];HEAP[f]-=1;a=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=8;break;case 8:d=h;a=9;break;case 9:return g=d;default:assert(0, -"bad label: "+a)}}function _float_getnewargs(g){return _Py_BuildValue(__str441702,allocate([HEAP[g+8],0,0,0,0,0,0,0],["double",0,0,0,0,0,0,0],ALLOC_STACK))} -function _float_getformat(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f=b=e;b=(HEAP[HEAP[b+4]+84]&134217728)==0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_TypeError],__str521710,allocate([HEAP[HEAP[f+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;b=12;break;case 2:d=f+20;b=_strcmp(d,__str531711)==0?3:4;break;case 3:var h=HEAP[_double_format],a=3;b=7;break;case 4:b=_strcmp(d,__str541712)==0?5:6;break;case 5:var j=HEAP[_float_format],a=5;b=7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str551713);c=0;b=12;break;case 7:b=a==5?j:h;b=b==0?8:b==1?10:b==2?9:11;break;case 8:c=_PyString_FromString(__str564594);b=12;break;case 9:c=_PyString_FromString(__str571715);b=12;break;case 10:c=_PyString_FromString(__str581716);b=12;break;case 11:throw _Py_FatalError(__str591717),"Reached an unreachable!";case 12:return a=c;default:assert(0,"bad label: "+b)}} -function _float_setformat(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h,j,k;a=_PyArg_ParseTuple(e,__str601718,allocate([d,0,0,0,f,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=17;break;case 2:a=_strcmp(HEAP[d],__str531711)==0?3:4;break;case 3:k=_double_format;j=HEAP[_detected_double_format];a=7;break;case 4:a=_strcmp(HEAP[d],__str541712)==0?5:6;break;case 5:k=_float_format;j=HEAP[_detected_float_format];a=7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str611719);c=0;a=17;break;case 7:a=_strcmp(HEAP[f],__str564594)==0?13:8;break;case 8:a=_strcmp(HEAP[f],__str571715)==0?9:10;break;case 9:h=2;a=14;break;case 10:a=_strcmp(HEAP[f],__str581716)==0?11:12;break;case 11:h=1;a=14;break;case 12:_PyErr_SetString(HEAP[_PyExc_ValueError],__str621720);c=0;a=17;break;case 13:h=0;a=16;break;case 14:a=h!=j?15:16;break;case 15:_PyErr_Format(HEAP[_PyExc_ValueError],__str631721,allocate([HEAP[d],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;a=17;break;case 16:HEAP[k]=h; -HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=17;break;case 17:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _float_getzero(){return _PyFloat_FromDouble(0)} -function _float__format__(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j;c=g;a=_PyArg_ParseTuple(e,__str641722,allocate([f,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=11;break;case 2:var k=HEAP[f];a=(HEAP[HEAP[HEAP[f]+4]+84]&134217728)!=0?3:4;break;case 3:d=__PyFloat_FormatAdvanced(c,HEAP[f]+20,HEAP[k+8]);a=11;break;case 4:a=(HEAP[HEAP[k+4]+84]&268435456)!=0?5:10;break;case 5:j=_PyObject_Str(HEAP[f]);a=j==0?6:7; -break;case 6:d=0;a=11;break;case 7:h=__PyFloat_FormatAdvanced(c,j+20,HEAP[j+8]);HEAP[j]-=1;a=HEAP[j]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=9;break;case 9:d=h;a=11;break;case 10:_PyErr_SetString(HEAP[_PyExc_TypeError],__str651723);d=0;a=11;break;case 11:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function __PyFloat_Init(){var g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var e;for(e=-1;;)switch(e){case -1:var b=g,a=g+8;HEAP[b]=9006104071832581;e=_memcmp(b,__str831742,8)==0?1:2;break;case 1:HEAP[_detected_double_format]=1;e=5;break;case 2:e=_memcmp(b,__str841743,8)==0?3:4;break;case 3:HEAP[_detected_double_format]=2;e=5;break;case 4:HEAP[_detected_double_format]=0;e=5;break;case 5:HEAP[a]=16711938;e=_memcmp(a,__str851744,4)==0?6:7;break;case 6:HEAP[_detected_float_format]=1;e=10;break;case 7:e=_memcmp(a, -__str861745,4)==0?8:9;break;case 8:HEAP[_detected_float_format]=2;e=10;break;case 9:HEAP[_detected_float_format]=0;e=10;break;case 10:HEAP[_double_format]=HEAP[_detected_double_format];HEAP[_float_format]=HEAP[_detected_float_format];e=HEAP[_FloatInfoType+12]==0?11:12;break;case 11:_PyStructSequence_InitType(_FloatInfoType,_floatinfo_desc);e=12;break;case 12:STACKTOP=g;return;default:assert(0,"bad label: "+e)}} -function _PyFloat_ClearFreeList(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;f=0;b=g=HEAP[_block_list];HEAP[_block_list]=0;HEAP[_free_list1657]=0;g=g!=0?1:14;break;case 1:c=d=0;e=b+4;g=2;break;case 2:g=HEAP[e+4]==_PyFloat_Type?3:5;break;case 3:g=HEAP[e]!=0?4:5;break;case 4:d+=1;g=5;break;case 5:c=g=c+1;e+=16;g=g<=61?2:6;break;case 6:a=HEAP[b];g=d!=0?7:12;break;case 7:HEAP[b]=HEAP[_block_list];HEAP[_block_list]=b;c=0;e=b+4;g=8;break;case 8:g=HEAP[e+4]!=_PyFloat_Type?10:9;break;case 9:g=HEAP[e]== -0?10:11;break;case 10:HEAP[e+4]=HEAP[_free_list1657];HEAP[_free_list1657]=e;g=11;break;case 11:c=g=c+1;e+=16;g=g<=61?8:13;break;case 12:_free(b);g=13;break;case 13:f=d+f;b=a;g=a!=0?1:14;break;case 14:return e=f;default:assert(0,"bad label: "+g)}} -function _PyFloat_Fini(){var h;var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;d=_PyFloat_ClearFreeList();g=HEAP[_Py_VerboseFlag]==0?16:1;break;case 1:_fwrite(__str871746,1,16,HEAP[_stderr]);g=d==0?2:3;break;case 2:_fputc(10,HEAP[_stderr]);g=7;break;case 3:g=d==1?4:5;break;case 4:e=__str881747;g=6;break;case 5:e=__str891748;g=6;break;case 6:_fprintf(HEAP[_stderr],__str901749,allocate([d,0,0,0,e,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));g=7;break;case 7:g=HEAP[_Py_VerboseFlag]>1?8:16;break; -case 8:a=HEAP[_block_list];g=HEAP[_block_list]!=0?9:16;break;case 9:c=0;b=a+4;g=10;break;case 10:g=HEAP[b+4]==_PyFloat_Type?11:14;break;case 11:g=HEAP[b]!=0?12:14;break;case 12:f=_PyOS_double_to_string(HEAP[b+8],114,0,0,0);g=f!=0?13:14;break;case 13:_fprintf(HEAP[_stderr],__str911750,allocate([b,0,0,0,HEAP[b],0,0,0,f,0,0,0],["%struct.PyFloatObject*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));_PyMem_Free(f);g=14;break;case 14:c=g=c+1;b+=16;g=g<=61?10:15;break;case 15:h=g=HEAP[a],a=h;g=g!=0?9:16; -break;case 16:return;default:assert(0,"bad label: "+g)}} -function __PyFloat_Pack4(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m=a,n,o,p,q=a+4,r,u,s;f=g;h=e;j=b;c=HEAP[_float_format]==0?1:19;break;case 1:p=1;c=j!=0?2:3;break;case 2:h+=3;p=-1;c=3;break;case 3:c=f<0?4:5;break;case 4:l=1;f=0-f;c=6;break;case 5:l=0;c=6;break;case 6:var t=_frexp(f,m);n=t;c=t<0.5|t>=1?7:10;break;case 7:c=t==0?8:9;break;case 8:HEAP[m]=0;var v=HEAP[m],d=8;c=11;break;case 9:_PyErr_SetString(HEAP[_PyExc_SystemError],__str921751); -k=-1;c=31;break;case 10:n=t*2;var w=HEAP[m]-1;HEAP[m]=w;w>127?(d=10,c=30):(d=10,c=11);break;case 11:var x=d==8?v:w;c=x<-126?12:13;break;case 12:n=_ldexp(n,x+126);HEAP[m]=0;c=16;break;case 13:c=x!=0?15:14;break;case 14:c=n!=0?15:16;break;case 15:HEAP[m]+=127;n-=1;c=16;break;case 16:n*=8388608;o=Math.floor(n+0.5);c=o>>>23!=0?17:18;break;case 17:o=0;HEAP[m]+=1;c=HEAP[m]>254?30:18;break;case 18:HEAP[h]=l<<7&255|HEAP[m]>>1&255;h+=p;HEAP[h]=(HEAP[m]&1)<<7|o>>>16&255;h+=p;HEAP[h]=o>>>8&255;h+=p;HEAP[h]= -o&255;k=0;c=31;break;case 19:HEAP[q]=f;r=q;s=1;c=___isinff(HEAP[q])!=0?20:21;break;case 20:c=___isinf(f)==0?30:21;break;case 21:var y=HEAP[_float_format];y!=2?(d=21,c=24):(d=21,c=22);break;case 22:c=j==0?26:23;break;case 23:var z=HEAP[_float_format],d=23;c=24;break;case 24:c=(d==23?z:y)!=1?27:25;break;case 25:c=j!=0?26:27;break;case 26:h+=3;s=-1;c=27;break;case 27:u=0;c=28;break;case 28:HEAP[h]=HEAP[r];r+=1;h+=s;u=c=u+1;c=c<=3?28:29;break;case 29:k=0;c=31;break;case 30:_PyErr_SetString(HEAP[_PyExc_OverflowError], -__str931752);k=-1;c=31;break;case 31:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function __PyFloat_Pack8(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c,d=null;for(c=-1;;)switch(c){case -1:var f=a,h,j,k,l,m=a+8,n,o,p,q,r,u,s;HEAP[f]=g;h=e;j=b;c=HEAP[_double_format]==0?1:21;break;case 1:q=1;c=j!=0?2:3;break;case 2:h+=7;q=-1;c=3;break;case 3:c=HEAP[f]<0?4:5;break;case 4:l=1;HEAP[f]=0-HEAP[f];c=6;break;case 5:l=0;c=6;break;case 6:var t=_frexp(HEAP[f],m);n=t;c=t<0.5|t>=1?7:10;break;case 7:c=t==0?8:9;break;case 8:HEAP[m]=0;var v=HEAP[m],d=8;c=11;break;case 9:_PyErr_SetString(HEAP[_PyExc_SystemError], -__str921751);k=-1;c=30;break;case 10:n=t*2;var w=HEAP[m]-1;HEAP[m]=w;w>1023?(d=10,c=20):(d=10,c=11);break;case 11:var x=d==8?v:w;c=x<-1022?12:13;break;case 12:n=_ldexp(n,x+1022);HEAP[m]=0;c=16;break;case 13:c=x!=0?15:14;break;case 14:c=n!=0?15:16;break;case 15:HEAP[m]+=1023;n-=1;c=16;break;case 16:n*=268435456;o=Math.floor(n);n-=o;n*=16777216;p=Math.floor(n+0.5);c=p>>>24!=0?17:19;break;case 17:p=0;o+=1;c=o>>>28!=0?18:19;break;case 18:o=0;HEAP[m]+=1;c=HEAP[m]>2046?20:19;break;case 19:HEAP[h]=l<<7& -255|HEAP[m]>>4&255;h+=q;HEAP[h]=(HEAP[m]&15)<<4|o>>>24&255;h+=q;HEAP[h]=o>>>16&255;h+=q;HEAP[h]=o>>>8&255;h+=q;HEAP[h]=o&255;h+=q;HEAP[h]=p>>>16&255;h+=q;HEAP[h]=p>>>8&255;h+=q;HEAP[h]=p&255;k=0;c=30;break;case 20:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str941753);k=-1;c=30;break;case 21:r=f;s=1;var y=HEAP[_double_format];y!=2?(d=21,c=24):(d=21,c=22);break;case 22:c=j==0?26:23;break;case 23:var z=HEAP[_double_format],d=23;c=24;break;case 24:c=(d==23?z:y)!=1?27:25;break;case 25:c=j!=0?26:27; -break;case 26:h+=7;s=-1;c=27;break;case 27:u=0;c=28;break;case 28:HEAP[h]=HEAP[r];r+=1;h+=s;u=c=u+1;c=c<=7?28:29;break;case 29:k=0;c=30;break;case 30:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function __PyFloat_Unpack4(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o=b,p=b+4,q,r;d=g;f=e;a=HEAP[_float_format]==0?1:11;break;case 1:n=1;a=f!=0?2:3;break;case 2:d+=3;n=-1;a=3;break;case 3:j=HEAP[d]>>>7&1;k=(HEAP[d]&127)<<1;d+=n;k|=HEAP[d]>>>7&1;l=(HEAP[d]&127)<<16;d+=n;a=k==255?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_ValueError],__str951754);h=-1;a=21;break;case 5:l|=HEAP[d]<<8;d+=n;l|=HEAP[d];m=l/8388608;a=k==0?6:7;break;case 6:k= --126;a=8;break;case 7:m+=1;k-=127;a=8;break;case 8:m=_ldexp(m,k);a=j!=0?9:10;break;case 9:m=0-m;a=10;break;case 10:h=m;a=21;break;case 11:var u=HEAP[_float_format];u!=2?(c=11,a=14):(c=11,a=12);break;case 12:a=f==0?16:13;break;case 13:var s=HEAP[_float_format],c=13;a=14;break;case 14:a=(c==13?s:u)!=1?19:15;break;case 15:a=f!=0?16:19;break;case 16:q=p+3;r=0;a=17;break;case 17:HEAP[q]=HEAP[d];q+=-1;d+=1;r=a=r+1;a=a<=3?17:18;break;case 18:_llvm_memcpy_p0i8_p0i8_i32(o,p,4,1,0);a=20;break;case 19:_llvm_memcpy_p0i8_p0i8_i32(o, -d,4,1,0);a=20;break;case 20:h=HEAP[o];a=21;break;case 21:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __PyFloat_Unpack8(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o=b,p=b+8,q,r;d=g;f=e;a=HEAP[_double_format]==0?1:11;break;case 1:n=1;a=f!=0?2:3;break;case 2:d+=7;n=-1;a=3;break;case 3:j=HEAP[d]>>>7&1;k=(HEAP[d]&127)<<4;d+=n;k|=HEAP[d]>>>4&15;l=(HEAP[d]&15)<<24;d+=n;a=k==2047?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_ValueError],__str951754);h=-1;a=21;break;case 5:l|=HEAP[d]<<16;d+=n;l|=HEAP[d]<<8;d+=n;l|=HEAP[d];d+=n;m= -HEAP[d]<<16;d+=n;m|=HEAP[d]<<8;d+=n;m|=HEAP[d];m=l+m/16777216;m/=268435456;a=k==0?6:7;break;case 6:k=-1022;a=8;break;case 7:m+=1;k-=1023;a=8;break;case 8:m=_ldexp(m,k);a=j!=0?9:10;break;case 9:m=0-m;a=10;break;case 10:h=m;a=21;break;case 11:var u=HEAP[_double_format];u!=2?(c=11,a=14):(c=11,a=12);break;case 12:a=f==0?16:13;break;case 13:var s=HEAP[_double_format],c=13;a=14;break;case 14:a=(c==13?s:u)!=1?19:15;break;case 15:a=f!=0?16:19;break;case 16:q=p+7;r=0;a=17;break;case 17:HEAP[q]=HEAP[d];q+= --1;d+=1;r=a=r+1;a=a<=7?17:18;break;case 18:_llvm_memcpy_p0i8_p0i8_i32(o,p,8,1,0);a=20;break;case 19:_llvm_memcpy_p0i8_p0i8_i32(o,d,8,1,0);a=20;break;case 20:h=HEAP[o];a=21;break;case 21:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _unknown_presentation_type(g,e){_PyErr_Format(HEAP[_PyExc_ValueError],__str1759,allocate([g,0,0,0,e,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK))} -function _invalid_comma_type(g){_PyErr_Format(HEAP[_PyExc_ValueError],__str11760,allocate([g,0,0,0],["i32",0,0,0],ALLOC_STACK))} -function _get_integer(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;j=l=0;a=1;break;case 1:a=HEAP[c]>=d?9:2;break;case 2:a=HEAP[HEAP[c]]<=47?4:3;break;case 3:a=HEAP[HEAP[c]]>57?4:5;break;case 4:k=-1;a=9;break;case 5:k=HEAP[HEAP[c]]-48;a=HEAP[HEAP[c]]-48<0?9:6;break;case 6:a=j;j*=10;a=((j+10)/10|0)!=a+1?7:8;break;case 7:_PyErr_Format(HEAP[_PyExc_ValueError],__str21761,allocate(1,"i32",ALLOC_STACK));h=-1;a=10;break;case 8:j=k+j;HEAP[c]+=1;l+=1;a=1;break;case 9:HEAP[f]=j;h= -l;a=10;break;case 10:return g=h;default:assert(0,"bad label: "+a)}}function _is_alignment_token(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=e==60?1:e==61?1:e==62?1:e==94?1:2;break;case 1:b=1;e=3;break;case 2:b=0;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _is_sign_element(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=e==32?1:e==43?1:e==45?1:2;break;case 1:b=1;e=3;break;case 2:b=0;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _parse_internal_render_format_spec(g,e,b,a,c){var d=STACKTOP;STACKTOP+=4;_memset(d,0,4);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o;h=g;j=e;k=b;f=a;l=c;HEAP[n]=h;h+=j;j=0;HEAP[k]=0;HEAP[k+1]=l;HEAP[k+4]=0;HEAP[k+8]=0;HEAP[k+12]=-1;HEAP[k+16]=0;HEAP[k+20]=-1;HEAP[k+24]=f;f=h-HEAP[n]<=1?3:1;break;case 1:f=_is_alignment_token(HEAP[HEAP[n]+1]&255)==0?3:2;break;case 2:HEAP[k+1]=HEAP[HEAP[n]+1];HEAP[k]=HEAP[HEAP[n]];j=1;HEAP[n]+=2;f=6;break;case 3:f=h-HEAP[n]>0?4:6;break;case 4:f=_is_alignment_token(HEAP[HEAP[n]]& -255)!=0?5:6;break;case 5:HEAP[k+1]=HEAP[HEAP[n]];j=1;HEAP[n]+=1;f=6;break;case 6:f=h-HEAP[n]>0?7:9;break;case 7:f=_is_sign_element(HEAP[HEAP[n]]&255)!=0?8:9;break;case 8:HEAP[k+8]=HEAP[HEAP[n]];HEAP[n]+=1;f=9;break;case 9:f=h-HEAP[n]>0?10:12;break;case 10:f=HEAP[HEAP[n]]==35?11:12;break;case 11:HEAP[k+4]=1;HEAP[n]+=1;f=12;break;case 12:f=HEAP[k]==0?13:18;break;case 13:f=h-HEAP[n]>0?14:18;break;case 14:f=HEAP[HEAP[n]]==48?15:18;break;case 15:HEAP[k]=48;f=j==0?16:17;break;case 16:HEAP[k+1]=61;f=17; -break;case 17:HEAP[n]+=1;f=18;break;case 18:o=f=_get_integer(n,h,k+12);f=f==-1?19:20;break;case 19:m=0;f=39;break;case 20:f=o==0?21:22;break;case 21:HEAP[k+12]=-1;f=22;break;case 22:f=h!=HEAP[n]?23:25;break;case 23:f=HEAP[HEAP[n]]==44?24:25;break;case 24:HEAP[k+16]=1;HEAP[n]+=1;f=25;break;case 25:f=h!=HEAP[n]?26:31;break;case 26:f=HEAP[HEAP[n]]==46?27:31;break;case 27:HEAP[n]+=1;o=_get_integer(n,h,k+20);f=o==-1?28:29;break;case 28:m=0;f=39;break;case 29:f=o==0?30:31;break;case 30:_PyErr_Format(HEAP[_PyExc_ValueError], -__str31762,allocate(1,"i32",ALLOC_STACK));m=0;f=39;break;case 31:f=h-HEAP[n]>1?32:33;break;case 32:_PyErr_Format(HEAP[_PyExc_ValueError],__str41763,allocate(1,"i32",ALLOC_STACK));m=0;f=39;break;case 33:f=h-HEAP[n]==1?34:35;break;case 34:HEAP[k+24]=HEAP[HEAP[n]];HEAP[n]+=1;f=35;break;case 35:f=HEAP[k+16]!=0?36:38;break;case 36:f=HEAP[k+24];f=f==0?38:f==37?38:f==69?38:f==70?38:f==71?38:f==100?38:f==101?38:f==102?38:f==103?38:37;break;case 37:_invalid_comma_type(HEAP[k+24]&255);m=0;f=39;break;case 38:m= -1;f=39;break;case 39:return g=m,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _calc_padding(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=j>=0?1:4;break;case 1:var o=n;f=h>j?2:3;break;case 2:HEAP[o]=h;f=5;break;case 3:HEAP[o]=j;f=5;break;case 4:HEAP[n]=h;f=5;break;case 5:f=k==62?6:7;break;case 6:HEAP[l]=HEAP[n]-h;f=10;break;case 7:f=k==94?8:9;break;case 8:HEAP[l]=(HEAP[n]-h)/2|0;f=10;break;case 9:HEAP[l]=0;f=10;break;case 10:HEAP[m]=0-h+HEAP[n]+(0-HEAP[l]);return;default:assert(0,"bad label: "+f)}} -function _fill_padding(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m;h=g;j=e;k=b;l=a;m=c;l!=0?(f=-1,d=1):(f=-1,d=2);break;case 1:_llvm_memset_p0i8_i32(h,k&255,l,1,0);var n=m,f=1;d=2;break;case 2:d=(f==1?n:c)!=0?3:4;break;case 3:_llvm_memset_p0i8_i32(h+j+l,k&255,m,1,0);d=4;break;case 4:return g=h+l;default:assert(0,"bad label: "+d)}} -function _parse_number(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;j=a;f=d+f;c=2;break;case 1:d+=1;c=2;break;case 2:c=d>=f?4:3;break;case 3:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*HEAP[d]]&2048)!=0?1:4;break;case 4:l=d;c=d>=f?7:5;break;case 5:c=HEAP[l]!=46?7:6;break;case 6:k=1;c=8;break;case 7:k=0;c=8;break;case 8:HEAP[j]=k;c=HEAP[j]!=0?9:10;break;case 9:l+=1;c=10;break;case 10:HEAP[h]=f-l;return;default:assert(0,"bad label: "+c)}} -function _calc_number_widths(g,e,b,a,c,d,f,h,j){for(a=-1;;)switch(a){case -1:var k,l,m,n,o,p,q,r,u,s,t,v;k=g;a=e;l=b;m=c;n=d;o=f;p=h;q=j;HEAP[k+36]=0-n+m+(0-(o!=0));HEAP[k]=0;HEAP[k+4]=a;a=o!=0?1:2;break;case 1:s=_strlen(HEAP[p]);a=3;break;case 2:s=0;a=3;break;case 3:HEAP[k+28]=s;HEAP[k+32]=n;HEAP[k+8]=0;HEAP[k+12]=0;HEAP[k+16]=0;HEAP[k+20]=0;a=HEAP[q+8];a=a==32?8:a==43?4:12;break;case 4:HEAP[k+20]=1;a=l==45?5:6;break;case 5:u=45;a=7;break;case 6:u=43;a=7;break;case 7:HEAP[k+16]=u;a=14;break;case 8:HEAP[k+ -20]=1;a=l==45?9:10;break;case 9:r=45;a=11;break;case 10:r=32;a=11;break;case 11:HEAP[k+16]=r;a=14;break;case 12:a=l==45?13:14;break;case 13:HEAP[k+20]=1;HEAP[k+16]=45;a=14;break;case 14:t=HEAP[k+4]+HEAP[k+20]+HEAP[k+28]+HEAP[k+32];a=HEAP[q]!=48?17:15;break;case 15:a=HEAP[q+1]!=61?17:16;break;case 16:HEAP[k+40]=HEAP[q+12]-t;a=18;break;case 17:HEAP[k+40]=0;a=18;break;case 18:a=HEAP[k+36]==0?19:20;break;case 19:HEAP[k+24]=0;a=21;break;case 20:a=__PyString_InsertThousandsGrouping(0,0,0,HEAP[k+36],HEAP[k+ -40],HEAP[p+8],HEAP[p+4]);HEAP[k+24]=a;a=21;break;case 21:v=0-HEAP[k+24]+HEAP[q+12]+(0-t);a=0-HEAP[k+24]+HEAP[q+12]+(0-t)>0?22:28;break;case 22:a=HEAP[q+1];a=a==60?23:a==61?25:a==62?26:a==94?24:27;break;case 23:HEAP[k+12]=v;a=28;break;case 24:HEAP[k]=v/2|0;HEAP[k+12]=v-HEAP[k];a=28;break;case 25:HEAP[k+8]=v;a=28;break;case 26:HEAP[k]=v;a=28;break;case 27:HEAP[k]=v;a=28;break;case 28:return g=HEAP[k+20]+HEAP[k]+HEAP[k+4]+HEAP[k+8]+HEAP[k+24]+HEAP[k+28]+HEAP[k+32]+HEAP[k+12];default:assert(0,"bad label: "+ -a)}} -function _fill_number(g,e,b,a,c,d,f,h){for(a=-1;;)switch(a){case -1:var j,k,l,m,n,o,p,q,r,u,s;j=g;k=e;l=b;m=c;n=d;o=f;p=h;q=l;a=HEAP[k]!=0?1:2;break;case 1:_llvm_memset_p0i8_i32(j,n&255,HEAP[k],1,0);j+=HEAP[k];a=2;break;case 2:a=HEAP[k+20]==1?3:4;break;case 3:HEAP[j]=HEAP[k+16];j+=1;a=4;break;case 4:a=HEAP[k+4]!=0?5:9;break;case 5:_llvm_memmove_p0i8_p0i8_i32(j,m,HEAP[k+4],1,0);a=p!=0?6:8;break;case 6:r=0;a=HEAP[k+4]>r?7:8;break;case 7:HEAP[j+r]=HEAP[__Py_ctype_toupper+HEAP[j+r]];r+=1;a=HEAP[k+4]> -r?7:8;break;case 8:j+=HEAP[k+4];a=9;break;case 9:a=HEAP[k+8]!=0?10:11;break;case 10:_llvm_memset_p0i8_i32(j,n&255,HEAP[k+8],1,0);j+=HEAP[k+8];a=11;break;case 11:a=HEAP[k+36]!=0?12:13;break;case 12:__PyString_InsertThousandsGrouping(j,HEAP[k+24],l,HEAP[k+36],HEAP[k+40],HEAP[o+8],HEAP[o+4]);q+=HEAP[k+36];a=13;break;case 13:a=p!=0?14:16;break;case 14:u=0;a=HEAP[k+24]>u?15:16;break;case 15:HEAP[j+u]=HEAP[__Py_ctype_toupper+HEAP[j+u]];u+=1;a=HEAP[k+24]>u?15:16;break;case 16:j+=HEAP[k+24];a=HEAP[k+28]!= -0?17:20;break;case 17:s=0;a=HEAP[k+28]>s?18:19;break;case 18:HEAP[j+s]=HEAP[HEAP[o]+s];s+=1;a=HEAP[k+28]>s?18:19;break;case 19:j+=HEAP[k+28];q+=1;a=20;break;case 20:a=HEAP[k+32]!=0?21:22;break;case 21:_llvm_memcpy_p0i8_p0i8_i32(j,q,HEAP[k+32],1,0);j+=HEAP[k+32];q+=HEAP[k+32];a=22;break;case 22:a=HEAP[k+12]!=0?23:24;break;case 23:_llvm_memset_p0i8_i32(j,n&255,HEAP[k+12],1,0);j+=HEAP[k+12];a=24;break;case 24:return;default:assert(0,"bad label: "+a)}} -function _get_locale_info(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=g;a=e;b=b==0?1:b==1?2:b==2?3:4;break;case 1:b=_localeconv();HEAP[a]=HEAP[b];HEAP[a+4]=HEAP[b+4];HEAP[a+8]=HEAP[b+8];b=4;break;case 2:HEAP[a]=__str51764;HEAP[a+4]=__str61765;HEAP[a+8]=__str71766;b=4;break;case 3:HEAP[a]=__str51764;HEAP[a+4]=__str81767;HEAP[a+8]=_no_grouping;b=4;break;case 4:return;default:assert(0,"bad label: "+b)}} -function _format_string_internal(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k=b+8,l,m;c=g;d=e;l=HEAP[c+8];m=0;a=HEAP[d+8]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str91768);a=14;break;case 2:a=HEAP[d+4]!=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str101769);a=14;break;case 4:a=HEAP[d+1]==61?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError],__str111770);a=14;break;case 6:a=HEAP[d+20]>=0?7: -9;break;case 7:a=HEAP[d+20]<=l?8:9;break;case 8:l=HEAP[d+20];a=9;break;case 9:_calc_padding(l,HEAP[d+12],HEAP[d+1]&255,h,j,k);m=a=_PyString_FromStringAndSize(0,HEAP[k]);a=a==0?14:10;break;case 10:var n=HEAP[j],o=HEAP[h];a=HEAP[d]!=0?11:12;break;case 11:f=HEAP[d];a=13;break;case 12:f=32;a=13;break;case 13:a=_fill_padding(m+20,l,f&255,o,n);_llvm_memcpy_p0i8_p0i8_i32(a,c+20,l,1,0);a=14;break;case 14:return c=m,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _format_int_or_long_internal(g,e,b){var a=STACKTOP;STACKTOP+=57;_memset(a,0,57);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p=a,q,r,u,s,t,v=a+1,w,x=a+45,y,z;d=g;f=e;h=b;t=s=u=q=n=m=0;c=HEAP[f+20]!=-1?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str121771);c=34;break;case 2:c=HEAP[f+24]==99?3:12;break;case 3:c=HEAP[f+8]!=0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_ValueError],__str131772);c=34;break;case 5:c=HEAP[f+16]!=0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str141773);c=34;break;case 7:w=_PyLong_AsLong(d);c=w==-1?8:9;break;case 8:c=_PyErr_Occurred()!=0?34:9;break;case 9:c=w<0|w>65535?10:11;break;case 10:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str151774);c=34;break;case 11:HEAP[p]=w&255;o=p;u=r=1;c=23;break;case 12:z=0;c=HEAP[f+24];c=c==88?15:c==98?13:c==111?14:c==120?15:16;break;case 13:z=y=2;c=17;break;case 14:y=8;z=2;c=17;break;case 15:y=16;z=2;c=17;break;case 16:y=10;c=17;break;case 17:c=HEAP[f+4]!=0?18:19;break;case 18:s=z;c=19;break;case 19:n= -c=FUNCTION_TABLE[h](d,y);c=c==0?37:20;break;case 20:o=n+20;r=HEAP[n+8];t=o;c=HEAP[o]==45?21:22;break;case 21:q=HEAP[o];t+=1;z+=1;c=22;break;case 22:r-=z;o+=z;c=23;break;case 23:c=HEAP[f+24]!=110?24:28;break;case 24:c=HEAP[f+16]!=0?25:26;break;case 25:k=1;c=27;break;case 26:k=2;c=27;break;case 27:l=k;c=29;break;case 28:l=0;c=29;break;case 29:_get_locale_info(l,x);m=_calc_number_widths(v,s,q&255,o,r,u,0,x,f);m=c=_PyString_FromStringAndSize(0,m);c=c==0?34:30;break;case 30:var C=HEAP[f+24]==88;c=HEAP[f]!= -0?31:32;break;case 31:j=HEAP[f];c=33;break;case 32:j=32;c=33;break;case 33:_fill_number(m+20,v,o,r,t,j&255,x,C);c=34;break;case 34:c=n!=0?35:37;break;case 35:HEAP[n]-=1;c=HEAP[n]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=37;break;case 37:return g=m,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _format_float_internal(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m=b,n,o=b+4,p,q,r,u,s,t,v=b+8,w,x,y=b+52,z=b+56;c=g;d=e;k=0;q=HEAP[d+20];r=6;u=HEAP[d+24];x=n=w=s=0;a=HEAP[d+4]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str161775);a=27;break;case 2:a=u;a=a==0?3:a==110?4:5;break;case 3:u=103;r=12;w|=2;a=5;break;case 4:u=103;a=5;break;case 5:p=a=_PyFloat_AsDouble(c);a=a==-1?6:7;break;case 6:a=_PyErr_Occurred()!= -0?27:7;break;case 7:a=u==37?8:9;break;case 8:u=102;p*=100;s=1;a=9;break;case 9:a=q<0?10:11;break;case 10:q=r;a=11;break;case 11:k=a=_PyOS_double_to_string(p,u&255,q,w,y);a=a==0?27:12;break;case 12:l=_strlen(k);a=s!=0?13:14;break;case 13:HEAP[k+l]=37;l+=1;a=14;break;case 14:t=k;a=HEAP[t]==45?15:16;break;case 15:x=HEAP[t];t+=1;l-=1;a=16;break;case 16:_parse_number(t,l,m,o);a=HEAP[d+24]!=110?17:21;break;case 17:a=HEAP[d+16]!=0?18:19;break;case 18:h=1;a=20;break;case 19:h=2;a=20;break;case 20:j=h;a=22; -break;case 21:j=0;a=22;break;case 22:_get_locale_info(j,z);n=_calc_number_widths(v,0,x&255,t,l,HEAP[m],HEAP[o],z,d);n=a=_PyString_FromStringAndSize(0,n);a=a==0?27:23;break;case 23:a=HEAP[d]!=0?24:25;break;case 24:f=HEAP[d];a=26;break;case 25:f=32;a=26;break;case 26:_fill_number(n+20,v,t,l,0,f&255,z,0);a=27;break;case 27:return _PyMem_Free(k),c=n,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _format_complex_internal(g,e){var b=STACKTOP;STACKTOP+=164;_memset(b,0,164);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p=b,q,r,u=b+28,s=b+32,t,v,w=b+36,x=b+40,y,z,C,A,G,E=b+44,D=b+88,R,M,L,I,J,F=b+132,V=b+136,Q,Z,K=b+140,N=b+144,H=b+148,ba=b+152;d=g;f=e;o=n=0;y=f;HEAP[p]=HEAP[y];HEAP[p+1]=HEAP[y+1];HEAP[p+4]=HEAP[y+4];HEAP[p+8]=HEAP[y+8];HEAP[p+12]=HEAP[y+12];HEAP[p+16]=HEAP[y+16];HEAP[p+20]=HEAP[y+20];HEAP[p+24]=HEAP[y+24];y=HEAP[f+20];z=6;C=HEAP[f+24];Z=Q=J=I=M=R=0; -a=HEAP[f+4]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str171776);a=46;break;case 2:a=HEAP[f]==48?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str181777);a=46;break;case 4:a=HEAP[f+1]==61?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError],__str191778);a=46;break;case 6:l=_PyComplex_RealAsDouble(d);a=l==-1?7:8;break;case 7:a=_PyErr_Occurred()!=0?46:8;break;case 8:m=a=_PyComplex_ImagAsDouble(d);a=a==-1?9:10;break;case 9:a=_PyErr_Occurred()!=0?46:10;break;case 10:var W= -C;W==0?(c=10,a=11):(c=10,a=16);break;case 11:C=103;z=12;a=l!=0?14:12;break;case 12:a=_copysign(1,l)!=1?14:13;break;case 13:Z=1;a=15;break;case 14:Q=1;a=15;break;case 15:var B=C,c=15;a=16;break;case 16:a=(c==15?B:W)==110?17:18;break;case 17:C=103;a=18;break;case 18:a=y<0?19:20;break;case 19:y=z;a=20;break;case 20:n=a=_PyOS_double_to_string(l,C&255,y,R,F);a=a==0?46:21;break;case 21:o=_PyOS_double_to_string(m,C&255,y,R,V);a=o==0?46:22;break;case 22:q=_strlen(n);r=_strlen(o);A=n;G=o;a=HEAP[A]==45?23: -24;break;case 23:I=HEAP[A];A+=1;q-=1;a=24;break;case 24:a=HEAP[G]==45?25:26;break;case 25:J=HEAP[G];G+=1;r-=1;a=26;break;case 26:_parse_number(A,q,u,w);_parse_number(G,r,s,x);a=HEAP[f+24]!=110?27:31;break;case 27:a=HEAP[f+16]!=0?28:29;break;case 28:j=1;a=30;break;case 29:j=2;a=30;break;case 30:k=j;a=32;break;case 31:k=0;a=32;break;case 32:_get_locale_info(k,ba);HEAP[p]=0;HEAP[p+1]=60;HEAP[p+12]=-1;t=_calc_number_widths(E,0,I&255,A,q,HEAP[u],HEAP[w],ba,p);a=Z==0?33:34;break;case 33:HEAP[p+8]=43;a= -34;break;case 34:v=_calc_number_widths(D,0,J&255,G,r,HEAP[s],HEAP[x],ba,p);a=Z!=0?35:36;break;case 35:t=0;a=36;break;case 36:_calc_padding(t+1+v+Q*2,HEAP[f+12],HEAP[f+1]&255,K,N,H);M=a=_PyString_FromStringAndSize(0,HEAP[H]);a=a==0?46:37;break;case 37:var Y=HEAP[N],fa=HEAP[K];a=HEAP[f]!=0?38:39;break;case 38:h=HEAP[f];a=40;break;case 39:h=32;a=40;break;case 40:L=_fill_padding(M+20,t+1+v+Q*2,h&255,fa,Y);a=Q!=0?41:42;break;case 41:HEAP[L]=40;L+=1;a=42;break;case 42:a=Z==0?43:44;break;case 43:_fill_number(L, -E,A,q,0,0,ba,0);L+=t;a=44;break;case 44:_fill_number(L,D,G,r,0,0,ba,0);L+=v;HEAP[L]=106;L+=1;a=Q!=0?45:46;break;case 45:HEAP[L]=41;L+=1;a=46;break;case 46:return _PyMem_Free(n),_PyMem_Free(o),c=M,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __PyBytes_FormatAdvanced(g,e,b){var a=STACKTOP;STACKTOP+=28;_memset(a,0,28);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k;d=g;f=e;h=b;k=0;c=h==0?1:2;break;case 1:k=_PyObject_Str(d);c=6;break;case 2:c=_parse_internal_render_format_spec(f,h,j,115,60)==0?6:3;break;case 3:var l=d;c=HEAP[j+24]==115?4:5;break;case 4:k=_format_string_internal(l,j);c=6;break;case 5:_unknown_presentation_type(HEAP[j+24]&255,HEAP[HEAP[l+4]+12]);c=6;break;case 6:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+ -c)}} -function _format_int_or_long(g,e,b,a){var c=STACKTOP;STACKTOP+=28;_memset(c,0,28);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n=c;f=g;h=e;j=b;k=a;m=l=0;d=j==0?1:2;break;case 1:l=_PyObject_Str(f);d=8;break;case 2:d=_parse_internal_render_format_spec(h,j,n,100,62)==0?8:3;break;case 3:d=HEAP[n+24];d=d==37?5:d==69?5:d==70?5:d==71?5:d==88?4:d==98?4:d==99?4:d==100?4:d==101?5:d==102?5:d==103?5:d==110?4:d==111?4:d==120?4:7;break;case 4:l=_format_int_or_long_internal(f,n,k);d=8;break;case 5:m=d=_PyNumber_Float(f); -d=d==0?11:6;break;case 6:l=_format_float_internal(m,n);d=8;break;case 7:_unknown_presentation_type(HEAP[n+24]&255,HEAP[HEAP[f+4]+12]);d=8;break;case 8:d=m!=0?9:11;break;case 9:HEAP[m]-=1;d=HEAP[m]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);d=11;break;case 11:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}}function _long_format(g,e){return __PyLong_Format(g,e,0,1)}function __PyLong_FormatAdvanced(g,e,b){return _format_int_or_long(g,e,b,70)} -function _int_format(g,e){return __PyInt_Format(g,e,1)}function __PyInt_FormatAdvanced(g,e,b){return _format_int_or_long(g,e,b,72)} -function __PyFloat_FormatAdvanced(g,e,b){var a=STACKTOP;STACKTOP+=28;_memset(a,0,28);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;j=0;c=h==0?1:2;break;case 1:j=_PyObject_Str(d);c=6;break;case 2:c=_parse_internal_render_format_spec(f,h,k,0,62)==0?6:3;break;case 3:c=HEAP[k+24];c=c==0?4:c==37?4:c==69?4:c==70?4:c==71?4:c==101?4:c==102?4:c==103?4:c==110?4:5;break;case 4:j=_format_float_internal(d,k);c=6;break;case 5:_unknown_presentation_type(HEAP[k+24]&255,HEAP[HEAP[d+4]+12]);c=6;break; -case 6:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function __PyComplex_FormatAdvanced(g,e,b){var a=STACKTOP;STACKTOP+=28;_memset(a,0,28);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;j=0;c=h==0?1:2;break;case 1:j=_PyObject_Str(d);c=6;break;case 2:c=_parse_internal_render_format_spec(f,h,k,0,62)==0?6:3;break;case 3:c=HEAP[k+24];c=c==0?4:c==69?4:c==70?4:c==71?4:c==101?4:c==102?4:c==103?4:c==110?4:5;break;case 4:j=_format_complex_internal(d,k);c=6;break;case 5:_unknown_presentation_type(HEAP[k+24]&255,HEAP[HEAP[d+4]+12]);c=6;break; -case 6:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _unknown_presentation_type1791(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=g;a=e;var c=b;b=b<=32|b>127?2:1;break;case 1:_PyErr_Format(HEAP[_PyExc_ValueError],__str1781,allocate([c&255,0,0,0,a,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=3;break;case 2:_PyErr_Format(HEAP[_PyExc_ValueError],__str11782,allocate([c,0,0,0,a,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=3;break;case 3:return;default:assert(0,"bad label: "+b)}} -function _invalid_comma_type1792(g){var e;for(e=-1;;)switch(e){case -1:var b=e=g;e=e<=32|e>127?2:1;break;case 1:_PyErr_Format(HEAP[_PyExc_ValueError],__str21783,allocate([b&255,0,0,0],["i32",0,0,0],ALLOC_STACK));e=3;break;case 2:_PyErr_Format(HEAP[_PyExc_ValueError],__str31784,allocate([b,0,0,0],["i32",0,0,0],ALLOC_STACK));e=3;break;case 3:return;default:assert(0,"bad label: "+e)}} -function _get_integer1793(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;j=l=0;a=1;break;case 1:a=HEAP[c]>=d?6:2;break;case 2:k=__PyUnicodeUCS2_ToDecimalDigit(HEAP[HEAP[c]]&65535);a=k<0?6:3;break;case 3:a=j;j*=10;a=((j+10)/10|0)!=a+1?4:5;break;case 4:_PyErr_Format(HEAP[_PyExc_ValueError],__str41785,allocate(1,"i32",ALLOC_STACK));h=-1;a=7;break;case 5:j=k+j;HEAP[c]+=2;l+=1;a=1;break;case 6:HEAP[f]=j;h=l;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _is_alignment_token1794(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=e==60?1:e==61?1:e==62?1:e==94?1:2;break;case 1:b=1;e=3;break;case 2:b=0;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _is_sign_element1795(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=e==32?1:e==43?1:e==45?1:2;break;case 1:b=1;e=3;break;case 2:b=0;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _parse_internal_render_format_spec1796(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l;d=g;f=e;h=b;HEAP[k]=d;d+=2*f;f=0;HEAP[h]=0;HEAP[h+2]=60;HEAP[h+4]=0;HEAP[h+8]=0;HEAP[h+12]=-1;HEAP[h+16]=0;HEAP[h+20]=-1;HEAP[h+24]=115;c=d-HEAP[k]<=3?3:1;break;case 1:c=_is_alignment_token1794(HEAP[HEAP[k]+2]&65535)==0?3:2;break;case 2:HEAP[h+2]=HEAP[HEAP[k]+2];HEAP[h]=HEAP[HEAP[k]];f=1;HEAP[k]+=4;c=6;break;case 3:c=d-HEAP[k]>1?4:6;break;case 4:c=_is_alignment_token1794(HEAP[HEAP[k]]& -65535)!=0?5:6;break;case 5:HEAP[h+2]=HEAP[HEAP[k]];f=1;HEAP[k]+=2;c=6;break;case 6:c=d-HEAP[k]>1?7:9;break;case 7:c=_is_sign_element1795(HEAP[HEAP[k]]&65535)!=0?8:9;break;case 8:HEAP[h+8]=HEAP[HEAP[k]];HEAP[k]+=2;c=9;break;case 9:c=d-HEAP[k]>1?10:12;break;case 10:c=HEAP[HEAP[k]]==35?11:12;break;case 11:HEAP[h+4]=1;HEAP[k]+=2;c=12;break;case 12:c=HEAP[h]==0?13:18;break;case 13:c=d-HEAP[k]>1?14:18;break;case 14:c=HEAP[HEAP[k]]==48?15:18;break;case 15:HEAP[h]=48;c=f==0?16:17;break;case 16:HEAP[h+2]= -61;c=17;break;case 17:HEAP[k]+=2;c=18;break;case 18:l=c=_get_integer1793(k,d,h+12);c=c==-1?19:20;break;case 19:j=0;c=39;break;case 20:c=l==0?21:22;break;case 21:HEAP[h+12]=-1;c=22;break;case 22:c=d+1+(0-HEAP[k])>2?23:25;break;case 23:c=HEAP[HEAP[k]]==44?24:25;break;case 24:HEAP[h+16]=1;HEAP[k]+=2;c=25;break;case 25:c=d+1+(0-HEAP[k])>2?26:31;break;case 26:c=HEAP[HEAP[k]]==46?27:31;break;case 27:HEAP[k]+=2;l=_get_integer1793(k,d,h+20);c=l==-1?28:29;break;case 28:j=0;c=39;break;case 29:c=l==0?30:31; -break;case 30:_PyErr_Format(HEAP[_PyExc_ValueError],__str51786,allocate(1,"i32",ALLOC_STACK));j=0;c=39;break;case 31:c=d-HEAP[k]>3?32:33;break;case 32:_PyErr_Format(HEAP[_PyExc_ValueError],__str61787,allocate(1,"i32",ALLOC_STACK));j=0;c=39;break;case 33:c=d+-2+(0-HEAP[k])<=1?34:35;break;case 34:HEAP[h+24]=HEAP[HEAP[k]];HEAP[k]+=2;c=35;break;case 35:c=HEAP[h+16]!=0?36:38;break;case 36:c=HEAP[h+24];c=c==0?38:c==37?38:c==69?38:c==70?38:c==71?38:c==100?38:c==101?38:c==102?38:c==103?38:37;break;case 37:_invalid_comma_type1792(HEAP[h+ -24]&65535);j=0;c=39;break;case 38:j=1;c=39;break;case 39:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _calc_padding1797(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=j>=0?1:4;break;case 1:var o=n;f=h>j?2:3;break;case 2:HEAP[o]=h;f=5;break;case 3:HEAP[o]=j;f=5;break;case 4:HEAP[n]=h;f=5;break;case 5:f=k==62?6:7;break;case 6:HEAP[l]=HEAP[n]-h;f=10;break;case 7:f=k==94?8:9;break;case 8:HEAP[l]=(HEAP[n]-h)/2|0;f=10;break;case 9:HEAP[l]=0;f=10;break;case 10:HEAP[m]=0-h+HEAP[n]+(0-HEAP[l]);return;default:assert(0,"bad label: "+f)}} -function _fill_padding1798(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u;h=g;j=e;k=b;l=a;m=c;l!=0?(f=-1,d=1):(f=-1,d=4);break;case 1:o=h;p=k;n=0;d=n=0? -7:9;break;case 7:a=HEAP[d+20]<=l?8:9;break;case 8:l=HEAP[d+20];a=9;break;case 9:_calc_padding1797(l,HEAP[d+12],HEAP[d+2]&65535,h,j,k);m=a=_PyUnicodeUCS2_FromUnicode(0,HEAP[k]);a=a==0?14:10;break;case 10:var n=HEAP[j],o=HEAP[h];a=HEAP[d]!=0?11:12;break;case 11:f=HEAP[d];a=13;break;case 12:f=32;a=13;break;case 13:a=_fill_padding1798(HEAP[m+12],l,f&65535,o,n);_llvm_memcpy_p0i8_p0i8_i32(a,HEAP[c+12],l*2,1,0);a=14;break;case 14:return c=m,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __PyUnicode_FormatAdvanced(g,e,b){var a=STACKTOP;STACKTOP+=28;_memset(a,0,28);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k;d=g;f=e;h=b;k=0;c=h==0?1:2;break;case 1:k=_PyObject_Unicode(d);c=6;break;case 2:c=_parse_internal_render_format_spec1796(f,h,j)==0?6:3;break;case 3:var l=d;c=HEAP[j+24]==115?4:5;break;case 4:k=_format_string_internal1799(l,j);c=6;break;case 5:_unknown_presentation_type1791(HEAP[j+24]&65535,HEAP[HEAP[l+4]+12]);c=6;break;case 6:return g=k,STACKTOP=a,g;default:assert(0, -"bad label: "+c)}}function _frame_get_f_exc_traceback(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:e=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str51805,2)<0?2:3;break;case 2:a=0;e=6;break;case 3:e=HEAP[b+52]!=0?4:5;break;case 4:HEAP[HEAP[b+52]]+=1;a=HEAP[b+52];e=6;break;case 5:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _frame_set_f_exc_traceback(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str51805,2)<0?2:3;break;case 2:d=-1;b=12;break;case 3:b=HEAP[a+52]!=0?4:7;break;case 4:b=HEAP[a+52]!=0?5:7;break;case 5:f=HEAP[a+52];HEAP[a+52]=0;HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:var h=c;b=h==__Py_NoneStruct?8:9;break;case 8:c=0;b=11;break;case 9:b= -h!=0?10:11;break;case 10:HEAP[c]+=1;b=11;break;case 11:HEAP[a+52]=c;d=0;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}} -function _frame_get_f_exc_type(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:e=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str61806,2)<0?2:3;break;case 2:a=0;e=6;break;case 3:e=HEAP[b+44]!=0?4:5;break;case 4:HEAP[HEAP[b+44]]+=1;a=HEAP[b+44];e=6;break;case 5:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _frame_set_f_exc_type(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str61806,2)<0?2:3;break;case 2:d=-1;b=12;break;case 3:b=HEAP[a+44]!=0?4:7;break;case 4:b=HEAP[a+44]!=0?5:7;break;case 5:f=HEAP[a+44];HEAP[a+44]=0;HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:var h=c;b=h==__Py_NoneStruct?8:9;break;case 8:c=0;b=11;break;case 9:b= -h!=0?10:11;break;case 10:HEAP[c]+=1;b=11;break;case 11:HEAP[a+44]=c;d=0;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}} -function _frame_get_f_exc_value(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:e=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str71807,2)<0?2:3;break;case 2:a=0;e=6;break;case 3:e=HEAP[b+48]!=0?4:5;break;case 4:HEAP[HEAP[b+48]]+=1;a=HEAP[b+48];e=6;break;case 5:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _frame_set_f_exc_value(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str71807,2)<0?2:3;break;case 2:d=-1;b=12;break;case 3:b=HEAP[a+48]!=0?4:7;break;case 4:b=HEAP[a+48]!=0?5:7;break;case 5:f=HEAP[a+48];HEAP[a+48]=0;HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:var h=c;b=h==__Py_NoneStruct?8:9;break;case 8:c=0;b=11;break;case 9:b= -h!=0?10:11;break;case 10:HEAP[c]+=1;b=11;break;case 11:HEAP[a+48]=c;d=0;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}}function _frame_getlocals(g){_PyFrame_FastToLocals(g);HEAP[HEAP[g+28]]+=1;return HEAP[g+28]}function _PyFrame_GetLineNumber(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+40]!=0?1:2;break;case 1:a=HEAP[c+64];e=3;break;case 2:a=_PyCode_Addr2Line(HEAP[b+16],HEAP[c+60]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _frame_getlineno(g){g=_PyFrame_GetLineNumber(g);return _PyInt_FromLong(g)} -function _frame_setlineno(g,e){var b=STACKTOP;STACKTOP+=176;_memset(b,0,176);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m=b,n=b+4,o,p=b+8,q,r,u,s,t,v,w,x,y,z,C=b+12,A=b+92,G,E=b+172,D,R,M,L,I,J;d=g;f=e;l=k=j=0;HEAP[m]=0;o=HEAP[n]=0;G=z=y=x=w=v=t=s=u=r=q=HEAP[p]=0;a=(HEAP[HEAP[f+4]+84]&8388608)==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str81808);h=-1;a=66;break;case 2:a=HEAP[d+40]==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_ValueError],__str91809,allocate(1,"i32", -ALLOC_STACK));h=-1;a=66;break;case 4:j=_PyInt_AsLong(f);a=HEAP[HEAP[d+16]+56]>j?5:6;break;case 5:_PyErr_Format(HEAP[_PyExc_ValueError],__str101810,allocate([j,0,0,0],["i32",0,0,0],ALLOC_STACK));h=-1;a=66;break;case 6:a=HEAP[HEAP[d+16]+56]==j?7:8;break;case 7:k=0;j=HEAP[HEAP[d+16]+56];a=13;break;case 8:_PyString_AsStringAndSize(HEAP[HEAP[d+16]+60],E,p);o=HEAP[E];u=0;r=HEAP[HEAP[d+16]+56];k=-1;q=0;a=12;break;case 9:u=HEAP[o+q]+u;r=HEAP[o+(q+1)]+r;a=r>=j?10:11;break;case 10:var F=u;k=F;j=r;c=10;a=14; -break;case 11:q+=2;a=12;break;case 12:a=q=k?HEAP[d+60]:k;a=HEAP[HEAP[m]+k]==4?18:17;break;case 17:a=HEAP[HEAP[m]+k]==1?18:19;break;case 18:_PyErr_SetString(HEAP[_PyExc_ValueError],__str121812); -h=-1;a=66;break;case 19:z=y=-1;_llvm_memset_p0i8_i32(C,0,80,1,0);_llvm_memset_p0i8_i32(A,0,80,1,0);u=G=0;a=u0?26:28;break;case 26:a=HEAP[HEAP[m]+HEAP[C+(G-1)*4]];a=a==122?27:28;break;case 27:G-=1;a= -28;break;case 28:a=u==k?30:29;break;case 29:a=HEAP[d+60]==u?30:41;break;case 30:M=-1;var Z=G-1;R=Z;c=30;a=34;break;case 31:var K=R;a=HEAP[A+R*4]!=0?32:33;break;case 32:var N=HEAP[C+K*4];M=N;c=32;a=36;break;case 33:var H=K-1;R=H;c=33;a=34;break;case 34:a=(c==33?H:Z)>=0?31:35;break;case 35:var ba=M,c=35;a=36;break;case 36:a=(c==35?ba:N)!=-1?37:41;break;case 37:a=u==k?38:39;break;case 38:z=M;a=39;break;case 39:a=HEAP[d+60]==u?40:41;break;case 40:y=M;a=41;break;case 41:a=D>89?42:43;break;case 42:u+=2; -a=43;break;case 43:u+=1;a=u89?52:53;break;case 52:u+=2;a=53;break;case 53:u+=1;a=ux?59:58;break;case 58:var ha=d;HEAP[d+68]>l?(c=58,a=60):(c=58,a=65);break;case 59:_PyErr_SetString(HEAP[_PyExc_ValueError],__str141814);h=-1;a=66;break;case 60:HEAP[d+68]=HEAP[(c==64?la:ha)+68]-1;I=d+72+HEAP[d+68]*12;a=((HEAP[d+36]-HEAP[d+32])/4|0)>HEAP[I+8]?61:64;break;case 61:HEAP[d+36]+=-4;J=HEAP[HEAP[d+36]];HEAP[J]-=1;a=HEAP[J]==0?63:62;break;case 62:a=((HEAP[d+ -36]-HEAP[d+32])/4|0)>HEAP[I+8]?61:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[J+4]+24]](J);a=62;break;case 64:var la=d;HEAP[d+68]>l?(c=64,a=60):(c=64,a=65);break;case 65:HEAP[(c==58?ha:la)+64]=j;HEAP[d+60]=k;h=0;a=66;break;case 66:return d=h,STACKTOP=b,d;default:assert(0,"bad label: "+a)}}function _frame_gettrace(g){var e;for(e=-1;;)switch(e){case -1:var b;b=HEAP[g+40];e=b==0?1:2;break;case 1:b=__Py_NoneStruct;e=2;break;case 2:return HEAP[b]+=1,g=b;default:assert(0,"bad label: "+e)}} -function _frame_settrace(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=_PyFrame_GetLineNumber(a);HEAP[a+64]=b;d=HEAP[a+40];b=c!=0?1:2;break;case 1:HEAP[c]+=1;b=2;break;case 2:HEAP[a+40]=c;b=d!=0?3:5;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:return 0;default:assert(0,"bad label: "+b)}}function _frame_getrestricted(g){return _PyBool_FromLong(HEAP[g+20]!=HEAP[HEAP[HEAP[g+56]+4]+16])} -function _frame_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m;b=g;_PyObject_GC_UnTrack(b);e=HEAP[__PyTrash_delete_nesting]<=49?1:43;break;case 1:HEAP[__PyTrash_delete_nesting]+=1;c=HEAP[b+32];a=b+312;e=aa?8:12;break;case 8:e=HEAP[a]!= -0?9:11;break;case 9:e=HEAP[a];HEAP[e]-=1;e=HEAP[e]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[a]+4]+24]](HEAP[a]);e=11;break;case 11:a+=4;e=HEAP[b+36]>a?8:12;break;case 12:e=HEAP[b+12]!=0?13:15;break;case 13:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=15;break;case 15:e=HEAP[b+20];HEAP[e]-=1;e=HEAP[e]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+20]+4]+24]](HEAP[b+20]);e=17;break;case 17:e=HEAP[b+24];HEAP[e]-= -1;e=HEAP[e]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+24]+4]+24]](HEAP[b+24]);e=19;break;case 19:e=HEAP[b+28]!=0?20:22;break;case 20:h=HEAP[b+28];HEAP[b+28]=0;HEAP[h]-=1;e=HEAP[h]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=22;break;case 22:e=HEAP[b+40]!=0?23:25;break;case 23:j=HEAP[b+40];HEAP[b+40]=0;HEAP[j]-=1;e=HEAP[j]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=25;break;case 25:e=HEAP[b+44]!=0?26:28;break;case 26:k=HEAP[b+44];HEAP[b+44]=0;HEAP[k]-= -1;e=HEAP[k]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=28;break;case 28:e=HEAP[b+48]!=0?29:31;break;case 29:l=HEAP[b+48];HEAP[b+48]=0;HEAP[l]-=1;e=HEAP[l]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=31;break;case 31:e=HEAP[b+52]!=0?32:34;break;case 32:m=HEAP[b+52];HEAP[b+52]=0;HEAP[m]-=1;e=HEAP[m]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);e=34;break;case 34:d=HEAP[b+16];e=HEAP[d+64]==0?35:36;break;case 35:HEAP[d+64]=b;e=39;break;case 36:e= -HEAP[_numfree1823]<=199?37:38;break;case 37:HEAP[_numfree1823]+=1;HEAP[b+12]=HEAP[_free_list1822];HEAP[_free_list1822]=b;e=39;break;case 38:_PyObject_GC_Del(b);e=39;break;case 39:HEAP[d]-=1;e=HEAP[d]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=41;break;case 41:HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?42:44;break;case 42:__PyTrash_destroy_chain();e=44;break;case 43:__PyTrash_deposit_object(b);e=44;break;case 44:return; -default:assert(0,"bad label: "+e)}} -function _frame_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w;c=g;d=e;f=b;a=HEAP[c+12]!=0?1:3;break;case 1:m=FUNCTION_TABLE[d](HEAP[c+12],f);a=m!=0?2:3;break;case 2:h=m;a=41;break;case 3:a=HEAP[c+16]!=0?4:6;break;case 4:n=FUNCTION_TABLE[d](HEAP[c+16],f);a=n!=0?5:6;break;case 5:h=n;a=41;break;case 6:a=HEAP[c+20]!=0?7:9;break;case 7:o=FUNCTION_TABLE[d](HEAP[c+20],f);a=o!=0?8:9;break;case 8:h=o;a=41;break;case 9:a=HEAP[c+24]!=0?10:12;break;case 10:p=FUNCTION_TABLE[d](HEAP[c+ -24],f);a=p!=0?11:12;break;case 11:h=p;a=41;break;case 12:a=HEAP[c+28]!=0?13:15;break;case 13:q=FUNCTION_TABLE[d](HEAP[c+28],f);a=q!=0?14:15;break;case 14:h=q;a=41;break;case 15:a=HEAP[c+40]!=0?16:18;break;case 16:r=FUNCTION_TABLE[d](HEAP[c+40],f);a=r!=0?17:18;break;case 17:h=r;a=41;break;case 18:a=HEAP[c+44]!=0?19:21;break;case 19:u=FUNCTION_TABLE[d](HEAP[c+44],f);a=u!=0?20:21;break;case 20:h=u;a=41;break;case 21:a=HEAP[c+48]!=0?22:24;break;case 22:s=FUNCTION_TABLE[d](HEAP[c+48],f);a=s!=0?23:24;break; -case 23:h=s;a=41;break;case 24:a=HEAP[c+52]!=0?25:27;break;case 25:t=FUNCTION_TABLE[d](HEAP[c+52],f);a=t!=0?26:27;break;case 26:h=t;a=41;break;case 27:l=HEAP[HEAP[HEAP[c+16]+44]+8]+HEAP[HEAP[c+16]+12]+HEAP[HEAP[HEAP[c+16]+40]+8];j=c+312;a=32;break;case 28:a=HEAP[j]!=0?29:31;break;case 29:v=FUNCTION_TABLE[d](HEAP[j],f);a=v!=0?30:31;break;case 30:h=v;a=41;break;case 31:j+=4;a=32;break;case 32:l=a=l-1;a=a>=0?28:33;break;case 33:a=HEAP[c+36]!=0?34:40;break;case 34:k=HEAP[c+32];a=39;break;case 35:a=HEAP[k]!= -0?36:38;break;case 36:w=FUNCTION_TABLE[d](HEAP[k],f);a=w!=0?37:38;break;case 37:h=w;a=41;break;case 38:k+=4;a=39;break;case 39:a=HEAP[c+36]>k?35:40;break;case 40:h=0;a=41;break;case 41:return g=h;default:assert(0,"bad label: "+a)}} -function _frame_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m,n;b=g;d=HEAP[b+36];HEAP[b+36]=0;e=HEAP[b+44]!=0?1:3;break;case 1:h=HEAP[b+44];HEAP[b+44]=0;HEAP[h]-=1;e=HEAP[h]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=3;break;case 3:e=HEAP[b+48]!=0?4:6;break;case 4:j=HEAP[b+48];HEAP[b+48]=0;HEAP[j]-=1;e=HEAP[j]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=6;break;case 6:e=HEAP[b+52]!=0?7:9;break;case 7:k=HEAP[b+52];HEAP[b+52]=0;HEAP[k]-=1;e=HEAP[k]== -0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=9;break;case 9:e=HEAP[b+40]!=0?10:12;break;case 10:l=HEAP[b+40];HEAP[b+40]=0;HEAP[l]-=1;e=HEAP[l]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=12;break;case 12:f=HEAP[HEAP[HEAP[b+16]+44]+8]+HEAP[HEAP[b+16]+12]+HEAP[HEAP[HEAP[b+16]+40]+8];a=b+312;f=e=f-1;e=e>=0?13:17;break;case 13:e=HEAP[a]!=0?14:16;break;case 14:m=HEAP[a];HEAP[a]=0;HEAP[m]-=1;e=HEAP[m]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);e=16;break; -case 16:a+=4;f=e=f-1;e=e>=0?13:17;break;case 17:e=d!=0?18:23;break;case 18:c=HEAP[b+32];e=c19?1:2;break;case 1:throw _Py_FatalError(__str271830),"Reached an unreachable!";case 2:e=HEAP[d+68];g=d+72+e*12;HEAP[d+68]=e+1;HEAP[g]=f;HEAP[g+8]=j;HEAP[g+4]=h;return;default:assert(0,"bad label: "+c)}} -function _PyFrame_BlockPop(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+68]<=0?1:2;break;case 1:throw _Py_FatalError(__str281831),"Reached an unreachable!";case 2:return HEAP[b+68]-=1,g=b+72+HEAP[b+68]*12;default:assert(0,"bad label: "+e)}} -function _map_to_dict(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o;h=g;j=e;k=b;l=a;m=c;j=d=j-1;d=d>=0?1:9;break;case 1:n=HEAP[h+12+j*4];var p=HEAP[l+4*j];o=p;m!=0?(f=1,d=2):(f=1,d=3);break;case 2:var q=HEAP[o+8];o=q;f=2;d=3;break;case 3:var r=k,u=n;d=(f==2?q:p)==0?4:6;break;case 4:d=_PyObject_DelItem(r,u)!=0?5:7;break;case 5:_PyErr_Clear();d=7;break;case 6:d=_PyObject_SetItem(r,u,o)!=0?8:7;break;case 7:j=d=j-1;d=d>=0?1:9;break;case 8:_PyErr_Clear();d=7;break;case 9:return; -default:assert(0,"bad label: "+d)}} -function _dict_to_map(g,e,b,a,c,d){var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p;j=g;k=e;l=b;m=a;n=c;o=d;k=f=k-1;f=f>=0?1:19;break;case 1:p=HEAP[j+12+k*4];p=f=_PyObject_GetItem(l,p);f=f==0?2:4;break;case 2:_PyErr_Clear();f=o==0?3:4;break;case 3:k=f=k-1;f=f>=0?1:19;break;case 4:var q=HEAP[m+4*k];f=n!=0?5:8;break;case 5:var r=p;HEAP[q+8]!=r?(h=5,f=6):(h=5,f=16);break;case 6:f=_PyCell_Set(HEAP[m+4*k],p)<0?7:15;break;case 7:_PyErr_Clear();f=15;break;case 8:var u=p;q!=u?(h=8,f=9):(h=8,f= -16);break;case 9:f=p!=0?10:11;break;case 10:HEAP[p]+=1;f=11;break;case 11:f=HEAP[m+4*k]!=0?12:14;break;case 12:f=HEAP[m+4*k];HEAP[f]-=1;f=HEAP[f]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[HEAP[m+4*k]+4]+24]](HEAP[m+4*k]);f=14;break;case 14:HEAP[m+4*k]=p;f=15;break;case 15:var s=p,h=15;f=16;break;case 16:f=(h==15?s:h==5?r:u)!=0?17:3;break;case 17:HEAP[p]-=1;f=HEAP[p]==0?18:3;break;case 18:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);f=3;break;case 19:return;default:assert(0,"bad label: "+f)}} -function _PyFrame_FastToLocals(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=e,j=e+4,k=e+8,l,m,n,o;a=g;b=a==0?14:1;break;case 1:c=HEAP[a+28];b=c==0?2:4;break;case 2:b=_PyDict_New();HEAP[a+28]=b;c=HEAP[a+28];b=c==0?3:4;break;case 3:_PyErr_Clear();b=14;break;case 4:l=HEAP[a+16];d=HEAP[l+36];b=(HEAP[HEAP[d+4]+84]&67108864)==0?14:5;break;case 5:_PyErr_Fetch(h,j,k);f=a+312;m=HEAP[d+8];b=HEAP[l+12]0?2:5;break;case 2:h=_PyTuple_GetItem(j,0);b=(HEAP[HEAP[h+4]+84]&134217728)==0?3:6;break;case 3:b=(HEAP[HEAP[h+4]+84]&268435456)==0?4:6;break;case 4:h=__Py_NoneStruct;b=6;break;case 5:h= -__Py_NoneStruct;b=6;break;case 6:HEAP[h]+=1;HEAP[f+24]=h;HEAP[f+32]=0;HEAP[f+40]=0;b=HEAP[___name___8324]==0?7:11;break;case 7:b=_PyString_InternFromString(__str1847);HEAP[___name___8324]=b;b=HEAP[___name___8324]==0?8:11;break;case 8:HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=10;break;case 10:d=0;b=17;break;case 11:k=b=_PyDict_GetItem(c,HEAP[___name___8324]);b=b!=0?12:13;break;case 12:HEAP[k]+=1;HEAP[f+40]=k;b=13;break;case 13:l=f+-12;b=HEAP[l+8]!=-2?15:16;break; -case 14:d=0;b=17;break;case 15:throw _Py_FatalError(__str11848),"Reached an unreachable!";case 16:HEAP[l+8]=-3;HEAP[l]=HEAP[__PyGC_generation0];HEAP[l+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[l+4]]=l;HEAP[HEAP[__PyGC_generation0]+4]=l;d=f;b=17;break;case 17:return a=d;default:assert(0,"bad label: "+b)}} -function _PyFunction_GetCode(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,67);a=0;e=3;break;case 2:a=HEAP[b+8];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFunction_GetGlobals(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,77);a=0;e=3;break;case 2:a=HEAP[b+12];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFunction_GetModule(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,87);a=0;e=3;break;case 2:a=HEAP[b+40];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFunction_GetDefaults(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,97);a=0;e=3;break;case 2:a=HEAP[b+16];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFunction_SetDefaults(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,107);d=-1;b=12;break;case 2:b=c==__Py_NoneStruct?3:4;break;case 3:c=0;b=8;break;case 4:b=c==0?7:5;break;case 5:b=(HEAP[HEAP[c+4]+84]&67108864)==0?7:6;break;case 6:HEAP[c]+=1;b=8;break;case 7:_PyErr_SetString(HEAP[_PyExc_SystemError],__str31850);d=-1;b=12;break;case 8:b=HEAP[a+16]!=0?9:11;break;case 9:b=HEAP[a+16];HEAP[b]-=1;b= -HEAP[b]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+16]+4]+24]](HEAP[a+16]);b=11;break;case 11:HEAP[a+16]=c;d=0;b=12;break;case 12:return a=d;default:assert(0,"bad label: "+b)}}function _PyFunction_GetClosure(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,128);a=0;e=3;break;case 2:a=HEAP[b+20];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyFunction_SetClosure(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PyFunction_Type?1:2;break;case 1:__PyErr_BadInternalCall(__str21849,138);d=-1;b=11;break;case 2:b=c==__Py_NoneStruct?3:4;break;case 3:c=0;b=7;break;case 4:var f=c;b=(HEAP[HEAP[c+4]+84]&67108864)!=0?5:6;break;case 5:HEAP[c]=HEAP[f]+1;b=7;break;case 6:_PyErr_Format(HEAP[_PyExc_SystemError],__str41851,allocate([HEAP[HEAP[f+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=-1;b=11;break;case 7:b=HEAP[a+20]!= -0?8:10;break;case 8:b=HEAP[a+20];HEAP[b]-=1;b=HEAP[b]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+20]+4]+24]](HEAP[a+20]);b=10;break;case 10:HEAP[a+20]=c;d=0;b=11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}}function _restricted(){var g;for(g=-1;;)switch(g){case -1:var e;g=_PyEval_GetRestricted()==0?1:2;break;case 1:e=0;g=3;break;case 2:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str121859);e=1;g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}} -function _func_get_dict(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=_restricted()!=0?1:2;break;case 1:a=0;e=6;break;case 2:e=HEAP[b+32]==0?3:5;break;case 3:e=_PyDict_New();HEAP[b+32]=e;e=HEAP[b+32]==0?4:5;break;case 4:a=0;e=6;break;case 5:HEAP[HEAP[b+32]]+=1;a=HEAP[b+32];e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _func_set_dict(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=_restricted()!=0?1:2;break;case 1:d=-1;b=10;break;case 2:b=c==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str131860);d=-1;b=10;break;case 4:b=(HEAP[HEAP[c+4]+84]&536870912)==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError],__str141861);d=-1;b=10;break;case 6:f=HEAP[a+32];HEAP[c]+=1;HEAP[a+32]=c;b=f!=0?7:9;break;case 7:HEAP[f]-=1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=9;break;case 9:d=0;b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}}function _func_get_code(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=_restricted()!=0?1:2;break;case 1:a=0;e=3;break;case 2:HEAP[HEAP[b+8]]+=1;a=HEAP[b+8];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _func_set_code(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;b=_restricted()!=0?1:2;break;case 1:f=-1;b=13;break;case 2:b=c==0?4:3;break;case 3:b=HEAP[c+4]!=_PyCode_Type?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_TypeError],__str151862);f=-1;b=13;break;case 5:j=HEAP[HEAP[c+40]+8];b=HEAP[a+20]!=0?6:7;break;case 6:d=HEAP[HEAP[a+20]+8];b=8;break;case 7:d=0;b=8;break;case 8:k=d;var l=a;b=k!=j?9:10;break;case 9:b=_PyString_AsString(HEAP[l+28]);_PyErr_Format(HEAP[_PyExc_ValueError], -__str161863,allocate([b,0,0,0,k,0,0,0,j,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));f=-1;b=13;break;case 10:h=HEAP[l+8];HEAP[c]+=1;HEAP[a+8]=c;HEAP[h]-=1;b=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=12;break;case 12:f=0;b=13;break;case 13:return a=f;default:assert(0,"bad label: "+b)}}function _func_get_name(g){HEAP[HEAP[g+28]]+=1;return HEAP[g+28]} -function _func_set_name(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=_restricted()!=0?1:2;break;case 1:d=-1;b=8;break;case 2:b=c==0?4:3;break;case 3:b=(HEAP[HEAP[c+4]+84]&134217728)==0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_TypeError],__str171864);d=-1;b=8;break;case 5:f=HEAP[a+28];HEAP[c]+=1;HEAP[a+28]=c;HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:d=0;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _func_get_defaults(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=_restricted()!=0?1:2;break;case 1:a=0;e=5;break;case 2:e=HEAP[b+16]==0?3:4;break;case 3:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=5;break;case 4:HEAP[HEAP[b+16]]+=1;a=HEAP[b+16];e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _func_set_defaults(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=_restricted()!=0?1:2;break;case 1:d=-1;b=13;break;case 2:var h=c;b=h==__Py_NoneStruct?3:4;break;case 3:c=0;f=HEAP[a+16];b=9;break;case 4:b=h!=0?5:7;break;case 5:b=(HEAP[HEAP[c+4]+84]&67108864)==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str181865);d=-1;b=13;break;case 7:f=HEAP[a+16];b=c!=0?8:9;break;case 8:HEAP[c]+=1;b=9;break;case 9:HEAP[a+16]=c;b=f!=0?10:12;break;case 10:HEAP[f]-=1;b=HEAP[f]== -0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=12;break;case 12:d=0;b=13;break;case 13:return b=d;default:assert(0,"bad label: "+b)}} -function _func_new(g,e,b){g=STACKTOP;STACKTOP+=20;_memset(g,0,20);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=g,j=g+4,k=g+8,l=g+12,m=g+16,n,o,p,q,r;a=e;c=b;HEAP[k]=__Py_NoneStruct;HEAP[l]=__Py_NoneStruct;HEAP[m]=__Py_NoneStruct;a=_PyArg_ParseTupleAndKeywords(a,c,__str261873,_kwlist_8728,allocate([_PyCode_Type,0,0,0,h,0,0,0,_PyDict_Type,0,0,0,j,0,0,0,k,0,0,0,l,0,0,0,m,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.PyCodeObject**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0, -0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=36;break;case 2:a=HEAP[k]!=__Py_NoneStruct?3:5;break;case 3:a=(HEAP[HEAP[HEAP[k]+4]+84]&134217728)==0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_TypeError],__str321879);f=0;a=36;break;case 5:a=HEAP[l]!=__Py_NoneStruct?6:8;break;case 6:a=(HEAP[HEAP[HEAP[l]+4]+84]&67108864)==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str331880);f=0;a=36;break;case 8:o= -HEAP[HEAP[HEAP[h]+40]+8];a=(HEAP[HEAP[HEAP[m]+4]+84]&67108864)==0?9:14;break;case 9:var u=HEAP[m]!=__Py_NoneStruct;a=o==0?12:10;break;case 10:a=u?13:11;break;case 11:_PyErr_SetString(HEAP[_PyExc_TypeError],__str341881);f=0;a=36;break;case 12:a=u?13:16;break;case 13:_PyErr_SetString(HEAP[_PyExc_TypeError],__str351882);f=0;a=36;break;case 14:a=HEAP[m]!=__Py_NoneStruct?15:16;break;case 15:d=HEAP[HEAP[m]+8];a=17;break;case 16:d=0;a=17;break;case 17:p=d;a=o!=p?18:19;break;case 18:f=_PyErr_Format(HEAP[_PyExc_ValueError], -__str361883,allocate([HEAP[HEAP[h]+52]+20,0,0,0,o,0,0,0,p,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));a=36;break;case 19:a=p!=0?20:25;break;case 20:q=0;a=24;break;case 21:r=HEAP[HEAP[m]+12+q*4];a=HEAP[r+4]!=_PyCell_Type?22:23;break;case 22:f=_PyErr_Format(HEAP[_PyExc_TypeError],__str371884,allocate([HEAP[HEAP[r+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=36;break;case 23:q+=1;a=24;break;case 24:a=ql?1:23;break;case 23:k=1;a=24;break;case 24:return g=k;default:assert(0,"bad label: "+a)}} -function _future_parse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;f=b;n=m=l=0;a=HEAP[_future_9164]==0?1:3;break;case 1:a=_PyString_InternFromString(__str101908);HEAP[_future_9164]=a;a=HEAP[_future_9164]==0?2:3;break;case 2:j=0;a=30;break;case 3:a=HEAP[d]!=1?4:6;break;case 4:a=HEAP[d]!=2?5:6;break;case 5:j=1;a=30;break;case 6:k=0;a=25;break;case 7:o=HEAP[HEAP[d+4]+4+k*4];a=m!=0?8:10;break;case 8:a=HEAP[o+20]>n?9:10;break;case 9:j=1;a=30;break;case 10:n=HEAP[o+20];var p= -o;a=HEAP[o]==17?11:18;break;case 11:a=HEAP[p+4]==HEAP[_future_9164]?12:17;break;case 12:a=m!=0?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_SyntaxError],__str111909);_PyErr_SyntaxLocation(f,HEAP[o+20]);j=0;a=30;break;case 14:a=_future_check_features(c,o,f)==0?15:16;break;case 15:j=0;a=30;break;case 16:HEAP[c+4]=HEAP[o+20];a=24;break;case 17:m=1;a=24;break;case 18:a=HEAP[p]!=20?23:19;break;case 19:a=l!=0?23:20;break;case 20:a=HEAP[o+4];a=HEAP[a]!=17?21:22;break;case 21:m=1;a=24;break;case 22:l= -1;a=24;break;case 23:m=1;a=24;break;case 24:k+=1;a=25;break;case 25:a=HEAP[d+4]!=0?26:27;break;case 26:h=HEAP[HEAP[d+4]];a=28;break;case 27:h=0;a=28;break;case 28:a=h>k?7:29;break;case 29:j=1;a=30;break;case 30:return g=j;default:assert(0,"bad label: "+a)}} -function _PyFuture_FromAST(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=_PyObject_Malloc(8);b=f==0?1:2;break;case 1:_PyErr_NoMemory();d=0;b=5;break;case 2:HEAP[f]=0;HEAP[f+4]=-1;b=_future_parse(f,a,c);var h=f;b=b==0?3:4;break;case 3:_PyObject_Free(h);d=0;b=5;break;case 4:d=h;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}}function _gc_list_init(g){HEAP[g+4]=g;HEAP[g]=g}function _gc_list_is_empty(g){return HEAP[g]==g} -function _gc_list_remove(g){HEAP[HEAP[g+4]]=HEAP[g];HEAP[HEAP[g]+4]=HEAP[g+4];HEAP[g]=0}function _gc_list_move(g,e){var b,a;b=HEAP[g+4];a=HEAP[g];HEAP[b]=a;HEAP[a+4]=b;HEAP[g+4]=HEAP[e+4];b=HEAP[g+4];HEAP[e+4]=g;HEAP[b]=HEAP[e+4];HEAP[g]=e} -function _gc_list_merge(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=_gc_list_is_empty(a)==0?1:2;break;case 1:b=HEAP[c+4];HEAP[b]=HEAP[a];HEAP[HEAP[b]+4]=b;HEAP[c+4]=HEAP[a+4];HEAP[HEAP[c+4]]=c;b=2;break;case 2:_gc_list_init(a);return;default:assert(0,"bad label: "+b)}} -function _gc_list_size(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c;a=g;e=0;c=HEAP[a];var d=e;c!=a?(b=-1,e=1):(b=-1,e=2);break;case 1:e=(b==1?f:d)+1;c=HEAP[c];var f=e;c!=a?e=b=1:(b=1,e=2);break;case 2:return g=b==-1?d:f;default:assert(0,"bad label: "+e)}} -function _append_objects(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=HEAP[c];b=5;break;case 1:h=f+12;b=h!=a?2:4;break;case 2:b=_PyList_Append(a,h)!=0?3:4;break;case 3:d=-1;b=7;break;case 4:f=HEAP[f];b=5;break;case 5:b=f!=c?1:6;break;case 6:d=0;b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function _update_refs(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[b];e=a!=b?1:2;break;case 1:HEAP[a+8]=HEAP[a+12];a=HEAP[a];e=a!=b?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _visit_decref(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&16384)!=0?1:5;break;case 1:e=HEAP[HEAP[b+4]+164]==0?3:2;break;case 2:e=FUNCTION_TABLE[HEAP[HEAP[b+4]+164]](b)!=0?3:5;break;case 3:a=b+-12;e=HEAP[a+8]>0?4:5;break;case 4:HEAP[a+8]-=1;e=5;break;case 5:return 0;default:assert(0,"bad label: "+e)}} -function _subtract_refs(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[b];e=a!=b?1:2;break;case 1:e=HEAP[HEAP[a+12+4]+92];FUNCTION_TABLE[e](a+12,74,0);a=HEAP[a];e=a!=b?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _visit_reachable(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&16384)!=0?1:7;break;case 1:b=HEAP[HEAP[a+4]+164]==0?3:2;break;case 2:b=FUNCTION_TABLE[HEAP[HEAP[a+4]+164]](a)!=0?3:7;break;case 3:d=a+-12;f=HEAP[d+8];b=HEAP[d+8]==0?4:5;break;case 4:HEAP[d+8]=1;b=7;break;case 5:b=f==-4?6:7;break;case 6:_gc_list_move(d,c);HEAP[d+8]=1;b=7;break;case 7:return 0;default:assert(0,"bad label: "+b)}} -function _move_unreachable(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;d=HEAP[a];b=d!=a?1:8;break;case 1:var j=d;b=HEAP[d+8]!=0?2:6;break;case 2:h=j+12;b=HEAP[HEAP[h+4]+92];HEAP[d+8]=-3;FUNCTION_TABLE[b](h,76,a);f=HEAP[d];var k=h;b=HEAP[h+4]==_PyTuple_Type?3:4;break;case 3:__PyTuple_MaybeUntrack(k);b=7;break;case 4:b=HEAP[k+4]==_PyDict_Type?5:7;break;case 5:__PyDict_MaybeUntrack(h);b=7;break;case 6:f=HEAP[j];_gc_list_move(d,c);HEAP[d+8]=-4;b=7;break;case 7:d=f;b=d!=a?1:8;break;case 8:return; -default:assert(0,"bad label: "+b)}}function _has_finalizer(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]==_PyInstance_Type?1:2;break;case 1:a=__PyInstance_Lookup(b,HEAP[_delstr])!=0;e=7;break;case 2:var c=HEAP[b+4];e=(HEAP[HEAP[b+4]+84]&512)!=0?3:4;break;case 3:a=HEAP[c+188]!=0;e=7;break;case 4:e=c==_PyGen_Type?5:6;break;case 5:a=_PyGen_NeedsFinalizing(b);e=7;break;case 6:a=0;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _move_finalizers(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;d=HEAP[a];b=d!=a?1:4;break;case 1:b=d+12;f=HEAP[d];b=_has_finalizer(b)!=0?2:3;break;case 2:_gc_list_move(d,c);HEAP[d+8]=-3;b=3;break;case 3:d=f;b=d!=a?1:4;break;case 4:return;default:assert(0,"bad label: "+b)}} -function _visit_move(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&16384)!=0?1:5;break;case 1:b=HEAP[HEAP[a+4]+164]==0?3:2;break;case 2:b=FUNCTION_TABLE[HEAP[HEAP[a+4]+164]](a)!=0?3:5;break;case 3:b=HEAP[a+-12+8]==-4?4:5;break;case 4:b=a+-12;_gc_list_move(b,c);HEAP[b+8]=-3;b=5;break;case 5:return 0;default:assert(0,"bad label: "+b)}} -function _move_finalizer_reachable(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[b];e=a!=b?1:2;break;case 1:e=HEAP[HEAP[a+12+4]+92];FUNCTION_TABLE[e](a+12,78,b);a=HEAP[a];e=a!=b?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _handle_weakrefs(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l,m,n,o,p;c=g;d=e;m=0;_gc_list_init(k);f=HEAP[c];a=f!=c?1:9;break;case 1:h=f+12;l=HEAP[f];a=(HEAP[HEAP[h+4]+84]&64)==0?8:2;break;case 2:a=HEAP[HEAP[h+4]+104]<=0?8:3;break;case 3:n=h+HEAP[HEAP[h+4]+104];j=HEAP[n];a=HEAP[n]!=0?4:8;break;case 4:__PyWeakref_ClearRef(j);a=HEAP[j+12]==0?7:5;break;case 5:a=HEAP[j+-12+8]==-4?7:6;break;case 6:HEAP[j]+=1;a=j+-12;_gc_list_move(a,k); -a=7;break;case 7:j=HEAP[n];a=HEAP[n]!=0?4:8;break;case 8:f=l;a=f!=c?1:9;break;case 9:a=_gc_list_is_empty(k)==0?10:21;break;case 10:var q=k,r=k;a=11;break;case 11:f=HEAP[q];j=h=f+12;p=HEAP[j+12];o=a=_PyObject_CallFunctionObjArgs(p,allocate([j,0,0,0,0,0,0,0],["%struct.PyWeakReference*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=a==0?12:13;break;case 12:_PyErr_WriteUnraisable(p);a=15;break;case 13:HEAP[o]-=1;a=HEAP[o]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=15;break;case 15:HEAP[h]-=1; -a=HEAP[h]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=17;break;case 17:a=HEAP[r]==f?18:20;break;case 18:_gc_list_move(f,d);a=19;break;case 19:a=_gc_list_is_empty(k)==0?11:21;break;case 20:m+=1;a=19;break;case 21:return c=m,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _debug_instance(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=HEAP[HEAP[c+8]+16];b=f==0?3:1;break;case 1:b=(HEAP[HEAP[f+4]+84]&134217728)==0?3:2;break;case 2:d=_PyString_AsString(f);b=4;break;case 3:d=__str1912;b=4;break;case 4:_PySys_WriteStderr(__str11913,allocate([a,0,0,0,d,0,0,0,c,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"%struct.PyInstanceObject*",0,0,0],ALLOC_STACK));return;default:assert(0,"bad label: "+b)}} -function _debug_cycle(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=(HEAP[_debug]&8)==0?3:1;break;case 1:b=HEAP[c+4]!=_PyInstance_Type?3:2;break;case 2:_debug_instance(a,c);b=5;break;case 3:b=(HEAP[_debug]&16)!=0?4:5;break;case 4:_PySys_WriteStderr(__str21914,allocate([a,0,0,0,HEAP[HEAP[c+4]+12],0,0,0,c,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=5;break;case 5:return;default:assert(0,"bad label: "+b)}} -function _handle_finalizers(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;d=HEAP[a];b=HEAP[_garbage]==0?1:8;break;case 1:b=_PyList_New(0);HEAP[_garbage]=b;b=HEAP[_garbage]==0?2:8;break;case 2:throw _Py_FatalError(__str31915),"Reached an unreachable!";case 3:f=d+12;b=(HEAP[_debug]&32)!=0?5:4;break;case 4:b=_has_finalizer(f)!=0?5:7;break;case 5:b=_PyList_Append(HEAP[_garbage],f)<0?6:7;break;case 6:b=10;break;case 7:d=HEAP[d];b=8;break;case 8:b=d!=a?3:9;break;case 9:_gc_list_merge(a,c); -b=10;break;case 10:return;default:assert(0,"bad label: "+b)}} -function _delete_garbage(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=_gc_list_is_empty(a)==0?1:9;break;case 1:f=HEAP[a];h=f+12;b=(HEAP[_debug]&32)!=0?2:3;break;case 2:_PyList_Append(HEAP[_garbage],h);b=6;break;case 3:d=HEAP[HEAP[h+4]+96];b=d!=0?4:6;break;case 4:HEAP[h]+=1;FUNCTION_TABLE[d](h);HEAP[h]-=1;b=HEAP[h]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=6;break;case 6:b=HEAP[a]==f?8:7;break;case 7:b=_gc_list_is_empty(a)==0?1:9;break;case 8:_gc_list_move(f,c); -HEAP[f+8]=-3;b=7;break;case 9:return;default:assert(0,"bad label: "+b)}}function _clear_freelists(){_PyMethod_ClearFreeList();_PyFrame_ClearFreeList();_PyCFunction_ClearFreeList();_PyTuple_ClearFreeList();_PyUnicodeUCS2_ClearFreelist();_PyInt_ClearFreeList();_PyFloat_ClearFreeList()} -function _get_time(){var g;for(g=-1;;)switch(g){case -1:var e,b;e=0;g=HEAP[_tmod]!=0?1:8;break;case 1:b=_PyObject_CallMethod(HEAP[_tmod],__str41916,0,allocate(1,"i32",ALLOC_STACK));g=b==0?2:3;break;case 2:_PyErr_Clear();g=8;break;case 3:g=HEAP[b+4]==_PyFloat_Type?5:4;break;case 4:g=_PyType_IsSubtype(HEAP[b+4],_PyFloat_Type)!=0?5:6;break;case 5:e=_PyFloat_AsDouble(b);g=6;break;case 6:HEAP[b]-=1;g=HEAP[b]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=8;break;case 8:return g=e;default:assert(0, -"bad label: "+g)}} -function _collect(g){var e=STACKTOP;STACKTOP+=24;_memset(e,0,24);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l=e,m=e+12,n,o,p;c=g;o=h=f=0;b=HEAP[_delstr]==0?1:3;break;case 1:b=_PyString_InternFromString(__str51917);HEAP[_delstr]=b;b=HEAP[_delstr]==0?2:3;break;case 2:throw _Py_FatalError(__str61918),"Reached an unreachable!";case 3:b=(HEAP[_debug]&1)!=0?4:7;break;case 4:_PySys_WriteStderr(__str71919,allocate([c,0,0,0],["i32",0,0,0],ALLOC_STACK));_PySys_WriteStderr(__str81920,allocate(1, -"i32",ALLOC_STACK));d=0;b=5;break;case 5:b=_gc_list_size(_generations+d*20);_PySys_WriteStderr(__str91921,allocate([b,0,0,0],["i32",0,0,0],ALLOC_STACK));d=b=d+1;b=b<=2?5:6;break;case 6:o=_get_time();_PySys_WriteStderr(__str101922,allocate(1,"i32",ALLOC_STACK));b=7;break;case 7:b=c+1<=2?8:9;break;case 8:HEAP[_generations+(c+1)*20+16]+=1;b=9;break;case 9:d=0;b=d<=c?10:11;break;case 10:HEAP[_generations+d*20+16]=0;d+=1;b=d<=c?10:11;break;case 11:d=0;var q=c,r=_generations+q*20;dHEAP[_generations+b*20+12]?2:5;break;case 2:g=b==2?3:4;break;case 3:g=(HEAP[_long_lived_total]/4|0)>HEAP[_long_lived_pending]?5:4;break;case 4:_collect(b);g=7;break;case 5:var a=b-1;b=a;e=5;g=6;break;case 6:g=(e==5?a:2)>=0?1:7;break;case 7:return;default:assert(0,"bad label: "+g)}} -function _gc_enable(){HEAP[_enabled_b]=0;HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct}function _gc_disable(){HEAP[_enabled_b]=1;HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct}function _gc_isenabled(){return _PyBool_FromLong(HEAP[_enabled_b]?0:1)} -function _gc_collect(g,e,b){g=STACKTOP;STACKTOP+=4;_memset(g,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h;a=e;c=b;HEAP[f]=2;a=_PyArg_ParseTupleAndKeywords(a,c,__str191931,_keywords_8967,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:a=HEAP[f]<0|HEAP[f]>2?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str211933);d=0;a=8;break;case 4:a=HEAP[_collecting_b]!=0?5:6;break;case 5:h=0;a=7;break;case 6:HEAP[_collecting_b]=1;h=_collect(HEAP[f]); -HEAP[_collecting_b]=0;a=7;break;case 7:d=_PyInt_FromSsize_t(h);a=8;break;case 8:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _gc_set_debug(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=_PyArg_ParseTuple(e,__str221934,allocate([_debug,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:a=0;b=3;break;case 2:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _gc_get_debug(){return _Py_BuildValue(__str231935,allocate([HEAP[_debug],0,0,0],["i32",0,0,0],ALLOC_STACK))} -function _gc_set_thresh(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=_PyArg_ParseTuple(e,__str241936,allocate([_generations+12,0,0,0,_generations+20+12,0,0,0,_generations+40+12,0,0,0],["i32*",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:a=0;b=5;break;case 2:c=2;b=3;break;case 3:HEAP[_generations+c*20+12]=HEAP[_generations+40+12];c=b=c+1;b=b<=2?3:4;break;case 4:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;b=5;break;case 5:return a;default:assert(0,"bad label: "+b)}} -function _gc_get_thresh(){return _Py_BuildValue(__str251937,allocate([HEAP[_generations+12],0,0,0,HEAP[_generations+20+12],0,0,0,HEAP[_generations+40+12],0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK))}function _gc_get_count(){return _Py_BuildValue(__str251937,allocate([HEAP[_generations+16],0,0,0,HEAP[_generations+20+16],0,0,0,HEAP[_generations+40+16],0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK))} -function _referrersvisit(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=0;b=4;break;case 1:b=HEAP[c+12+f*4]==a?2:3;break;case 2:d=1;b=6;break;case 3:f+=1;b=4;break;case 4:b=HEAP[c+8]>f?1:5;break;case 5:d=0;b=6;break;case 6:return b=d;default:assert(0,"bad label: "+b)}} -function _gc_referrers_for(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;j=HEAP[d];a=7;break;case 1:k=j+12;l=HEAP[HEAP[k+4]+92];a=k==c?6:2;break;case 2:a=k==f?6:3;break;case 3:a=FUNCTION_TABLE[l](k,80,c)!=0?4:6;break;case 4:a=_PyList_Append(f,k)<0?5:6;break;case 5:h=0;a=9;break;case 6:j=HEAP[j];a=7;break;case 7:a=j!=d?1:8;break;case 8:h=1;a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function _gc_get_referrers(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h;c=e;h=_PyList_New(0);b=h==0?1:2;break;case 1:d=0;b=10;break;case 2:f=0;a=2;b=8;break;case 3:b=_gc_referrers_for(c,_generations+f*20,h)==0?4:7;break;case 4:HEAP[h]-=1;b=HEAP[h]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=6;break;case 6:d=0;b=10;break;case 7:var j=f+1;f=j;a=7;b=8;break;case 8:b=(a==7?j:0)<=2?3:9;break;case 9:d=h;b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _referentsvisit(g,e){return _PyList_Append(e,g)<0} -function _gc_get_referents(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=e;f=_PyList_New(0);b=f==0?1:2;break;case 1:c=0;b=14;break;case 2:d=0;b=12;break;case 3:j=HEAP[a+12+d*4];b=(HEAP[HEAP[j+4]+84]&16384)==0?11:4;break;case 4:b=HEAP[HEAP[j+4]+164]==0?6:5;break;case 5:b=FUNCTION_TABLE[HEAP[HEAP[j+4]+164]](j)==0?11:6;break;case 6:h=HEAP[HEAP[j+4]+92];b=HEAP[HEAP[j+4]+92]==0?11:7;break;case 7:b=FUNCTION_TABLE[h](j,82,f)!=0?8:11;break;case 8:HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=10;break;case 10:c=0;b=14;break;case 11:d+=1;b=12;break;case 12:b=HEAP[a+8]>d?3:13;break;case 13:c=f;b=14;break;case 14:return b=c;default:assert(0,"bad label: "+b)}} -function _gc_get_objects(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a,c;c=_PyList_New(0);g=c==0?1:2;break;case 1:b=0;g=10;break;case 2:a=0;e=2;g=8;break;case 3:g=_append_objects(c,_generations+a*20)!=0?4:7;break;case 4:HEAP[c]-=1;g=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=6;break;case 6:b=0;g=10;break;case 7:var d=a+1;a=d;e=7;g=8;break;case 8:g=(e==7?d:0)<=2?3:9;break;case 9:b=c;g=10;break;case 10:return g=b;default:assert(0,"bad label: "+g)}} -function _gc_is_tracked(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=e;b=(HEAP[HEAP[a+4]+84]&16384)==0?5:1;break;case 1:b=HEAP[HEAP[a+4]+164]==0?3:2;break;case 2:b=FUNCTION_TABLE[HEAP[HEAP[a+4]+164]](a)!=0?3:5;break;case 3:b=HEAP[a+-12+8]==-2?5:4;break;case 4:c=__Py_TrueStruct;b=6;break;case 5:c=__Py_ZeroStruct;b=6;break;case 6:return HEAP[c]+=1,b=c;default:assert(0,"bad label: "+b)}} -function _initgc(){var g;for(g=-1;;)switch(g){case -1:var e;e=_Py_InitModule4(__str391951,_GcMethods,_gc__doc__,0,1013);g=e==0?14:1;break;case 1:g=HEAP[_garbage]==0?2:3;break;case 2:g=_PyList_New(0);HEAP[_garbage]=g;g=HEAP[_garbage]==0?14:3;break;case 3:HEAP[HEAP[_garbage]]+=1;g=_PyModule_AddObject(e,__str401952,HEAP[_garbage])<0?14:4;break;case 4:g=HEAP[_tmod]==0?5:7;break;case 5:g=_PyImport_ImportModuleNoBlock(__str41916);HEAP[_tmod]=g;g=HEAP[_tmod]==0?6:7;break;case 6:_PyErr_Clear();g=7;break; -case 7:g=_PyModule_AddIntConstant(e,__str411953,1)<0?14:8;break;case 8:g=_PyModule_AddIntConstant(e,__str421954,2)<0?14:9;break;case 9:g=_PyModule_AddIntConstant(e,__str431955,4)<0?14:10;break;case 10:g=_PyModule_AddIntConstant(e,__str441956,8)<0?14:11;break;case 11:g=_PyModule_AddIntConstant(e,__str451957,16)<0?14:12;break;case 12:g=_PyModule_AddIntConstant(e,__str461958,32)<0?14:13;break;case 13:_PyModule_AddIntConstant(e,__str471959,62);g=14;break;case 14:return;default:assert(0,"bad label: "+ -g)}}function _PyGC_Collect(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[_collecting_b]!=0?1:2;break;case 1:e=0;g=3;break;case 2:HEAP[_collecting_b]=1;e=_collect(2);HEAP[_collecting_b]=0;g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}}function __PyGC_Dump(g){__PyObject_Dump(g+12)} -function _PyObject_GC_Track(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g+-12;e=HEAP[b+8]!=-2?1:2;break;case 1:throw _Py_FatalError(__str481960),"Reached an unreachable!";case 2:HEAP[b+8]=-3;HEAP[b]=HEAP[__PyGC_generation0];HEAP[b+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[b+4]]=b;HEAP[HEAP[__PyGC_generation0]+4]=b;return;default:assert(0,"bad label: "+e)}}function __PyObject_GC_Track(g){_PyObject_GC_Track(g)} -function _PyObject_GC_UnTrack(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+-12+8]!=-2?1:2;break;case 1:e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=2;break;case 2:return;default:assert(0,"bad label: "+e)}}function __PyObject_GC_UnTrack(g){_PyObject_GC_UnTrack(g)} -function __PyObject_GC_Malloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=b>2147483635?1:2;break;case 1:c=_PyErr_NoMemory();e=15;break;case 2:e=b+12>=0?3:6;break;case 3:e=b!=-12?4:5;break;case 4:a=b+12;e=7;break;case 5:a=1;e=7;break;case 6:d=0;e=8;break;case 7:d=e=_malloc(a);e=e==0?8:9;break;case 8:c=_PyErr_NoMemory();e=15;break;case 9:HEAP[d+8]=-2;HEAP[_generations+16]+=1;e=HEAP[_generations+16]>HEAP[_generations+12]?10:14;break;case 10:e=(HEAP[_enabled_b]?0:1)!=0&HEAP[_generations+12]!= -0?11:14;break;case 11:e=HEAP[_collecting_b]==0?12:14;break;case 12:e=_PyErr_Occurred()==0?13:14;break;case 13:HEAP[_collecting_b]=1;_collect_generations();HEAP[_collecting_b]=0;e=14;break;case 14:c=d+12;e=15;break;case 15:return g=c;default:assert(0,"bad label: "+e)}}function __PyObject_GC_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=__PyObject_GC_Malloc(HEAP[b+16]);e=a!=0?1:2;break;case 1:HEAP[a+4]=b;HEAP[a]=1;e=2;break;case 2:return g=a;default:assert(0,"bad label: "+e)}} -function __PyObject_GC_NewVar(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;d=__PyObject_GC_Malloc(HEAP[a+16]+3+c*HEAP[a+20]&-4);b=d!=0?1:2;break;case 1:HEAP[d+8]=c;HEAP[d+4]=a;HEAP[d]=1;b=2;break;case 2:return b=d;default:assert(0,"bad label: "+b)}} -function __PyObject_GC_Resize(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;b=g;a=e;f=HEAP[HEAP[b+4]+16]+3+a*HEAP[HEAP[b+4]+20]&-4;h=b+-12;b=f>2147483635?1:2;break;case 1:d=_PyErr_NoMemory();b=10;break;case 2:b=f+12>=0?3:6;break;case 3:b=f!=-12?4:5;break;case 4:c=f+12;b=7;break;case 5:c=1;b=7;break;case 6:h=0;b=8;break;case 7:h=b=_realloc(h,c);b=b==0?8:9;break;case 8:d=_PyErr_NoMemory();b=10;break;case 9:b=h+12;HEAP[b+8]=a;d=b;b=10;break;case 10:return a=d;default:assert(0,"bad label: "+b)}} -function _PyObject_GC_Del(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;b=e+-12;e=HEAP[e+-12+8]!=-2?1:2;break;case 1:_gc_list_remove(b);e=2;break;case 2:e=HEAP[_generations+16]>0?3:4;break;case 3:HEAP[_generations+16]-=1;e=4;break;case 4:_free(b);return;default:assert(0,"bad label: "+e)}}function __PyObject_GC_Del(g){_PyObject_GC_Del(g)} -function _gen_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=HEAP[c+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+8],f);a=j!=0?2:3;break;case 2:h=j;a=7;break;case 3:a=HEAP[c+16]!=0?4:6;break;case 4:k=FUNCTION_TABLE[d](HEAP[c+16],f);a=k!=0?5:6;break;case 5:h=k;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _gen_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;a=b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+20]!=0?1:2;break;case 1:_PyObject_ClearWeakRefs(a);e=2;break;case 2:c=a+-12;e=HEAP[c+8]!=-2?3:4;break;case 3:throw _Py_FatalError(__str1967),"Reached an unreachable!";case 4:HEAP[c+8]=-3;HEAP[c]=HEAP[__PyGC_generation0];HEAP[c+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[c+4]]=c;HEAP[HEAP[__PyGC_generation0]+4]=c;e=HEAP[b+8]!=0? -5:7;break;case 5:e=HEAP[HEAP[b+8]+36]!=0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[b+4]+188]](a);e=HEAP[a]>0?14:7;break;case 7:e=a+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+8]!=0?8:10;break;case 8:d=HEAP[b+8];HEAP[b+8]=0;HEAP[d]-=1;e=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=10;break;case 10:e=HEAP[b+16]!=0?11:13;break;case 11:f=HEAP[b+16];HEAP[b+16]=0;HEAP[f]-=1;e=HEAP[f]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f); -e=13;break;case 13:_PyObject_GC_Del(b);e=14;break;case 14:return;default:assert(0,"bad label: "+e)}} -function _gen_send_ex(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;l=HEAP[__PyThreadState_Current];m=HEAP[d+8];a=HEAP[d+12]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str11968);k=0;a=33;break;case 2:a=m==0?4:3;break;case 3:a=HEAP[m+36]==0?4:8;break;case 4:a=f!=0?5:7;break;case 5:a=h==0?6:7;break;case 6:_PyErr_SetNone(HEAP[_PyExc_StopIteration]);a=7;break;case 7:k=0;a=33;break;case 8:var p=f!=0;a=HEAP[m+60]==-1?9:11;break;case 9:a=p&f!=__Py_NoneStruct? -10:15;break;case 10:_PyErr_SetString(HEAP[_PyExc_TypeError],__str21969);k=0;a=33;break;case 11:a=p?12:13;break;case 12:j=f;a=14;break;case 13:j=__Py_NoneStruct;a=14;break;case 14:n=j;HEAP[n]+=1;a=HEAP[m+36];HEAP[a]=n;HEAP[m+36]=a+4;a=15;break;case 15:a=HEAP[l+8]!=0?16:17;break;case 16:HEAP[HEAP[l+8]]+=1;a=17;break;case 17:HEAP[m+12]=HEAP[l+8];HEAP[d+12]=1;n=_PyEval_EvalFrameEx(m,h);HEAP[d+12]=0;a=HEAP[m+12]!=0?18:20;break;case 18:o=HEAP[m+12];HEAP[m+12]=0;HEAP[o]-=1;a=HEAP[o]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[o+ -4]+24]](o);a=20;break;case 20:var q=n;q==__Py_NoneStruct?(c=20,a=21):(c=20,a=27);break;case 21:a=HEAP[m+36]==0?22:26;break;case 22:HEAP[n]-=1;a=HEAP[n]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=24;break;case 24:n=0;a=f!=0?25:29;break;case 25:_PyErr_SetNone(HEAP[_PyExc_StopIteration]);a=26;break;case 26:var r=n,c=26;a=27;break;case 27:a=(c==26?r:q)==0?29:28;break;case 28:a=HEAP[m+36]==0?29:32;break;case 29:HEAP[m]-=1;a=HEAP[m]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);a=31;break;case 31:HEAP[d+8]=0;a=32;break;case 32:k=n;a=33;break;case 33:return g=k;default:assert(0,"bad label: "+a)}}function _gen_send(g,e){return _gen_send_ex(g,e,0)} -function _gen_close(g){var e;for(e=-1;;)switch(e){case -1:var b,a;e=g;_PyErr_SetNone(HEAP[_PyExc_GeneratorExit]);a=_gen_send_ex(e,__Py_NoneStruct,1);e=a!=0?1:4;break;case 1:HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str31971);b=0;e=8;break;case 4:e=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?6:5;break;case 5:e=_PyErr_ExceptionMatches(HEAP[_PyExc_GeneratorExit])!=0?6:7;break;case 6:_PyErr_Clear(); -HEAP[__Py_NoneStruct]+=1;b=__Py_NoneStruct;e=8;break;case 7:b=0;e=8;break;case 8:return g=b;default:assert(0,"bad label: "+e)}} -function _gen_del(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f=e+4,h=e+8,j;j=a=g;b=HEAP[j+8]==0?8:1;break;case 1:b=HEAP[HEAP[j+8]+36]==0?8:2;break;case 2:HEAP[a]=1;_PyErr_Fetch(d,f,h);c=_gen_close(j,0);b=c==0?3:4;break;case 3:_PyErr_WriteUnraisable(a);b=6;break;case 4:HEAP[c]-=1;b=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=6;break;case 6:_PyErr_Restore(HEAP[d],HEAP[f],HEAP[h]);HEAP[a]-=1;b=HEAP[a]==0?8:7;break;case 7:b=HEAP[a]; -HEAP[a]=1;HEAP[a]=b;b=8;break;case 8:STACKTOP=e;return;default:assert(0,"bad label: "+b)}} -function _gen_throw(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k=b+8;c=g;a=e;HEAP[j]=0;HEAP[k]=0;a=_PyArg_UnpackTuple(a,__str41972,1,3,allocate([h,0,0,0,k,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=37;break;case 2:a=HEAP[j]==__Py_NoneStruct?3:4;break;case 3:HEAP[j]=0;a=7;break;case 4:a=HEAP[j]!=0?5:7;break;case 5:a=HEAP[HEAP[j]+4]!= -_PyTraceBack_Type?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str51973);f=0;a=37;break;case 7:HEAP[HEAP[h]]+=1;a=HEAP[k]!=0?8:9;break;case 8:HEAP[HEAP[k]]+=1;a=9;break;case 9:a=HEAP[j]!=0?10:11;break;case 10:HEAP[HEAP[j]]+=1;a=11;break;case 11:a=HEAP[HEAP[h]+4]==_PyClass_Type?14:12;break;case 12:a=HEAP[HEAP[HEAP[h]+4]+84]>=0?15:13;break;case 13:a=(HEAP[HEAP[h]+84]&1073741824)!=0?14:15;break;case 14:_PyErr_NormalizeException(h,k,j);a=27;break;case 15:a=HEAP[HEAP[h]+4]==_PyInstance_Type? -17:16;break;case 16:a=(HEAP[HEAP[HEAP[h]+4]+84]&1073741824)!=0?17:26;break;case 17:a=HEAP[k]==0|HEAP[k]==__Py_NoneStruct?19:18;break;case 18:_PyErr_SetString(HEAP[_PyExc_TypeError],__str61974);a=28;break;case 19:a=HEAP[k]!=0?20:22;break;case 20:a=HEAP[k];HEAP[a]-=1;a=HEAP[a]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);a=22;break;case 22:HEAP[k]=HEAP[h];var l=HEAP[h];a=HEAP[HEAP[h]+4]==_PyInstance_Type?23:24;break;case 23:d=HEAP[l+8];a=25;break;case 24:d=HEAP[l+4];a=25; -break;case 25:HEAP[h]=d;HEAP[HEAP[h]]+=1;a=27;break;case 26:_PyErr_Format(HEAP[_PyExc_TypeError],__str71975,allocate([HEAP[HEAP[HEAP[h]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=28;break;case 27:_PyErr_Restore(HEAP[h],HEAP[k],HEAP[j]);f=_gen_send_ex(c,__Py_NoneStruct,1);a=37;break;case 28:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=30;break;case 30:a=HEAP[k]!=0?31:33;break;case 31:a=HEAP[k];HEAP[a]-=1;a=HEAP[a]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+ -4]+24]](HEAP[k]);a=33;break;case 33:a=HEAP[j]!=0?34:36;break;case 34:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=36;break;case 36:f=0;a=37;break;case 37:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _gen_iternext(g){return _gen_send_ex(g,0,0)} -function _gen_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=_PyString_AsString(HEAP[HEAP[b+16]+52]);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:a=_PyString_FromFormat(__str81976,allocate([c,0,0,0,b,0,0,0],["i8*",0,0,0,"%struct.PyGenObject*",0,0,0],ALLOC_STACK));e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _gen_get_name(g){g=HEAP[HEAP[g+16]+52];HEAP[g]+=1;return g} -function _PyGen_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=__PyObject_GC_New(_PyGen_Type);e=c==0?1:4;break;case 1:HEAP[b]-=1;e=HEAP[b]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);e=3;break;case 3:a=0;e=7;break;case 4:HEAP[c+8]=b;HEAP[HEAP[b+16]]+=1;HEAP[c+16]=HEAP[b+16];HEAP[c+12]=0;HEAP[c+20]=0;d=c+-12;e=HEAP[d+8]!=-2?5:6;break;case 5:throw _Py_FatalError(__str1967),"Reached an unreachable!";case 6:HEAP[d+8]=-3;HEAP[d]=HEAP[__PyGC_generation0];HEAP[d+4]=HEAP[HEAP[__PyGC_generation0]+ -4];HEAP[HEAP[d+4]]=d;HEAP[HEAP[__PyGC_generation0]+4]=d;a=c;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _PyGen_NeedsFinalizing(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;c=HEAP[g+8];e=c==0?3:1;break;case 1:e=HEAP[c+36]==0?3:2;break;case 2:e=HEAP[c+68]<=0?3:4;break;case 3:b=0;e=9;break;case 4:a=HEAP[c+68];e=7;break;case 5:e=HEAP[c+72+a*12]!=120?6:7;break;case 6:b=1;e=9;break;case 7:a=e=a-1;e=e>=0?5:8;break;case 8:b=0;e=9;break;case 9:return g=b;default:assert(0,"bad label: "+e)}} -function _PyArg_Parse(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);HEAP[b]=arguments[_PyArg_Parse.length];var a=_vgetargs1(g,e,b,1);STACKTOP=b;return a}function __PyArg_Parse_SizeT(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);HEAP[b]=arguments[__PyArg_Parse_SizeT.length];var a=_vgetargs1(g,e,b,3);STACKTOP=b;return a}function _PyArg_ParseTuple(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);HEAP[b]=arguments[_PyArg_ParseTuple.length];var a=_vgetargs1(g,e,b,0);STACKTOP=b;return a} -function __PyArg_ParseTuple_SizeT(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);HEAP[b]=arguments[__PyArg_ParseTuple_SizeT.length];var a=_vgetargs1(g,e,b,2);STACKTOP=b;return a}function _PyArg_VaParse(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c=a+4;HEAP[c]=b;_llvm_va_copy(a,c);g=_vgetargs1(g,e,a,0);STACKTOP=a;return g}function __PyArg_VaParse_SizeT(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c=a+4;HEAP[c]=b;_llvm_va_copy(a,c);g=_vgetargs1(g,e,a,2);STACKTOP=a;return g} -function _cleanup_ptr(g){var e;for(e=-1;;)switch(e){case -1:var b;b=_PyCapsule_GetPointer(g,__str1987);e=b!=0?1:2;break;case 1:_free(b);e=2;break;case 2:return;default:assert(0,"bad label: "+e)}}function _cleanup_buffer(g){var e;for(e=-1;;)switch(e){case -1:var b;b=_PyCapsule_GetPointer(g,__str11988);e=b!=0?1:2;break;case 1:_PyBuffer_Release(b);e=2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _addcleanup(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;HEAP[f]==0?(c=-1,a=1):(c=-1,a=4);break;case 1:a=_PyList_New(0);HEAP[f]=a;a=HEAP[f]==0?2:3;break;case 2:FUNCTION_TABLE[h](d);j=-1;a=18;break;case 3:var m=h,c=3;a=4;break;case 4:a=(c==3?m:b)==84?5:6;break;case 5:l=__str1987;a=9;break;case 6:a=h==86?7:8;break;case 7:l=__str11988;a=9;break;case 8:j=-1;a=18;break;case 9:k=a=_PyCapsule_New(d,l,h);a=a==0?10:11;break;case 10:FUNCTION_TABLE[h](d);j=-1;a=18;break; -case 11:a=_PyList_Append(HEAP[f],k)!=0;HEAP[k]-=1;var n=HEAP[k]==0;a=a?12:15;break;case 12:a=n?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=14;break;case 14:j=-1;a=18;break;case 15:a=n?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=17;break;case 17:j=0;a=18;break;case 18:return g=j;default:assert(0,"bad label: "+a)}} -function _cleanreturn(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=c!=0?1:7;break;case 1:b=a!=0?2:4;break;case 2:d=HEAP[c+8];f=0;b=f29?5:20;break;case 5:throw _Py_FatalError(__str21989),"Reached an unreachable!"; -case 6:d=E==0?7:8;break;case 7:throw _Py_FatalError(__str31990),"Reached an unreachable!";case 8:E-=1;d=20;break;case 9:D=1;f=9;d=21;break;case 10:z=HEAP[j];D=1;f=10;d=21;break;case 11:C=HEAP[j];D=1;f=11;d=21;break;case 12:d=E==0?13:20;break;case 13:d=V==79?14:15;break;case 14:G+=1;d=20;break;case 15:d=___ctype_b_loc();var Q=V;d=(HEAP[HEAP[d]+2*(V&255)]&1024)!=0?16:18;break;case 16:d=Q!=101?17:20;break;case 17:G+=1;d=20;break;case 18:d=Q==124?19:20;break;case 19:A=G;d=20;break;case 20:var Z=D,f=20; -d=21;break;case 21:d=(f==20?Z:f==9?1:f==10?1:1)==0?1:22;break;case 22:d=E!=0?23:24;break;case 23:throw _Py_FatalError(__str41991),"Reached an unreachable!";case 24:d=A<0?25:26;break;case 25:A=G;d=26;break;case 26:HEAP[j]=R;d=F!=0?27:51;break;case 27:d=G==0?28:37;break;case 28:d=h==0?29:30;break;case 29:w=1;d=94;break;case 30:d=z==0?31:32;break;case 31:v=__str51992;d=33;break;case 32:v=__str61993;d=33;break;case 33:d=z!=0?34:35;break;case 34:t=z;d=36;break;case 35:t=__str71994;d=36;break;case 36:_PyOS_snprintf(x, -256,__str81995,allocate([t,0,0,0,v,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));_PyErr_SetString(HEAP[_PyExc_TypeError],x);w=0;d=94;break;case 37:d=A!=1?50:38;break;case 38:d=G!=1?50:39;break;case 39:d=h==0?40:47;break;case 40:d=z==0?41:42;break;case 41:s=__str51992;d=43;break;case 42:s=__str61993;d=43;break;case 43:d=z!=0?44:45;break;case 44:u=z;d=46;break;case 45:u=__str71994;d=46;break;case 46:_PyOS_snprintf(x,256,__str91996,allocate([u,0,0,0,s,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK)); -_PyErr_SetString(HEAP[_PyExc_TypeError],x);w=0;d=94;break;case 47:I=_convertitem(h,j,k,l,y,x,256,J);d=I==0?48:49;break;case 48:w=_cleanreturn(1,HEAP[J]);d=94;break;case 49:_seterror(HEAP[y],I,y+4,z,C);w=_cleanreturn(0,HEAP[J]);d=94;break;case 50:_PyErr_SetString(HEAP[_PyExc_SystemError],__str101997);w=0;d=94;break;case 51:d=(HEAP[HEAP[h+4]+84]&67108864)==0?52:53;break;case 52:_PyErr_SetString(HEAP[_PyExc_SystemError],__str111998);w=0;d=94;break;case 53:L=HEAP[h+8];d=L31?11:9;break;case 9:f=p-u<=219?6:11;break;case 10:_PyOS_snprintf(r,q,__str212008,allocate(1,"i32",ALLOC_STACK));f=_strlen(p);p+=f;f=11;break;case 11:_PyOS_snprintf(p,0-(0-n)+512+(0-p),__str222009,allocate([j,0,0,0],["i8*",0,0,0],ALLOC_STACK));m=n;f=12;break;case 12:_PyErr_SetString(HEAP[_PyExc_TypeError], -m);f=13;break;case 13:STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function _converttuple(g,e,b,a,c,d,f,h){var j=STACKTOP;STACKTOP+=4;_memset(j,0,4);var k,l=null;for(k=-1;;)switch(k){case -1:var m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A=j,G,E,D,R;m=g;n=e;o=b;p=a;q=c;r=d;u=f;s=0;t=h;C=z=0;HEAP[A]=HEAP[n];k=1;break;case 1:k=HEAP[A];var M=HEAP[k];E=M;HEAP[A]=k+1;k=M==40?2:5;break;case 2:k=z==0?3:4;break;case 3:C+=1;k=4;break;case 4:z+=1;k=1;break;case 5:k=E==41?6:8;break;case 6:k=z==0?12:7;break;case 7:z-=1;k=1;break;case 8:k=E==58|E==59|E==0?12:9;break;case 9:k=z==0?10:1;break; -case 10:k=___ctype_b_loc();k=(HEAP[HEAP[k]+2*(E&255)]&1024)!=0?11:1;break;case 11:C+=1;k=1;break;case 12:k=_PySequence_Check(m)==0?14:13;break;case 13:k=(HEAP[HEAP[m+4]+84]&134217728)!=0?14:21;break;case 14:HEAP[q]=0;k=m!=__Py_NoneStruct?15:16;break;case 15:y=HEAP[HEAP[m+4]+12];k=17;break;case 16:y=__str232010;k=17;break;case 17:k=s!=0?18:19;break;case 18:x=__str242011;k=20;break;case 19:x=__str252012;k=20;break;case 20:_PyOS_snprintf(r,u,x,allocate([C,0,0,0,y,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK)); -w=r;k=38;break;case 21:G=_PySequence_Size(m);k=G!=C?22:26;break;case 22:HEAP[q]=0;k=s!=0?23:24;break;case 23:v=__str262013;k=25;break;case 24:v=__str272014;k=25;break;case 25:_PyOS_snprintf(r,u,v,allocate([C,0,0,0,G,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));w=r;k=38;break;case 26:HEAP[A]=HEAP[n];G=0;k=36;break;case 27:R=_PySequence_GetItem(m,G);k=R==0?28:29;break;case 28:_PyErr_Clear();HEAP[q]=G+1;HEAP[q+4]=0;_strncpy(r,__str282015,u);w=r;k=38;break;case 29:var L=_convertitem(R,A,o,p,q+4,r,u, -t);D=L;R!=0?(l=29,k=30):(l=29,k=33);break;case 30:HEAP[R]-=1;k=HEAP[R]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[R+4]+24]](R);k=32;break;case 32:var I=D,l=32;k=33;break;case 33:var J=G+1;k=(l==32?I:L)!=0?34:35;break;case 34:HEAP[q]=J;w=D;k=38;break;case 35:G=J;k=36;break;case 36:k=G255?10:11;break;case 10:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str332020);ka=_converterr(__str312018,l,p,q);j=355;break;case 11:HEAP[Fa]=Za&255;j=354;break;case 12:Ga=HEAP[n];HEAP[n]=Ga+4;Ga=HEAP[Ga];j=_float_argument_error(l);var U=l;j=j!=0?13:14;break;case 13:ka=_converterr(__str342021,U,p,q);j=355;break; -case 14:Ka=_PyInt_AsUnsignedLongMask(U);j=Ka!=-1?17:15;break;case 15:j=_PyErr_Occurred()==0?17:16;break;case 16:ka=_converterr(__str342021,l,p,q);j=355;break;case 17:HEAP[Ga]=Ka&255;j=354;break;case 18:Ea=HEAP[n];HEAP[n]=Ea+4;Ea=HEAP[Ea];j=_float_argument_error(l);var fb=l;j=j!=0?19:20;break;case 19:ka=_converterr(__str352022,fb,p,q);j=355;break;case 20:var Cb=Ra=_PyInt_AsLong(fb);Cb!=-1?(k=20,j=24):(k=20,j=21);break;case 21:j=_PyErr_Occurred()==0?23:22;break;case 22:ka=_converterr(__str352022,l, -p,q);j=355;break;case 23:var xb=Ra,k=23;j=24;break;case 24:j=(k==23?xb:Cb)<-32768?25:26;break;case 25:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str362023);ka=_converterr(__str352022,l,p,q);j=355;break;case 26:j=Ra>32767?27:28;break;case 27:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str372024);ka=_converterr(__str352022,l,p,q);j=355;break;case 28:HEAP[Ea]=Ra&65535;j=354;break;case 29:Ta=HEAP[n];HEAP[n]=Ta+4;Ta=HEAP[Ta];j=_float_argument_error(l);var db=l;j=j!=0?30:31;break;case 30:ka=_converterr(__str382025, -db,p,q);j=355;break;case 31:$a=_PyInt_AsUnsignedLongMask(db);j=$a!=-1?34:32;break;case 32:j=_PyErr_Occurred()==0?34:33;break;case 33:ka=_converterr(__str382025,l,p,q);j=355;break;case 34:HEAP[Ta]=$a&65535;j=354;break;case 35:Xa=HEAP[n];HEAP[n]=Xa+4;Xa=HEAP[Xa];j=_float_argument_error(l);var gb=l;j=j!=0?36:37;break;case 36:ka=_converterr(__str392026,gb,p,q);j=355;break;case 37:Ja=_PyInt_AsLong(gb);j=Ja!=-1?40:38;break;case 38:j=_PyErr_Occurred()==0?40:39;break;case 39:ka=_converterr(__str392026,l, -p,q);j=355;break;case 40:HEAP[Xa]=Ja;j=354;break;case 41:Ba=HEAP[n];HEAP[n]=Ba+4;Ba=HEAP[Ba];j=_float_argument_error(l);var rb=l;j=j!=0?42:43;break;case 42:ka=_converterr(__str402027,rb,p,q);j=355;break;case 43:ja=_PyInt_AsUnsignedLongMask(rb);j=ja!=-1?46:44;break;case 44:j=_PyErr_Occurred()==0?46:45;break;case 45:ka=_converterr(__str402027,l,p,q);j=355;break;case 46:HEAP[Ba]=ja;j=354;break;case 47:ia=HEAP[n];HEAP[n]=ia+4;ia=HEAP[ia];j=_float_argument_error(l);var sb=l;j=j!=0?48:49;break;case 48:ka= -_converterr(__str412028,sb,p,q);j=355;break;case 49:ua=_PyInt_AsLong(sb);j=ua!=-1?52:50;break;case 50:j=_PyErr_Occurred()==0?52:51;break;case 51:ka=_converterr(__str412028,l,p,q);j=355;break;case 52:HEAP[ia]=ua;j=354;break;case 53:Wa=HEAP[n];HEAP[n]=Wa+4;Wa=HEAP[Wa];var Kb=l;j=(HEAP[HEAP[l+4]+84]&8388608)!=0?54:55;break;case 54:bb=_PyInt_AsUnsignedLongMask(Kb);j=58;break;case 55:var Gb=l;j=(HEAP[HEAP[Kb+4]+84]&16777216)!=0?56:57;break;case 56:bb=_PyLong_AsUnsignedLongMask(Gb);j=58;break;case 57:ka= -_converterr(__str422029,Gb,p,q);j=355;break;case 58:HEAP[Wa]=bb;j=354;break;case 59:Ia=HEAP[n];HEAP[n]=Ia+4;Ia=HEAP[Ia];j=_float_argument_warning(l);var Nb=l;j=j!=0?60:61;break;case 60:ka=_converterr(__str432030,Nb,p,q);j=355;break;case 61:qa=_PyLong_AsLongLong(Nb);j=qa!=-1?64:62;break;case 62:j=_PyErr_Occurred()==0?64:63;break;case 63:ka=_converterr(__str432030,l,p,q);j=355;break;case 64:HEAP[Ia]=qa;j=354;break;case 65:Va=HEAP[n];HEAP[n]=Va+4;Va=HEAP[Va];var Ab=l;j=(HEAP[HEAP[l+4]+84]&8388608)!= -0?66:67;break;case 66:P=_PyInt_AsUnsignedLongMask(Ab);j=70;break;case 67:var Sb=l;j=(HEAP[HEAP[Ab+4]+84]&16777216)!=0?68:69;break;case 68:P=_PyLong_AsUnsignedLongLongMask(Sb);j=70;break;case 69:ka=_converterr(__str442031,Sb,p,q);j=355;break;case 70:HEAP[Va]=P;j=354;break;case 71:ta=HEAP[n];HEAP[n]=ta+4;ta=HEAP[ta];hb=_PyFloat_AsDouble(l);j=_PyErr_Occurred()!=0?72:73;break;case 72:ka=_converterr(__str452032,l,p,q);j=355;break;case 73:HEAP[ta]=hb;j=354;break;case 74:Ha=HEAP[n];HEAP[n]=Ha+4;Ha=HEAP[Ha]; -Qa=_PyFloat_AsDouble(l);j=_PyErr_Occurred()!=0?75:76;break;case 75:ka=_converterr(__str462033,l,p,q);j=355;break;case 76:HEAP[Ha]=Qa;j=354;break;case 77:Ya=HEAP[n];HEAP[n]=Ya+4;Ya=HEAP[Ya];_PyComplex_AsCComplex(mb,l);j=_PyErr_Occurred()!=0?78:79;break;case 78:ka=_converterr(__str472034,l,p,q);j=355;break;case 79:HEAP[Ya]=HEAP[mb];HEAP[Ya+8]=HEAP[mb+8];j=354;break;case 80:wa=HEAP[n];HEAP[n]=wa+4;wa=HEAP[wa];j=(HEAP[HEAP[l+4]+84]&134217728)==0?83:81;break;case 81:j=_PyString_Size(l)!=1?83:82;break; -case 82:HEAP[wa]=HEAP[l+20];j=354;break;case 83:ka=_converterr(__str482035,l,p,q);j=355;break;case 84:j=HEAP[ma]==42?85:96;break;case 85:Pa=HEAP[n];HEAP[n]=Pa+4;Pa=HEAP[Pa];var pb=l;j=(HEAP[HEAP[l+4]+84]&134217728)!=0?86:87;break;case 86:_PyBuffer_FillInfo(Pa,l,l+20,HEAP[pb+8],1,0);j=93;break;case 87:var Mb=l;j=(HEAP[HEAP[pb+4]+84]&268435456)!=0?88:91;break;case 88:La=__PyUnicodeUCS2_AsDefaultEncodedString(Mb,0);j=La==0?89:90;break;case 89:ka=_converterr(__str492036,l,p,q);j=355;break;case 90:_PyBuffer_FillInfo(Pa, -l,La+20,HEAP[La+8],1,0);j=93;break;case 91:j=_getbuffer(Mb,Pa,S)<0?92:93;break;case 92:ka=_converterr(HEAP[S],l,p,q);j=355;break;case 93:j=_addcleanup(Pa,r,86)!=0?94:95;break;case 94:ka=_converterr(__str502037,l,p,q);j=355;break;case 95:ma+=1;j=354;break;case 96:var tb=HEAP[n];j=HEAP[ma]==35?97:116;break;case 97:Na=tb;HEAP[n]=Na+4;Na=HEAP[Na];Ua=Da=0;var Hb=HEAP[n];j=(o&2)!=0?98:99;break;case 98:Ua=Hb;HEAP[n]=Ua+4;Ua=HEAP[Ua];j=100;break;case 99:Da=Hb;HEAP[n]=Da+4;Da=HEAP[Da];j=100;break;case 100:var da= -l;j=(HEAP[HEAP[l+4]+84]&134217728)!=0?101:104;break;case 101:HEAP[Na]=da+20;var Jb=HEAP[l+8];j=(o&2)!=0?102:103;break;case 102:HEAP[Ua]=Jb;j=115;break;case 103:HEAP[Da]=Jb;j=115;break;case 104:var jb=l;j=(HEAP[HEAP[da+4]+84]&268435456)!=0?105:110;break;case 105:La=__PyUnicodeUCS2_AsDefaultEncodedString(jb,0);j=La==0?106:107;break;case 106:ka=_converterr(__str492036,l,p,q);j=355;break;case 107:HEAP[Na]=La+20;var bc=HEAP[La+8];j=(o&2)!=0?108:109;break;case 108:HEAP[Ua]=bc;j=115;break;case 109:HEAP[Da]= -bc;j=115;break;case 110:pa=_convertbuffer(jb,Na,Ca);j=pa<0?111:112;break;case 111:ka=_converterr(HEAP[Ca],l,p,q);j=355;break;case 112:j=(o&2)!=0?113:114;break;case 113:HEAP[Ua]=pa;j=115;break;case 114:HEAP[Da]=pa;j=115;break;case 115:ma+=1;j=354;break;case 116:ya=tb;HEAP[n]=ya+4;ya=HEAP[ya];var Wb=l;j=(HEAP[HEAP[l+4]+84]&134217728)!=0?117:118;break;case 117:HEAP[ya]=Wb+20;j=123;break;case 118:var lb=l;j=(HEAP[HEAP[Wb+4]+84]&268435456)!=0?119:122;break;case 119:La=__PyUnicodeUCS2_AsDefaultEncodedString(lb, -0);j=La==0?120:121;break;case 120:ka=_converterr(__str492036,l,p,q);j=355;break;case 121:HEAP[ya]=La+20;j=123;break;case 122:ka=_converterr(__str512038,lb,p,q);j=355;break;case 123:j=_strlen(HEAP[ya]);z=_PyString_Size(l);j=j!=z?124:354;break;case 124:ka=_converterr(__str522039,l,p,q);j=355;break;case 125:j=HEAP[ma]==42?126:139;break;case 126:ra=HEAP[n];HEAP[n]=ra+4;ra=HEAP[ra];j=l==__Py_NoneStruct?127:128;break;case 127:_PyBuffer_FillInfo(ra,0,0,0,1,0);j=136;break;case 128:var kb=l;j=(HEAP[HEAP[l+ -4]+84]&134217728)!=0?129:130;break;case 129:_PyBuffer_FillInfo(ra,l,l+20,HEAP[kb+8],1,0);j=136;break;case 130:var Lb=l;j=(HEAP[HEAP[kb+4]+84]&268435456)!=0?131:134;break;case 131:La=__PyUnicodeUCS2_AsDefaultEncodedString(Lb,0);j=La==0?132:133;break;case 132:ka=_converterr(__str492036,l,p,q);j=355;break;case 133:_PyBuffer_FillInfo(ra,l,La+20,HEAP[La+8],1,0);j=136;break;case 134:j=_getbuffer(Lb,ra,Aa)<0?135:136;break;case 135:ka=_converterr(HEAP[Aa],l,p,q);j=355;break;case 136:j=_addcleanup(ra,r,86)!= -0?137:138;break;case 137:ka=_converterr(__str502037,l,p,q);j=355;break;case 138:ma+=1;j=354;break;case 139:var Eb=HEAP[n];j=HEAP[ma]==35?140:163;break;case 140:la=Eb;HEAP[n]=la+4;la=HEAP[la];ha=fa=0;var Yb=HEAP[n];j=(o&2)!=0?141:142;break;case 141:ha=Yb;HEAP[n]=ha+4;ha=HEAP[ha];j=143;break;case 142:fa=Yb;HEAP[n]=fa+4;fa=HEAP[fa];j=143;break;case 143:j=l==__Py_NoneStruct?144:147;break;case 144:HEAP[la]=0;j=(o&2)!=0?145:146;break;case 145:HEAP[ha]=0;j=162;break;case 146:HEAP[fa]=0;j=162;break;case 147:var yb= -l;j=(HEAP[HEAP[l+4]+84]&134217728)!=0?148:151;break;case 148:HEAP[la]=yb+20;var fc=HEAP[l+8];j=(o&2)!=0?149:150;break;case 149:HEAP[ha]=fc;j=162;break;case 150:HEAP[fa]=fc;j=162;break;case 151:var zb=l;j=(HEAP[HEAP[yb+4]+84]&268435456)!=0?152:157;break;case 152:La=__PyUnicodeUCS2_AsDefaultEncodedString(zb,0);j=La==0?153:154;break;case 153:ka=_converterr(__str492036,l,p,q);j=355;break;case 154:HEAP[la]=La+20;var jc=HEAP[La+8];j=(o&2)!=0?155:156;break;case 155:HEAP[ha]=jc;j=162;break;case 156:HEAP[fa]= -jc;j=162;break;case 157:ib=_convertbuffer(zb,la,ob);j=ib<0?158:159;break;case 158:ka=_converterr(HEAP[ob],l,p,q);j=355;break;case 159:j=(o&2)!=0?160:161;break;case 160:HEAP[ha]=ib;j=162;break;case 161:HEAP[fa]=ib;j=162;break;case 162:ma+=1;j=354;break;case 163:Y=Eb;HEAP[n]=Y+4;Y=HEAP[Y];j=l==__Py_NoneStruct?164:165;break;case 164:HEAP[Y]=0;j=172;break;case 165:var mc=l;j=(HEAP[HEAP[l+4]+84]&134217728)!=0?166:167;break;case 166:HEAP[Y]=mc+20;j=172;break;case 167:var Xb=l;j=(HEAP[HEAP[mc+4]+84]&268435456)!= -0?168:171;break;case 168:La=__PyUnicodeUCS2_AsDefaultEncodedString(Xb,0);j=La==0?169:170;break;case 169:ka=_converterr(__str492036,l,p,q);j=355;break;case 170:HEAP[Y]=La+20;j=172;break;case 171:ka=_converterr(__str532040,Xb,p,q);j=355;break;case 172:j=HEAP[ma]==35?173:184;break;case 173:B=W=0;var qc=HEAP[n];j=(o&2)!=0?174:175;break;case 174:B=qc;HEAP[n]=B+4;B=HEAP[B];j=176;break;case 175:W=qc;HEAP[n]=W+4;W=HEAP[W];j=176;break;case 176:var tc=(o&2)!=0;j=l==__Py_NoneStruct?177:180;break;case 177:j= -tc?178:179;break;case 178:HEAP[B]=0;j=183;break;case 179:HEAP[W]=0;j=183;break;case 180:var vb=_PyString_Size(l);j=tc?181:182;break;case 181:HEAP[B]=vb;j=183;break;case 182:j=_PyString_Size(l);HEAP[W]=j;j=183;break;case 183:ma+=1;j=354;break;case 184:j=HEAP[Y]!=0?185:354;break;case 185:j=_strlen(HEAP[Y]);z=_PyString_Size(l);j=j!=z?186:354;break;case 186:ka=_converterr(__str542041,l,p,q);j=355;break;case 187:ba=HEAP[n];HEAP[n]=ba+4;ba=HEAP[ba];j=ba==0?188:189;break;case 188:ba=_PyUnicodeUCS2_GetDefaultEncoding(); -j=189;break;case 189:j=HEAP[ma]==115?190:191;break;case 190:O=1;j=194;break;case 191:j=HEAP[ma]==116?192:193;break;case 192:O=0;j=194;break;case 193:ka=_converterr(__str552042,l,p,q);j=355;break;case 194:H=HEAP[n];HEAP[n]=H+4;T=j=HEAP[H],H=T;ma+=1;j=j==0?195:196;break;case 195:ka=_converterr(__str562043,l,p,q);j=355;break;case 196:j=O!=0?199:197;break;case 197:j=(HEAP[HEAP[l+4]+84]&134217728)==0?199:198;break;case 198:ca=l;HEAP[ca]+=1;j=209;break;case 199:Ma=j=_PyUnicodeUCS2_FromObject(l);j=j==0? -200:201;break;case 200:ka=_converterr(__str572044,l,p,q);j=355;break;case 201:ca=_PyUnicodeUCS2_AsEncodedString(Ma,ba,0);HEAP[Ma]-=1;j=HEAP[Ma]==0?202:203;break;case 202:FUNCTION_TABLE[HEAP[HEAP[Ma+4]+24]](Ma);j=203;break;case 203:j=ca==0?204:205;break;case 204:ka=_converterr(__str582045,l,p,q);j=355;break;case 205:j=(HEAP[HEAP[ca+4]+84]&134217728)==0?206:209;break;case 206:HEAP[ca]-=1;j=HEAP[ca]==0?207:208;break;case 207:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=208;break;case 208:ka=_converterr(__str592046, -l,p,q);j=355;break;case 209:na=HEAP[ca+8];j=HEAP[ma]==35?210:246;break;case 210:N=K=0;var eb=HEAP[n];j=(o&2)!=0?211:212;break;case 211:N=eb;HEAP[n]=N+4;N=HEAP[N];var Tb=K,k=211;j=213;break;case 212:K=eb;HEAP[n]=K+4;var oc=HEAP[K];K=oc;k=212;j=213;break;case 213:j=k==212?oc:Tb;ma+=1;j=j==0?214:218;break;case 214:j=N==0?215:218;break;case 215:HEAP[ca]-=1;j=HEAP[ca]==0?216:217;break;case 216:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=217;break;case 217:ka=_converterr(__str602047,l,p,q);j=355;break;case 218:var Fb= -na+1;j=HEAP[H]==0?219:236;break;case 219:j=Fb>=0?220:227;break;case 220:j=na+1>=0?221:225;break;case 221:j=na!=-1?222:223;break;case 222:V=na+1;j=224;break;case 223:V=1;j=224;break;case 224:Q=_malloc(V);j=226;break;case 225:Q=0;j=226;break;case 226:Z=Q;j=228;break;case 227:Z=0;j=228;break;case 228:HEAP[H]=Z;j=HEAP[H]==0?229:232;break;case 229:HEAP[ca]-=1;j=HEAP[ca]==0?230:231;break;case 230:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=231;break;case 231:ka=_converterr(__str612048,l,p,q);j=355;break; -case 232:j=_addcleanup(HEAP[H],r,84)!=0?233:243;break;case 233:HEAP[ca]-=1;j=HEAP[ca]==0?234:235;break;case 234:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=235;break;case 235:ka=_converterr(__str502037,l,p,q);j=355;break;case 236:j=(o&2)!=0?237:238;break;case 237:F=HEAP[N];j=239;break;case 238:F=HEAP[K];j=239;break;case 239:j=Fb>F?240:243;break;case 240:HEAP[ca]-=1;j=HEAP[ca]==0?241:242;break;case 241:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=242;break;case 242:ka=_converterr(__str622049,l,p,q);j=355; -break;case 243:_llvm_memcpy_p0i8_p0i8_i32(HEAP[H],ca+20,na+1,1,0);j=(o&2)!=0?244:245;break;case 244:HEAP[N]=na;j=268;break;case 245:HEAP[K]=na;j=268;break;case 246:j=_strlen(ca+20)!=na?247:250;break;case 247:HEAP[ca]-=1;j=HEAP[ca]==0?248:249;break;case 248:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=249;break;case 249:ka=_converterr(__str632050,l,p,q);j=355;break;case 250:j=na+1>=0?251:258;break;case 251:j=na+1>=0?252:256;break;case 252:j=na!=-1?253:254;break;case 253:L=na+1;j=255;break;case 254:L= -1;j=255;break;case 255:I=_malloc(L);j=257;break;case 256:I=0;j=257;break;case 257:J=I;j=259;break;case 258:J=0;j=259;break;case 259:HEAP[H]=J;j=HEAP[H]==0?260:263;break;case 260:HEAP[ca]-=1;j=HEAP[ca]==0?261:262;break;case 261:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=262;break;case 262:ka=_converterr(__str612048,l,p,q);j=355;break;case 263:j=_addcleanup(HEAP[H],r,84)!=0?264:267;break;case 264:HEAP[ca]-=1;j=HEAP[ca]==0?265:266;break;case 265:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=266;break;case 266:ka= -_converterr(__str502037,l,p,q);j=355;break;case 267:_llvm_memcpy_p0i8_p0i8_i32(HEAP[H],ca+20,na+1,1,0);j=268;break;case 268:HEAP[ca]-=1;j=HEAP[ca]==0?269:354;break;case 269:FUNCTION_TABLE[HEAP[HEAP[ca+4]+24]](ca);j=354;break;case 270:var Pb=HEAP[n];j=HEAP[ma]==35?271:280;break;case 271:M=Pb;HEAP[n]=M+4;M=HEAP[M];R=D=0;var Vb=HEAP[n];j=(o&2)!=0?272:273;break;case 272:R=Vb;HEAP[n]=R+4;R=HEAP[R];j=274;break;case 273:D=Vb;HEAP[n]=D+4;D=HEAP[D];j=274;break;case 274:var Dc=l;j=(HEAP[HEAP[l+4]+84]&268435456)!= -0?275:279;break;case 275:HEAP[M]=HEAP[Dc+12];var yc=HEAP[l+8];j=(o&2)!=0?276:277;break;case 276:HEAP[R]=yc;j=278;break;case 277:HEAP[D]=yc;j=278;break;case 278:ma+=1;j=354;break;case 279:ka=_converterr(__str642051,Dc,p,q);j=355;break;case 280:E=Pb;HEAP[n]=E+4;E=HEAP[E];var Kc=l;j=(HEAP[HEAP[l+4]+84]&268435456)!=0?281:282;break;case 281:HEAP[E]=HEAP[Kc+12];j=354;break;case 282:ka=_converterr(__str652052,Kc,p,q);j=355;break;case 283:G=HEAP[n];HEAP[n]=G+4;G=HEAP[G];j=(HEAP[HEAP[l+4]+84]&134217728)!= -0?284:285;break;case 284:HEAP[G]=l;j=354;break;case 285:ka=_converterr(__str512038,l,p,q);j=355;break;case 286:A=HEAP[n];HEAP[n]=A+4;A=HEAP[A];j=(HEAP[HEAP[l+4]+84]&268435456)!=0?287:288;break;case 287:HEAP[A]=l;j=354;break;case 288:ka=_converterr(__str652052,l,p,q);j=355;break;case 289:j=HEAP[ma]==33?290:293;break;case 290:C=HEAP[n];HEAP[n]=C+4;C=HEAP[C];y=HEAP[n];HEAP[n]=y+4;y=HEAP[y];ma+=1;j=_PyType_IsSubtype(HEAP[l+4],C)!=0?291:292;break;case 291:HEAP[y]=l;j=354;break;case 292:ka=_converterr(HEAP[C+ -12],l,p,q);j=355;break;case 293:j=HEAP[ma]==63?294:297;break;case 294:y=HEAP[n];HEAP[n]=y+4;j=HEAP[y];y=HEAP[n];HEAP[n]=y+4;y=HEAP[y];ma+=1;j=FUNCTION_TABLE[j](l)!=0?295:296;break;case 295:HEAP[y]=l;j=354;break;case 296:ka=_converterr(__str662053,l,p,q);j=355;break;case 297:var sa=HEAP[n];j=HEAP[ma]==38?298:300;break;case 298:j=sa;HEAP[n]=j+4;j=HEAP[j];z=HEAP[n];HEAP[n]=z+4;z=HEAP[z];ma+=1;j=FUNCTION_TABLE[j](l,z)==0?299:354;break;case 299:ka=_converterr(__str662053,l,p,q);j=355;break;case 300:y= -sa;HEAP[n]=y+4;y=HEAP[y];HEAP[y]=l;j=354;break;case 301:x=HEAP[n];HEAP[n]=x+4;x=HEAP[x];ga=HEAP[HEAP[l+4]+80];j=ga!=0?302:315;break;case 302:var Bb=ga;HEAP[Bb+20]!=0?(k=302,j=303):(k=302,j=306);break;case 303:j=HEAP[ma]!=42?304:305;break;case 304:ka=_converterr(__str672054,l,p,q);j=355;break;case 305:var cb=ga,k=305;j=306;break;case 306:j=(k==305?cb:Bb)!=0?307:315;break;case 307:var Nc=ga;HEAP[Nc+16]!=0?(k=307,j=308):(k=307,j=316);break;case 308:j=HEAP[ma]==42?309:315;break;case 309:ma+=1;j=FUNCTION_TABLE[HEAP[ga+ -16]](l,x,1)<0?310:311;break;case 310:_PyErr_Clear();ka=_converterr(__str682055,l,p,q);j=355;break;case 311:j=_addcleanup(x,r,86)!=0?312:313;break;case 312:ka=_converterr(__str502037,l,p,q);j=355;break;case 313:j=_PyBuffer_IsContiguous(x,67)==0?314:354;break;case 314:ka=_converterr(__str692056,l,p,q);j=355;break;case 315:var ic=ga,k=315;j=316;break;case 316:j=(k==315?ic:Nc)==0?319:317;break;case 317:j=HEAP[ga+4]==0?319:318;break;case 318:j=HEAP[ga+8]==0?319:320;break;case 319:ka=_converterr(__str682055, -l,p,q);j=355;break;case 320:j=FUNCTION_TABLE[HEAP[ga+8]](l,0)!=1?321:322;break;case 321:ka=_converterr(__str702057,l,p,q);j=355;break;case 322:Sa=FUNCTION_TABLE[HEAP[ga+4]](l,0,$);j=Sa<0?323:324;break;case 323:ka=_converterr(__str662053,l,p,q);j=355;break;case 324:var $b=HEAP[$],Qb=x;j=HEAP[ma]==42?325:326;break;case 325:_PyBuffer_FillInfo(Qb,l,$b,Sa,1,0);ma+=1;j=354;break;case 326:HEAP[Qb]=$b;j=HEAP[ma]==35?327:354;break;case 327:w=v=0;var uc=HEAP[n];j=(o&2)!=0?328:329;break;case 328:w=uc;HEAP[n]= -w+4;w=HEAP[w];j=330;break;case 329:v=uc;HEAP[n]=v+4;v=HEAP[v];j=330;break;case 330:j=(o&2)!=0?331:332;break;case 331:HEAP[w]=Sa;j=333;break;case 332:HEAP[v]=Sa;j=333;break;case 333:ma+=1;j=354;break;case 334:t=HEAP[n];HEAP[n]=t+4;t=HEAP[t];X=HEAP[HEAP[l+4]+80];j=HEAP[ma]!=35;ma+=1;var Gc=l;j=j!=0?335:336;break;case 335:ka=_converterr(__str712058,Gc,p,q);j=355;break;case 336:j=(HEAP[HEAP[Gc+4]+84]&1)==0?340:337;break;case 337:j=X==0?340:338;break;case 338:j=HEAP[X+12]==0?340:339;break;case 339:j=HEAP[X+ -8]==0?340:341;break;case 340:ka=_converterr(__str722059,l,p,q);j=355;break;case 341:j=FUNCTION_TABLE[HEAP[X+8]](l,0)!=1?342:343;break;case 342:ka=_converterr(__str732060,l,p,q);j=355;break;case 343:j=HEAP[X+20]!=0?344:345;break;case 344:ka=_converterr(__str742061,l,p,q);j=355;break;case 345:oa=FUNCTION_TABLE[HEAP[X+12]](l,0,t);j=oa<0?346:347;break;case 346:ka=_converterr(__str662053,l,p,q);j=355;break;case 347:s=u=0;var pc=HEAP[n];j=(o&2)!=0?348:349;break;case 348:s=pc;HEAP[n]=s+4;s=HEAP[s];j=350; -break;case 349:u=pc;HEAP[n]=u+4;u=HEAP[u];j=350;break;case 350:j=(o&2)!=0?351:352;break;case 351:HEAP[s]=oa;j=354;break;case 352:HEAP[u]=oa;j=354;break;case 353:ka=_converterr(__str752062,l,p,q);j=355;break;case 354:HEAP[m]=ma;ka=0;j=355;break;case 355:return g=ka,STACKTOP=h,g;default:assert(0,"bad label: "+j)}} -function _convertbuffer(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[HEAP[c+4]+80];a=j==0?4:1;break;case 1:a=HEAP[j]==0?4:2;break;case 2:a=HEAP[j+8]==0?4:3;break;case 3:a=HEAP[j+20]!=0?4:5;break;case 4:HEAP[f]=__str762063;h=-1;a=10;break;case 5:a=FUNCTION_TABLE[HEAP[j+8]](c,0)!=1?6:7;break;case 6:HEAP[f]=__str732060;h=-1;a=10;break;case 7:k=FUNCTION_TABLE[HEAP[j]](c,0,d);a=k<0?8:9;break;case 8:HEAP[f]=__str662053;a=9;break;case 9:h=k;a=10;break;case 10:return g=h;default:assert(0, -"bad label: "+a)}} -function _getbuffer(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l,m;d=g;f=e;h=b;m=HEAP[HEAP[d+4]+80];c=m==0?1:2;break;case 1:HEAP[h]=__str772064;j=-1;c=11;break;case 2:c=HEAP[m+16]!=0?3:8;break;case 3:c=FUNCTION_TABLE[HEAP[m+16]](d,f,0)<0?4:5;break;case 4:HEAP[h]=__str782065;j=-1;c=11;break;case 5:c=_PyBuffer_IsContiguous(f,67)==0?6:7;break;case 6:HEAP[h]=__str692056;j=-1;c=11;break;case 7:j=0;c=11;break;case 8:l=_convertbuffer(d,k,h);c=l<0? -9:10;break;case 9:HEAP[h]=__str782065;j=l;c=11;break;case 10:_PyBuffer_FillInfo(f,0,HEAP[k],l,1,0);j=0;c=11;break;case 11:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyArg_ParseTupleAndKeywords(g,e,b,a){var c=STACKTOP;STACKTOP+=4;_memset(c,0,4);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c;f=g;h=e;j=b;k=a;d=f==0?6:1;break;case 1:d=(HEAP[HEAP[f+4]+84]&67108864)==0?6:2;break;case 2:d=h==0?4:3;break;case 3:d=(HEAP[HEAP[h+4]+84]&536870912)==0?6:4;break;case 4:d=j==0?6:5;break;case 5:d=k==0?6:7;break;case 6:__PyErr_BadInternalCall(__str792066,1435);l=0;d=8;break;case 7:HEAP[m]=arguments[_PyArg_ParseTupleAndKeywords.length];l=d=_vgetargskeywords(f, -h,j,k,m,0);d=8;break;case 8:return f=l,STACKTOP=c,f;default:assert(0,"bad label: "+d)}} -function __PyArg_ParseTupleAndKeywords_SizeT(g,e,b,a){var c=STACKTOP;STACKTOP+=4;_memset(c,0,4);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c;f=g;h=e;j=b;k=a;d=f==0?6:1;break;case 1:d=(HEAP[HEAP[f+4]+84]&67108864)==0?6:2;break;case 2:d=h==0?4:3;break;case 3:d=(HEAP[HEAP[h+4]+84]&536870912)==0?6:4;break;case 4:d=j==0?6:5;break;case 5:d=k==0?6:7;break;case 6:__PyErr_BadInternalCall(__str792066,1459);l=0;d=8;break;case 7:HEAP[m]=arguments[__PyArg_ParseTupleAndKeywords_SizeT.length];l=d=_vgetargskeywords(f, -h,j,k,m,2);d=8;break;case 8:return f=l,STACKTOP=c,f;default:assert(0,"bad label: "+d)}} -function _PyArg_VaParseTupleAndKeywords(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p=d+4;h=g;j=e;k=b;l=a;m=c;f=h==0?6:1;break;case 1:f=(HEAP[HEAP[h+4]+84]&67108864)==0?6:2;break;case 2:f=j==0?4:3;break;case 3:f=(HEAP[HEAP[j+4]+84]&536870912)==0?6:4;break;case 4:f=k==0?6:5;break;case 5:f=l==0?6:7;break;case 6:__PyErr_BadInternalCall(__str792066,1485);n=0;f=8;break;case 7:HEAP[p]=m;_llvm_va_copy(o,p);n=f=_vgetargskeywords(h,j,k,l,o,0); -f=8;break;case 8:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function __PyArg_VaParseTupleAndKeywords_SizeT(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p=d+4;h=g;j=e;k=b;l=a;m=c;f=h==0?6:1;break;case 1:f=(HEAP[HEAP[h+4]+84]&67108864)==0?6:2;break;case 2:f=j==0?4:3;break;case 3:f=(HEAP[HEAP[j+4]+84]&536870912)==0?6:4;break;case 4:f=k==0?6:5;break;case 5:f=l==0?6:7;break;case 6:__PyErr_BadInternalCall(__str792066,1517);n=0;f=8;break;case 7:HEAP[p]=m;_llvm_va_copy(o,p);n=f=_vgetargskeywords(h,j,k, -l,o,2);f=8;break;case 8:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _vgetargskeywords(g,e,b,a,c,d){var f=STACKTOP;STACKTOP+=660;_memset(f,0,660);var h,j=null;for(h=-1;;)switch(h){case -1:var k,l,m=f,n,o,p,q,r,u,s,t,v=f+4,w=f+516,x,y,z,C,A,G,E,D,R,M=f+644,L,I=f+648,J=f+652,F=f+656,V,Q;k=g;l=e;HEAP[m]=b;n=a;o=c;p=d;A=2147483647;HEAP[M]=0;x=_strchr(HEAP[m],58);h=x!=0?1:2;break;case 1:x+=1;z=0;h=4;break;case 2:z=_strchr(HEAP[m],59);h=z!=0?3:4;break;case 3:z+=1;h=4;break;case 4:E=0;h=HEAP[n+4*E]!=0?5:6;break;case 5:E+=1;h=HEAP[n+4*E]!=0?5:6;break;case 6:D=HEAP[k+ -8];h=l!=0?7:8;break;case 7:t=_PyDict_Size(l);h=9;break;case 8:t=0;h=9;break;case 9:R=t;h=R+D>E?10:20;break;case 10:var Z=R+D;h=E==1?11:12;break;case 11:s=__str51992;h=13;break;case 12:s=__str121999;h=13;break;case 13:h=x==0?14:15;break;case 14:u=__str51992;h=16;break;case 15:u=__str61993;h=16;break;case 16:h=x!=0?17:18;break;case 17:r=x;h=19;break;case 18:r=__str71994;h=19;break;case 19:_PyErr_Format(HEAP[_PyExc_TypeError],__str802067,allocate([r,0,0,0,u,0,0,0,E,0,0,0,s,0,0,0,Z,0,0,0],["i8*",0,0, -0,"i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));q=0;h=67;break;case 20:G=0;var K=w,N=v;h=48;break;case 21:C=HEAP[n+4*G];h=HEAP[HEAP[m]]==124?22:23;break;case 22:A=G;HEAP[m]+=1;h=23;break;case 23:h=HEAP[HEAP[m]]==0?26:24;break;case 24:h=HEAP[HEAP[m]]==59?26:25;break;case 25:h=HEAP[HEAP[m]]==58?26:27;break;case 26:_PyErr_Format(HEAP[_PyExc_RuntimeError],__str812068,allocate([E,0,0,0,G,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));q=_cleanreturn(0,HEAP[M]);h=67;break;case 27:L=0;h= -R!=0?29:28;break;case 28:var H=R,j=28;h=32;break;case 29:L=h=_PyDict_GetItemString(l,C);var ba=R;h!=0?(j=29,h=30):(j=29,h=32);break;case 30:R=ba-1;h=G0?55:66;break;case 55:HEAP[F]=0;h=65;break;case 56:V=0;h=(HEAP[HEAP[HEAP[I]+4]+84]&134217728)==0?57:58;break;case 57:_PyErr_SetString(HEAP[_PyExc_TypeError],__str862073);q=_cleanreturn(0,HEAP[M]);h=67;break;case 58:Q=_PyString_AsString(HEAP[I]);G=0;h=62;break;case 59:h=_strcmp(Q,HEAP[n+4*G])==0?60:61;break;case 60:V=1;h=65;break;case 61:G+=1;h=62;break;case 62:h=Gk?14:24;break;case 14:var t=j==k;d=h!=0?15:19;break;case 15:d=t?16:17;break;case 16:m=__str51992; -d=18;break;case 17:m=__str942081;d=18;break;case 18:_PyErr_Format(HEAP[_PyExc_TypeError],__str922079,allocate([h,0,0,0,m,0,0,0,k,0,0,0,r,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));d=23;break;case 19:d=t?20:21;break;case 20:l=__str51992;d=22;break;case 21:l=__str942081;d=22;break;case 22:_PyErr_Format(HEAP[_PyExc_TypeError],__str932080,allocate([l,0,0,0,k,0,0,0,r,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));d=23;break;case 23:p=0;d=27;break;case 24:q=0;d=q< -r?25:26;break;case 25:d=HEAP[u];HEAP[u]=d+4;d=HEAP[d];HEAP[d]=HEAP[f+12+q*4];q+=1;d=q=c?2:3;break;case 2:h=-1;a=32;break;case 3:a=HEAP[HEAP[d+4*HEAP[__PyOS_optind]]]!=45?5:4;break;case 4:a=HEAP[HEAP[d+4*HEAP[__PyOS_optind]]+1]==0?5:6;break;case 5:h=-1;a=32;break;case 6:a=_strcmp(HEAP[d+4*HEAP[__PyOS_optind]],__str12101);var l=HEAP[__PyOS_optind];a=a==0?7:8;break;case 7:HEAP[__PyOS_optind]=l+1;h=-1;a=32;break;case 8:a=_strcmp(HEAP[d+ -4*l],__str22102);var m=HEAP[__PyOS_optind];a=a==0?9:10;break;case 9:HEAP[__PyOS_optind]=m+1;h=104;a=32;break;case 10:a=_strcmp(HEAP[d+4*m],__str32103);var n=HEAP[__PyOS_optind];a=a==0?11:12;break;case 11:HEAP[__PyOS_optind]=n+1;h=86;a=32;break;case 12:HEAP[_opt_ptr_1726]=HEAP[d+4*n]+1;HEAP[__PyOS_optind]=n+1;a=13;break;case 13:a=HEAP[_opt_ptr_1726];k=HEAP[a];HEAP[_opt_ptr_1726]=a+1;a=k==0!=0?14:15;break;case 14:h=-1;a=32;break;case 15:a=k==74?16:17;break;case 16:_fwrite(__str42104,1,26,HEAP[_stderr]); -h=95;a=32;break;case 17:a=k==88?18:19;break;case 18:_fwrite(__str52105,1,53,HEAP[_stderr]);h=95;a=32;break;case 19:j=_strchr(f,k);a=j==0?20:23;break;case 20:a=HEAP[__PyOS_opterr]!=0?21:22;break;case 21:_fprintf(HEAP[_stderr],__str62106,allocate([k,0,0,0],["i32",0,0,0],ALLOC_STACK));a=22;break;case 22:h=95;a=32;break;case 23:a=HEAP[j+1]==58?24:31;break;case 24:a=HEAP[HEAP[_opt_ptr_1726]]!=0?25:26;break;case 25:HEAP[__PyOS_optarg]=HEAP[_opt_ptr_1726];HEAP[_opt_ptr_1726]=__str2100;a=31;break;case 26:a= -HEAP[__PyOS_optind]>=c?27:30;break;case 27:a=HEAP[__PyOS_opterr]!=0?28:29;break;case 28:_fprintf(HEAP[_stderr],__str72107,allocate([k,0,0,0],["i32",0,0,0],ALLOC_STACK));a=29;break;case 29:h=95;a=32;break;case 30:a=HEAP[__PyOS_optind];HEAP[__PyOS_optarg]=HEAP[d+4*a];HEAP[__PyOS_optind]=a+1;a=31;break;case 31:h=k;a=32;break;case 32:return g=h;default:assert(0,"bad label: "+a)}} -function _reduce(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c;a=g;var d=_strlen(a);c=d;b=-1;e=2;break;case 1:var f=c-1;c=f;b=1;e=2;break;case 2:e=(b==1?f:d)==0?4:3;break;case 3:e=HEAP[a+c]!=47?1:4;break;case 4:HEAP[a+c]=0;return;default:assert(0,"bad label: "+e)}} -function _isfile(g){var e=STACKTOP;STACKTOP+=96;_memset(e,0,96);var b;for(b=-1;;)switch(b){case -1:var a,c=e;b=___01stat64_(g,c)!=0?1:2;break;case 1:a=0;b=5;break;case 2:b=(HEAP[c+16]&61440)!=32768?3:4;break;case 3:a=0;b=5;break;case 4:a=1;b=5;break;case 5:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _ismodule(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;e=_prefix;g=_isfile(e)!=0?1:2;break;case 1:a=1;g=9;break;case 2:g=_strlen(e)<=4095?3:8;break;case 3:g=HEAP[_Py_OptimizeFlag]!=0?4:5;break;case 4:b=__str2108;g=6;break;case 5:b=__str12109;g=6;break;case 6:_strcat(e,b);g=_isfile(e)!=0?7:8;break;case 7:a=1;g=9;break;case 8:a=0;g=9;break;case 9:return g=a;default:assert(0,"bad label: "+g)}} -function _isxfile(){var g=STACKTOP;STACKTOP+=96;_memset(g,0,96);var e;for(e=-1;;)switch(e){case -1:var b,a=g;e=___01stat64_(_progpath,a)!=0?1:2;break;case 1:b=0;e=7;break;case 2:e=(HEAP[a+16]&61440)!=32768?3:4;break;case 3:b=0;e=7;break;case 4:e=(HEAP[a+16]&73)==0?5:6;break;case 5:b=0;e=7;break;case 6:b=1;e=7;break;case 7:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}} -function _isdir(){var g=STACKTOP;STACKTOP+=96;_memset(g,0,96);var e;for(e=-1;;)switch(e){case -1:var b,a=g;e=___01stat64_(_exec_prefix,a)!=0?1:2;break;case 1:b=0;e=5;break;case 2:e=(HEAP[a+16]&61440)!=16384?3:4;break;case 3:b=0;e=5;break;case 4:b=1;e=5;break;case 5:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}} -function _joinpath(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h;c=g;d=e;b=HEAP[d]==47?1:2;break;case 1:f=0;b=7;break;case 2:f=_strlen(c);b=f!=0?3:7;break;case 3:var j=f;HEAP[c+(f-1)]!=47&j<=4095?(a=3,b=4):(a=3,b=5);break;case 4:HEAP[c+f]=47;var k=f+1;f=k;a=4;b=5;break;case 5:b=(a==4?k:j)>4096?6:7;break;case 6:throw _Py_FatalError(__str22110),"Reached an unreachable!";case 7:h=_strlen(d);b=h+f>4096?8:9;break;case 8:h=4096-f;b=9;break;case 9:_strncpy(c+f,d,h);HEAP[c+(h+f)]=0;return;default:assert(0, -"bad label: "+b)}}function _copy_absolute(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;var d=a;b=HEAP[c]==47?1:2;break;case 1:_strcpy(d,c);b=8;break;case 2:b=_getcwd(d,4096)==0?3:4;break;case 3:_strcpy(a,c);b=8;break;case 4:b=HEAP[c]==46?5:7;break;case 5:b=HEAP[c+1]==47?6:7;break;case 6:c+=2;b=7;break;case 7:_joinpath(a,c);b=8;break;case 8:return;default:assert(0,"bad label: "+b)}} -function _absolutize(){var g=STACKTOP;STACKTOP+=4097;_memset(g,0,4097);var e;for(e=-1;;)switch(e){case -1:var b,a=g;b=_progpath;e=HEAP[b]==47?2:1;break;case 1:_copy_absolute(a,b);_strcpy(b,a);e=2;break;case 2:STACKTOP=g;return;default:assert(0,"bad label: "+e)}} -function _search_for_prefix(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=c!=0?1:4;break;case 1:_strncpy(_prefix,c,4096);h=_strchr(_prefix,58);b=h!=0?2:3;break;case 2:HEAP[h]=0;b=3;break;case 3:_joinpath(_prefix,_lib_python);_joinpath(_prefix,__str32111);d=1;b=14;break;case 4:_strcpy(_prefix,a);_joinpath(_prefix,__str42112);b=_isfile(_prefix)!=0?5:7;break;case 5:b=__str52113;_strcpy(_prefix,a);_joinpath(_prefix,b);_joinpath(_prefix,__str62114);_joinpath(_prefix,__str32111);b=_ismodule()!= -0?6:7;break;case 6:d=-1;b=14;break;case 7:_copy_absolute(_prefix,a);b=8;break;case 8:f=_strlen(_prefix);_joinpath(_prefix,_lib_python);_joinpath(_prefix,__str32111);b=_ismodule()!=0?9:10;break;case 9:d=1;b=14;break;case 10:HEAP[_prefix+f]=0;_reduce(_prefix);b=HEAP[_prefix]!=0?8:11;break;case 11:_strncpy(_prefix,__str72115,4096);_joinpath(_prefix,_lib_python);_joinpath(_prefix,__str32111);b=_ismodule()!=0?12:13;break;case 12:d=1;b=14;break;case 13:d=0;b=14;break;case 14:return a=d;default:assert(0, -"bad label: "+b)}} -function _search_for_exec_prefix(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=c!=0?1:5;break;case 1:h=_strchr(c,58);b=h!=0?2:3;break;case 2:_strncpy(_exec_prefix,h+1,4096);b=4;break;case 3:_strncpy(_exec_prefix,c,4096);b=4;break;case 4:_joinpath(_exec_prefix,_lib_python);_joinpath(_exec_prefix,__str82116);d=1;b=14;break;case 5:_strcpy(_exec_prefix,a);_joinpath(_exec_prefix,__str42112);b=_isfile(_exec_prefix)!=0?6:7;break;case 6:_reduce(_exec_prefix);d=-1;b=14;break;case 7:_copy_absolute(_exec_prefix, -a);b=8;break;case 8:f=_strlen(_exec_prefix);_joinpath(_exec_prefix,_lib_python);_joinpath(_exec_prefix,__str82116);b=_isdir()!=0?9:10;break;case 9:d=1;b=14;break;case 10:HEAP[_exec_prefix+f]=0;_reduce(_exec_prefix);b=HEAP[_exec_prefix]!=0?8:11;break;case 11:_strncpy(_exec_prefix,__str72115,4096);_joinpath(_exec_prefix,_lib_python);_joinpath(_exec_prefix,__str82116);b=_isdir()!=0?12:13;break;case 12:d=1;b=14;break;case 13:d=0;b=14;break;case 14:return b=d;default:assert(0,"bad label: "+b)}} -function _calculate_path(){var g=STACKTOP;STACKTOP+=12291;_memset(g,0,12291);var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k=g,l=g+4097,m,n,o,p,q,r,u,s,t=g+8194,v,w,x,y;c=__str92117;e=HEAP[_Py_IgnoreEnvironmentFlag]==0?1:2;break;case 1:a=_getenv(__str102118);e=3;break;case 2:a=0;e=3;break;case 3:d=a;f=_Py_GetPythonHome();h=_getenv(__str112119);j=_Py_GetProgramName();r=c;e=_strchr(j,47)!=0?4:5;break;case 4:_strncpy(_progpath,j,4096);e=16;break;case 5:e=h!=0?6:15;break;case 6:u=e=_strchr(h, -58);e=e!=0?7:10;break;case 7:s=u-h;e=s>4096?8:9;break;case 8:s=4096;e=9;break;case 9:_strncpy(_progpath,h,s);HEAP[_progpath+s]=0;e=11;break;case 10:_strncpy(_progpath,h,4096);e=11;break;case 11:_joinpath(_progpath,j);e=_isxfile()!=0?16:12;break;case 12:e=u==0?13:14;break;case 13:HEAP[_progpath]=0;e=16;break;case 14:h=u+1;e=6;break;case 15:HEAP[_progpath]=0;e=16;break;case 16:e=HEAP[_progpath]!=47&HEAP[_progpath]!=0?17:18;break;case 17:_absolutize();e=18;break;case 18:_strncpy(k,_progpath,4096);HEAP[k+ -4096]=0;v=e=_readlink(_progpath,t,4096);e=e!=-1?19:24;break;case 19:var z=t,C=k,A=t,G=k,E=t,D=k,R=t;e=20;break;case 20:HEAP[t+v]=0;e=HEAP[z]==47?21:22;break;case 21:_strncpy(C,A,4096);e=23;break;case 22:_reduce(C);_joinpath(D,R);e=23;break;case 23:v=e=_readlink(G,E,4096);e=e!=-1?20:24;break;case 24:_reduce(k);m=e=_search_for_prefix(k,f);e=e==0?25:28;break;case 25:e=HEAP[_Py_FrozenFlag]==0?26:27;break;case 26:_fwrite(__str122120,1,55,HEAP[_stderr]);e=27;break;case 27:_strncpy(_prefix,__str72115,4096); -_joinpath(_prefix,_lib_python);e=29;break;case 28:_reduce(_prefix);e=29;break;case 29:_strncpy(l,_prefix,4096);HEAP[l+4096]=0;var M=l;e=m>0?30:31;break;case 30:_reduce(M);_reduce(l);e=32;break;case 31:_strncpy(M,__str72115,4096);e=32;break;case 32:_joinpath(l,__str132121);p=_strlen(l);HEAP[l+(p-6)]=50;HEAP[l+(p-5)]=55;n=e=_search_for_exec_prefix(k,f);e=e==0?33:36;break;case 33:e=HEAP[_Py_FrozenFlag]==0?34:35;break;case 34:_fwrite(__str142122,1,58,HEAP[_stderr]);e=35;break;case 35:_strncpy(_exec_prefix, -__str72115,4096);_joinpath(_exec_prefix,__str152123);e=36;break;case 36:e=m==0?38:37;break;case 37:e=n==0&HEAP[_Py_FrozenFlag]==0?39:40;break;case 38:e=HEAP[_Py_FrozenFlag]==0?39:40;break;case 39:_fwrite(__str162124,1,57,HEAP[_stderr]);e=40;break;case 40:p=0;e=d!=0?41:42;break;case 41:p=_strlen(d)+1+p;e=42;break;case 42:q=_strlen(_prefix)+1;e=43;break;case 43:var L=_strchr(r,58);w=L;HEAP[r]!=47?(b=43,e=44):(b=43,e=45);break;case 44:p=q+p;var I=w,b=44;e=45;break;case 45:e=(b==44?I:L)!=0?46:47;break; -case 46:p=w+1+p+(0-r);r=w+1;e=43;break;case 47:p=_strlen(r)+1+p;p=_strlen(l)+1+p;p=_strlen(_exec_prefix)+1+p;o=_PyMem_Malloc(p);e=o==0?48:49;break;case 48:_fwrite(__str172125,1,42,HEAP[_stderr]);_fwrite(__str182126,1,33,HEAP[_stderr]);HEAP[_module_search_path]=__str92117;e=58;break;case 49:var J=o;e=d!=0?50:51;break;case 50:_strcpy(J,d);_strcat(o,_delimiter_8478);e=52;break;case 51:HEAP[J]=0;e=52;break;case 52:_strcat(o,l);_strcat(o,_delimiter_8478);r=c;e=53;break;case 53:var F=_strchr(r,58);x=F; -HEAP[r]!=47?(b=53,e=54):(b=53,e=55);break;case 54:_strcat(o,_prefix);_strcat(o,_separator_8479);var V=x,b=54;e=55;break;case 55:e=(b==54?V:F)!=0?56:57;break;case 56:e=x+1+(0-r);y=_strlen(o);y=e+y;_strncat(o,r,e);HEAP[o+y]=0;r=x+1;e=53;break;case 57:_strcat(o,r);_strcat(o,_delimiter_8478);_strcat(o,_exec_prefix);HEAP[_module_search_path]=o;e=58;break;case 58:e=m>0?59:61;break;case 59:_reduce(_prefix);_reduce(_prefix);e=HEAP[_prefix]==0?60:62;break;case 60:_strcpy(_prefix,_separator_8479);e=62;break; -case 61:_strncpy(_prefix,__str72115,4096);e=62;break;case 62:e=n>0?63:65;break;case 63:_reduce(_exec_prefix);_reduce(_exec_prefix);_reduce(_exec_prefix);e=HEAP[_exec_prefix]==0?64:66;break;case 64:_strcpy(_exec_prefix,_separator_8479);e=66;break;case 65:_strncpy(_exec_prefix,__str72115,4096);e=66;break;case 66:STACKTOP=g;return;default:assert(0,"bad label: "+e)}} -function _Py_GetPath(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_module_search_path]==0?1:2;break;case 1:_calculate_path();g=2;break;case 2:return g=HEAP[_module_search_path];default:assert(0,"bad label: "+g)}}function _Py_GetPrefix(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_module_search_path]==0?1:2;break;case 1:_calculate_path();g=2;break;case 2:return g=_prefix;default:assert(0,"bad label: "+g)}} -function _Py_GetExecPrefix(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_module_search_path]==0?1:2;break;case 1:_calculate_path();g=2;break;case 2:return g=_exec_prefix;default:assert(0,"bad label: "+g)}}function _Py_GetProgramFullPath(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_module_search_path]==0?1:2;break;case 1:_calculate_path();g=2;break;case 2:return g=_progpath;default:assert(0,"bad label: "+g)}}function _Py_GetPlatform(){return __str2127} -function _Py_GetVersion(){var g=_Py_GetCompiler(),e=_Py_GetBuildInfo();_PyOS_snprintf(_version_8294,250,__str2128,allocate([__str12129,0,0,0,e,0,0,0,g,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));return _version_8294}function _PyGrammar_FindDFA(g,e){return HEAP[g+4]+24*(e-256)} -function _PyGrammar_LabelRepr(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b]==0?1:2;break;case 1:a=__str2294;e=9;break;case 2:var c=HEAP[b+4]==0,d=b;e=HEAP[b]>255?3:6;break;case 3:e=c?4:5;break;case 4:_PyOS_snprintf(_buf_8408,100,__str12295,allocate([HEAP[d],0,0,0],["i32",0,0,0],ALLOC_STACK));a=_buf_8408;e=9;break;case 5:a=HEAP[d+4];e=9;break;case 6:e=c?7:8;break;case 7:a=HEAP[__PyParser_TokenNames+HEAP[d]*4];e=9;break;case 8:_PyOS_snprintf(_buf_8408,100,__str22296,allocate([HEAP[__PyParser_TokenNames+ -HEAP[b]*4],0,0,0,HEAP[d+4],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=_buf_8408;e=9;break;case 9:return g=a;default:assert(0,"bad label: "+e)}}function __Py_newgrammar(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=_malloc(24);e=a==0?1:2;break;case 1:throw _Py_FatalError(__str2299),"Reached an unreachable!";case 2:return HEAP[a]=0,HEAP[a+4]=0,HEAP[a+16]=b,HEAP[a+8]=0,HEAP[a+8+4]=0,HEAP[a+20]=0,g=a;default:assert(0,"bad label: "+e)}} -function __Py_adddfa(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[c]+1)*24>=0?1:5;break;case 1:a=(HEAP[c]+1)*24!=0?2:3;break;case 2:h=(HEAP[c]+1)*24;a=4;break;case 3:h=1;a=4;break;case 4:j=_realloc(HEAP[c+4],h);a=6;break;case 5:j=0;a=6;break;case 6:HEAP[c+4]=j;a=HEAP[c+4]==0?7:8;break;case 7:throw _Py_FatalError(__str12300),"Reached an unreachable!";case 8:return e=HEAP[c],g=HEAP[c+4]+24*e,HEAP[c]=e+1,HEAP[g]=d,c=_strdup(f),HEAP[g+4]=c,HEAP[g+12]=0,HEAP[g+16]=0,HEAP[g+ -8]=-1,HEAP[g+20]=0,c=g;default:assert(0,"bad label: "+a)}} -function __Py_addstate(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=(HEAP[b+12]+1)*24>=0?1:5;break;case 1:e=(HEAP[b+12]+1)*24!=0?2:3;break;case 2:a=(HEAP[b+12]+1)*24;e=4;break;case 3:a=1;e=4;break;case 4:c=_realloc(HEAP[b+16],a);e=6;break;case 5:c=0;e=6;break;case 6:HEAP[b+16]=c;e=HEAP[b+16]==0?7:8;break;case 7:throw _Py_FatalError(__str22301),"Reached an unreachable!";case 8:return e=HEAP[b+12],g=HEAP[b+16]+24*e,HEAP[b+12]=e+1,HEAP[g]=0,HEAP[g+4]=0,HEAP[g+8]=0,HEAP[g+12]=0,HEAP[g+16]=0, -HEAP[g+20]=0,b=(g-HEAP[b+16])/24|0;default:assert(0,"bad label: "+e)}} -function __Py_addarc(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;c=e;f=b;h=a;d=HEAP[d+16]+24*c;c=(HEAP[d]+1)*4>=0?1:5;break;case 1:c=(HEAP[d]+1)*4!=0?2:3;break;case 2:j=(HEAP[d]+1)*4;c=4;break;case 3:j=1;c=4;break;case 4:k=_realloc(HEAP[d+4],j);c=6;break;case 5:k=0;c=6;break;case 6:HEAP[d+4]=k;c=HEAP[d+4]==0?7:8;break;case 7:throw _Py_FatalError(__str32302),"Reached an unreachable!";case 8:e=HEAP[d];g=HEAP[d+4]+4*e;HEAP[d]=e+1;HEAP[g]=h&65535;HEAP[g+2]=f&65535;return;default:assert(0, -"bad label: "+c)}} -function __Py_addlabel(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;l=0;a=5;break;case 1:a=HEAP[HEAP[n+4]+8*l]==d?2:4;break;case 2:a=_strcmp(HEAP[HEAP[c+4]+8*l+4],f)==0?3:4;break;case 3:k=l;a=17;break;case 4:l+=1;a=5;break;case 5:var n=c;a=HEAP[c]>l?1:6;break;case 6:a=(HEAP[n]+1)*8>=0?7:11;break;case 7:a=(HEAP[c]+1)*8!=0?8:9;break;case 8:h=(HEAP[c]+1)*8;a=10;break;case 9:h=1;a=10;break;case 10:j=_realloc(HEAP[c+4],h);a=12;break;case 11:j=0;a=12;break;case 12:HEAP[c+4]= -j;a=HEAP[c+4]==0?13:14;break;case 13:throw _Py_FatalError(__str42303),"Reached an unreachable!";case 14:a=HEAP[c];m=HEAP[c+4]+8*a;HEAP[c]=a+1;HEAP[m]=d;a=_strdup(f);HEAP[m+4]=a;a=HEAP[_Py_DebugFlag]!=0?15:16;break;case 15:a=_PyGrammar_LabelRepr(m);_printf(__str52304,allocate([c,0,0,0,HEAP[c],0,0,0,a,0,0,0],["%struct.labellist*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=16;break;case 16:k=(m-HEAP[c+4])/8|0;a=17;break;case 17:return g=k;default:assert(0,"bad label: "+a)}} -function __Py_findlabel(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;h=0;a=3;break;case 1:var j=h;a=HEAP[HEAP[c+4]+8*h]==d?5:2;break;case 2:h=j+1;a=3;break;case 3:a=HEAP[c]>h?1:4;break;case 4:throw _fprintf(HEAP[_stderr],__str62305,allocate([d,0,0,0,f,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK)),_Py_FatalError(__str72306),"Reached an unreachable!";case 5:return g=j;default:assert(0,"bad label: "+a)}} -function __Py_translatelabels(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=1;e=HEAP[b+8]>a?1:2;break;case 1:_translabel(b,HEAP[b+8+4]+8*a);a+=1;e=HEAP[b+8]>a?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _translabel(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;b=HEAP[_Py_DebugFlag]!=0?1:2;break;case 1:b=_PyGrammar_LabelRepr(d);_printf(__str82307,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=2;break;case 2:b=HEAP[d]==1?3:18;break;case 3:f=0;b=9;break;case 4:b=_strcmp(HEAP[d+4],HEAP[HEAP[c+4]+24*f+4])==0?5:8;break;case 5:b=HEAP[_Py_DebugFlag]!=0?6:7;break;case 6:_printf(__str92308,allocate([HEAP[d+4],0,0,0,HEAP[HEAP[c+4]+24*f],0,0,0],["i8*",0,0,0,"i32", -0,0,0],ALLOC_STACK));b=7;break;case 7:HEAP[d]=HEAP[HEAP[c+4]+24*f];_free(HEAP[d+4]);HEAP[d+4]=0;b=46;break;case 8:f+=1;b=9;break;case 9:b=HEAP[c]>f?4:10;break;case 10:f=0;a=10;b=16;break;case 11:b=_strcmp(HEAP[d+4],HEAP[__PyParser_TokenNames+f*4])==0?12:15;break;case 12:b=HEAP[_Py_DebugFlag]!=0?13:14;break;case 13:_printf(__str102309,allocate([HEAP[d+4],0,0,0,f,0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));b=14;break;case 14:HEAP[d]=f;_free(HEAP[d+4]);HEAP[d+4]=0;b=46;break;case 15:var p=f+1;f=p; -a=15;b=16;break;case 16:b=(a==15?p:0)<=52?11:17;break;case 17:_printf(__str112310,allocate([HEAP[d+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break;case 18:b=HEAP[d]==3?19:45;break;case 19:b=___ctype_b_loc();b=(HEAP[HEAP[b]+2*HEAP[HEAP[d+4]+1]]&1024)!=0?21:20;break;case 20:b=HEAP[HEAP[d+4]+1]==95?21:29;break;case 21:b=HEAP[_Py_DebugFlag]!=0?22:23;break;case 22:_printf(__str122311,allocate([HEAP[d+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=23;break;case 23:HEAP[d]=1;j=HEAP[d+4]+1;h=b=_strchr(j,39);b= -b!=0?24:25;break;case 24:l=h-j;b=26;break;case 25:l=_strlen(j);b=26;break;case 26:k=b=_malloc(l+1);b=b==0?27:28;break;case 27:_printf(__str132312,allocate([j,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break;case 28:_strncpy(k,j,l);HEAP[k+l]=0;_free(HEAP[d+4]);HEAP[d+4]=k;b=46;break;case 29:var q=HEAP[d+4];b=HEAP[HEAP[d+4]+2]==HEAP[HEAP[d+4]]?30:33;break;case 30:m=_PyToken_OneChar(HEAP[q+1]);var r=d;b=m!=51?31:32;break;case 31:HEAP[r]=m;_free(HEAP[d+4]);HEAP[d+4]=0;b=46;break;case 32:_printf(__str142313, -allocate([HEAP[r+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break;case 33:b=HEAP[q+2]==0?38:34;break;case 34:b=HEAP[HEAP[d+4]+3]!=HEAP[HEAP[d+4]]?38:35;break;case 35:n=_PyToken_TwoChars(HEAP[HEAP[d+4]+1],HEAP[HEAP[d+4]+2]);var u=d;b=n!=51?36:37;break;case 36:HEAP[u]=n;_free(HEAP[d+4]);HEAP[d+4]=0;b=46;break;case 37:_printf(__str142313,allocate([HEAP[u+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break;case 38:b=HEAP[HEAP[d+4]+2]==0?44:39;break;case 39:b=HEAP[HEAP[d+4]+3]==0?44:40;break;case 40:b=HEAP[HEAP[d+ -4]+4]!=HEAP[HEAP[d+4]]?44:41;break;case 41:o=_PyToken_ThreeChars(HEAP[HEAP[d+4]+1],HEAP[HEAP[d+4]+2],HEAP[HEAP[d+4]+3]);var s=d;b=o!=51?42:43;break;case 42:HEAP[s]=o;_free(HEAP[d+4]);HEAP[d+4]=0;b=46;break;case 43:_printf(__str142313,allocate([HEAP[s+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break;case 44:_printf(__str152314,allocate([HEAP[d+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break;case 45:b=_PyGrammar_LabelRepr(d);_printf(__str162315,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=46;break; -case 46:return;default:assert(0,"bad label: "+b)}} -function __PyImport_LoadDynamicModule(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;j=__PyImport_FindExtension(c,d);a=j!=0?1:2;break;case 1:HEAP[j]+=1;h=j;a=20;break;case 2:k=_strrchr(c,46);a=k==0?3:4;break;case 3:m=0;l=c;a=5;break;case 4:m=c;l=k+1;a=5;break;case 5:n=__PyImport_GetDynLoadFunc(c,l,d,f);a=_PyErr_Occurred()!=0?6:7;break;case 6:h=0;a=20;break;case 7:a=n==0?8:9;break;case 8:_PyErr_Format(HEAP[_PyExc_ImportError],__str2317,allocate([l,0,0,0],["i8*",0,0,0], -ALLOC_STACK));h=0;a=20;break;case 9:a=HEAP[__Py_PackageContext];HEAP[__Py_PackageContext]=m;FUNCTION_TABLE[n]();HEAP[__Py_PackageContext]=a;a=_PyErr_Occurred()!=0?10:11;break;case 10:h=0;a=20;break;case 11:j=_PyImport_GetModuleDict();j=_PyDict_GetItemString(j,c);a=j==0?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_SystemError],__str12318);h=0;a=20;break;case 13:a=_PyModule_AddStringConstant(j,__str22319,d)<0?14:15;break;case 14:_PyErr_Clear();a=15;break;case 15:a=__PyImport_FixupExtension(c,d)== -0?16:17;break;case 16:h=0;a=20;break;case 17:a=HEAP[_Py_VerboseFlag]!=0?18:19;break;case 18:_PySys_WriteStderr(__str32320,allocate([c,0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=19;break;case 19:HEAP[j]+=1;h=j;a=20;break;case 20:return g=h;default:assert(0,"bad label: "+a)}} -function __PyImport_Init(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d;d=c=0;b=__PyImport_DynLoadFiletab;g=HEAP[b]!=0?1:2;break;case 1:c+=1;b+=12;g=HEAP[b]!=0?1:2;break;case 2:b=__PyImport_StandardFiletab;g=HEAP[b]!=0?3:4;break;case 3:d+=1;b+=12;g=HEAP[b]!=0?3:4;break;case 4:g=c+1+d<=178956970?5:10;break;case 5:g=(c+1+d)*12>=0?6:9;break;case 6:g=(c+1+d)*12!=0?7:8;break;case 7:e=(c+1+d)*12;g=11;break;case 8:e=1;g=11;break;case 9:a=0;g=12;break;case 10:a=0;g=12;break;case 11:a=g=_malloc(e);g=g== -0?12:13;break;case 12:throw _Py_FatalError(__str42325),"Reached an unreachable!";case 13:_llvm_memcpy_p0i8_p0i8_i32(a,__PyImport_DynLoadFiletab,c*12,1,0);_llvm_memcpy_p0i8_p0i8_i32(a+12*c,__PyImport_StandardFiletab,d*12,1,0);HEAP[a+12*(d+c)]=0;HEAP[__PyImport_Filetab]=a;g=HEAP[_Py_OptimizeFlag]!=0?14:18;break;case 14:g=HEAP[a]!=0?15:18;break;case 15:g=_strcmp(HEAP[a],__str22323)==0?16:17;break;case 16:HEAP[a]=__str52326;g=17;break;case 17:a+=12;g=HEAP[a]!=0?15:18;break;case 18:g=HEAP[_Py_UnicodeFlag]!= -0?19:20;break;case 19:HEAP[_pyc_magic_b]=1;g=20;break;case 20:return;default:assert(0,"bad label: "+g)}} -function __PyImportHooks_Init(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d;c=b=0;g=_PyType_Ready(_PyNullImporter_Type)<0?13:1;break;case 1:g=HEAP[_Py_VerboseFlag]!=0?2:3;break;case 2:_PySys_WriteStderr(__str62327,allocate(1,"i32",ALLOC_STACK));g=3;break;case 3:e=g=_PyList_New(0);g=g==0?13:4;break;case 4:c=_PySys_SetObject(__str72328,e);HEAP[e]-=1;g=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[e+4]+24]](e);g=6;break;case 6:g=c!=0?13:7;break;case 7:e=_PyDict_New();g=e==0?13:8;break;case 8:c= -_PySys_SetObject(__str82329,e);HEAP[e]-=1;g=HEAP[e]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[e+4]+24]](e);g=10;break;case 10:g=c!=0?13:11;break;case 11:b=_PyList_New(0);g=b==0?13:12;break;case 12:c=_PySys_SetObject(__str92330,b);g=c!=0?13:14;break;case 13:throw _PyErr_Print(),_Py_FatalError(__str102331),"Reached an unreachable!";case 14:a=_PyImport_ImportModule(__str112332);g=a==0?15:17;break;case 15:_PyErr_Clear();g=HEAP[_Py_VerboseFlag]!=0?16:27;break;case 16:_PySys_WriteStderr(__str122333, -allocate(1,"i32",ALLOC_STACK));g=27;break;case 17:d=_PyObject_GetAttrString(a,__str132334);HEAP[a]-=1;g=HEAP[a]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=19;break;case 19:g=d==0?20:22;break;case 20:_PyErr_Clear();g=HEAP[_Py_VerboseFlag]!=0?21:27;break;case 21:_PySys_WriteStderr(__str142335,allocate(1,"i32",ALLOC_STACK));g=27;break;case 22:c=_PyList_Append(b,d);HEAP[d]-=1;g=HEAP[d]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);g=24;break;case 24:g=c!=0?13:25;break; -case 25:g=HEAP[_Py_VerboseFlag]!=0?26:27;break;case 26:_PySys_WriteStderr(__str152336,allocate(1,"i32",ALLOC_STACK));g=27;break;case 27:HEAP[b]-=1;g=HEAP[b]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=29;break;case 29:return;default:assert(0,"bad label: "+g)}} -function __PyImport_Fini(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_extensions]!=0?1:3;break;case 1:g=HEAP[_extensions];HEAP[g]-=1;g=HEAP[g]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[_extensions]+4]+24]](HEAP[_extensions]);g=3;break;case 3:HEAP[_extensions]=0;_free(HEAP[__PyImport_Filetab]);HEAP[__PyImport_Filetab]=0;return;default:assert(0,"bad label: "+g)}}function _imp_lock_held(){return _PyBool_FromLong(0)} -function _imp_acquire_lock(){HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct}function _imp_release_lock(){HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct}function _imp_modules_reloading_clear(){var g;for(g=-1;;)switch(g){case -1:var e;g=_PyThreadState_Get();e=HEAP[g+4];g=HEAP[e+20]!=0?1:2;break;case 1:_PyDict_Clear(HEAP[e+20]);g=2;break;case 2:return;default:assert(0,"bad label: "+g)}} -function _PyImport_GetModuleDict(){var g;for(g=-1;;)switch(g){case -1:var e;e=HEAP[HEAP[__PyThreadState_Current]+4];g=HEAP[e+8]==0?1:2;break;case 1:throw _Py_FatalError(__str162337),"Reached an unreachable!";case 2:return g=HEAP[e+8];default:assert(0,"bad label: "+g)}} -function _PyImport_Cleanup(){var g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var e;for(e=-1;;)switch(e){case -1:var b=g,a,c,d=g+4,f=g+8,h,j,k,l,m,n;j=HEAP[HEAP[__PyThreadState_Current]+4];k=HEAP[j+8];e=k==0?65:1;break;case 1:e=_PyDict_GetItemString(k,__str362357);HEAP[f]=e;e=HEAP[f]!=0?2:7;break;case 2:e=HEAP[HEAP[f]+4]==_PyModule_Type?4:3;break;case 3:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?4:7;break;case 4:h=_PyModule_GetDict(HEAP[f]);e=HEAP[_Py_VerboseFlag]!=0?5:6;break;case 5:_PySys_WriteStderr(__str372358, -allocate(1,"i32",ALLOC_STACK));e=6;break;case 6:_PyDict_SetItemString(h,__str382359,__Py_NoneStruct);e=7;break;case 7:e=_PyDict_GetItemString(k,__str392360);HEAP[f]=e;e=e!=0?8:20;break;case 8:e=HEAP[HEAP[f]+4]==_PyModule_Type?10:9;break;case 9:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?10:20;break;case 10:h=_PyModule_GetDict(HEAP[f]);l=_sys_deletes;e=HEAP[l]!=0?11:14;break;case 11:e=HEAP[_Py_VerboseFlag]!=0?12:13;break;case 12:_PySys_WriteStderr(__str402361,allocate([HEAP[l],0,0,0],["i8*", -0,0,0],ALLOC_STACK));e=13;break;case 13:_PyDict_SetItemString(h,HEAP[l],__Py_NoneStruct);l+=4;e=HEAP[l]!=0?11:14;break;case 14:l=_sys_files;e=HEAP[l]!=0?15:20;break;case 15:e=HEAP[_Py_VerboseFlag]!=0?16:17;break;case 16:_PySys_WriteStderr(__str412362,allocate([HEAP[l],0,0,0],["i8*",0,0,0],ALLOC_STACK));e=17;break;case 17:m=e=_PyDict_GetItemString(h,HEAP[l+4]);e=e==0?18:19;break;case 18:m=__Py_NoneStruct;e=19;break;case 19:_PyDict_SetItemString(h,HEAP[l],m);l+=8;e=HEAP[l]!=0?15:20;break;case 20:e= -_PyDict_GetItemString(k,__str422363);HEAP[f]=e;e=e!=0?21:26;break;case 21:e=HEAP[HEAP[f]+4]==_PyModule_Type?23:22;break;case 22:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?23:26;break;case 23:e=HEAP[_Py_VerboseFlag]!=0?24:25;break;case 24:_PySys_WriteStderr(__str432364,allocate(1,"i32",ALLOC_STACK));e=25;break;case 25:__PyModule_Clear(HEAP[f]);_PyDict_SetItemString(k,__str422363,__Py_NoneStruct);e=26;break;case 26:a=0;HEAP[b]=0;e=_PyDict_Next(k,b,d,f)!=0?27:37;break;case 27:e=HEAP[HEAP[f]]!= -1?28:29;break;case 28:e=_PyDict_Next(k,b,d,f)!=0?27:37;break;case 29:e=(HEAP[HEAP[HEAP[d]+4]+84]&134217728)!=0?30:28;break;case 30:e=HEAP[HEAP[f]+4]==_PyModule_Type?32:31;break;case 31:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?32:28;break;case 32:c=HEAP[d]+20;e=_strcmp(c,__str362357)==0?28:33;break;case 33:e=_strcmp(c,__str392360)==0?28:34;break;case 34:e=HEAP[_Py_VerboseFlag]!=0?35:36;break;case 35:_PySys_WriteStderr(__str442365,allocate([c,0,0,0],["i8*",0,0,0],ALLOC_STACK));e=36;break; -case 36:__PyModule_Clear(HEAP[f]);_PyDict_SetItem(k,HEAP[d],__Py_NoneStruct);a+=1;e=28;break;case 37:e=a>0?26:38;break;case 38:HEAP[b]=0;e=_PyDict_Next(k,b,d,f)!=0?39:48;break;case 39:e=(HEAP[HEAP[HEAP[d]+4]+84]&134217728)!=0?41:40;break;case 40:e=_PyDict_Next(k,b,d,f)!=0?39:48;break;case 41:e=HEAP[HEAP[f]+4]==_PyModule_Type?43:42;break;case 42:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?43:40;break;case 43:c=HEAP[d]+20;e=_strcmp(c,__str362357)==0?40:44;break;case 44:e=_strcmp(c,__str392360)== -0?40:45;break;case 45:e=HEAP[_Py_VerboseFlag]!=0?46:47;break;case 46:_PySys_WriteStderr(__str452366,allocate([c,0,0,0],["i8*",0,0,0],ALLOC_STACK));e=47;break;case 47:__PyModule_Clear(HEAP[f]);_PyDict_SetItem(k,HEAP[d],__Py_NoneStruct);e=40;break;case 48:e=_PyDict_GetItemString(k,__str392360);HEAP[f]=e;e=e!=0?49:54;break;case 49:e=HEAP[HEAP[f]+4]==_PyModule_Type?51:50;break;case 50:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?51:54;break;case 51:e=HEAP[_Py_VerboseFlag]!=0?52:53;break;case 52:_PySys_WriteStderr(__str462367, -allocate(1,"i32",ALLOC_STACK));e=53;break;case 53:__PyModule_Clear(HEAP[f]);_PyDict_SetItemString(k,__str392360,__Py_NoneStruct);e=54;break;case 54:e=_PyDict_GetItemString(k,__str362357);HEAP[f]=e;e=e!=0?55:60;break;case 55:e=HEAP[HEAP[f]+4]==_PyModule_Type?57:56;break;case 56:e=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyModule_Type)!=0?57:60;break;case 57:e=HEAP[_Py_VerboseFlag]!=0?58:59;break;case 58:_PySys_WriteStderr(__str472368,allocate(1,"i32",ALLOC_STACK));e=59;break;case 59:__PyModule_Clear(HEAP[f]); -_PyDict_SetItemString(k,__str362357,__Py_NoneStruct);e=60;break;case 60:_PyDict_Clear(k);HEAP[j+8]=0;HEAP[k]-=1;e=HEAP[k]==0?61:62;break;case 61:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=62;break;case 62:e=HEAP[j+20]!=0?63:65;break;case 63:n=HEAP[j+20];HEAP[j+20]=0;HEAP[n]-=1;e=HEAP[n]==0?64:65;break;case 64:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);e=65;break;case 65:STACKTOP=g;return;default:assert(0,"bad label: "+e)}}function _PyImport_GetMagicNumber(){return HEAP[_pyc_magic_b]?168686340:168686339} -function __PyImport_FixupExtension(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[_extensions]==0?1:3;break;case 1:b=_PyDict_New();HEAP[_extensions]=b;b=HEAP[_extensions]==0?2:3;break;case 2:d=0;b=14;break;case 3:f=_PyImport_GetModuleDict();f=b=_PyDict_GetItemString(f,a);b=b==0?6:4;break;case 4:b=HEAP[f+4]==_PyModule_Type?7:5;break;case 5:b=_PyType_IsSubtype(HEAP[f+4],_PyModule_Type)==0?6:7;break;case 6:_PyErr_Format(HEAP[_PyExc_SystemError],__str482369,allocate([a,0,0,0], -["i8*",0,0,0],ALLOC_STACK));d=0;b=14;break;case 7:h=b=_PyModule_GetDict(f);b=b==0?8:9;break;case 8:d=0;b=14;break;case 9:j=_PyDict_Copy(h);b=j==0?10:11;break;case 10:d=0;b=14;break;case 11:_PyDict_SetItemString(HEAP[_extensions],c,j);HEAP[j]-=1;b=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=13;break;case 13:d=j;b=14;break;case 14:return a=d;default:assert(0,"bad label: "+b)}} -function __PyImport_FindExtension(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[_extensions]==0?1:2;break;case 1:d=0;b=13;break;case 2:f=_PyDict_GetItemString(HEAP[_extensions],c);b=f==0?3:4;break;case 3:d=0;b=13;break;case 4:h=_PyImport_AddModule(a);b=h==0?5:6;break;case 5:d=0;b=13;break;case 6:j=_PyModule_GetDict(h);b=j==0?7:8;break;case 7:d=0;b=13;break;case 8:b=_PyDict_Update(j,f)!=0?9:10;break;case 9:d=0;b=13;break;case 10:b=HEAP[_Py_VerboseFlag]!=0?11:12;break;case 11:_PySys_WriteStderr(__str492370, -allocate([a,0,0,0,c,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=12;break;case 12:d=h;b=13;break;case 13:return b=d;default:assert(0,"bad label: "+b)}} -function _PyImport_AddModule(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=_PyImport_GetModuleDict();d=_PyDict_GetItemString(c,b);e=d!=0?1:4;break;case 1:e=HEAP[d+4]==_PyModule_Type?3:2;break;case 2:e=_PyType_IsSubtype(HEAP[d+4],_PyModule_Type)!=0?3:4;break;case 3:a=d;e=13;break;case 4:d=e=_PyModule_New(b);e=e==0?5:6;break;case 5:a=0;e=13;break;case 6:e=_PyDict_SetItemString(c,b,d)!=0;HEAP[d]-=1;var f=HEAP[d]==0;e=e?7:10;break;case 7:e=f?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d); -e=9;break;case 9:a=0;e=13;break;case 10:e=f?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=12;break;case 12:a=d;e=13;break;case 13:return g=a;default:assert(0,"bad label: "+e)}}function _remove_module(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=_PyImport_GetModuleDict();e=_PyDict_GetItemString(a,b)==0?3:1;break;case 1:e=_PyDict_DelItemString(a,b)<0?2:3;break;case 2:throw _Py_FatalError(__str502371),"Reached an unreachable!";case 3:return;default:assert(0,"bad label: "+e)}} -function _PyImport_ExecCodeModule(g,e){return _PyImport_ExecCodeModuleEx(g,e,0)} -function _PyImport_ExecCodeModuleEx(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;j=_PyImport_GetModuleDict();k=_PyImport_AddModule(c);a=k==0?1:2;break;case 1:h=0;a=19;break;case 2:l=_PyModule_GetDict(k);a=_PyDict_GetItemString(l,__str512372)==0?3:4;break;case 3:a=_PyEval_GetBuiltins();a=_PyDict_SetItemString(l,__str512372,a)!=0?18:4;break;case 4:m=0;a=f!=0?5:7;break;case 5:m=_PyString_FromString(f);a=m==0?6:8;break;case 6:_PyErr_Clear();a=m==0?7:8;break;case 7:m=HEAP[d+ -48];HEAP[m]+=1;a=8;break;case 8:a=_PyDict_SetItemString(l,__str522373,m)!=0?9:10;break;case 9:_PyErr_Clear();a=10;break;case 10:HEAP[m]-=1;a=HEAP[m]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=12;break;case 12:m=a=_PyEval_EvalCode(d,l,l);a=a==0?18:13;break;case 13:HEAP[m]-=1;a=HEAP[m]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=15;break;case 15:k=a=_PyDict_GetItemString(j,c);a=a==0?16:17;break;case 16:_PyErr_Format(HEAP[_PyExc_ImportError],__str532374,allocate([c, -0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=19;break;case 17:HEAP[k]+=1;h=k;a=19;break;case 18:_remove_module(c);h=0;a=19;break;case 19:return g=h;default:assert(0,"bad label: "+a)}} -function _make_compiled_pathname(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_strlen(a);b=h+2>4097?1:2;break;case 1:f=0;b=6;break;case 2:_llvm_memcpy_p0i8_p0i8_i32(c,a,h,1,0);b=HEAP[_Py_OptimizeFlag]!=0?3:4;break;case 3:d=111;b=5;break;case 4:d=99;b=5;break;case 5:HEAP[c+h]=d;HEAP[c+(h+1)]=0;f=c;b=6;break;case 6:return b=f;default:assert(0,"bad label: "+b)}} -function _check_compiled_module(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=___01fopen64_(f,__str32324);a=j==0?1:2;break;case 1:h=0;a=13;break;case 2:a=_PyMarshal_ReadLongFromFile(j);a=a!=(HEAP[_pyc_magic_b]?168686340:168686339)?3:6;break;case 3:a=HEAP[_Py_VerboseFlag]!=0?4:5;break;case 4:_PySys_WriteStderr(__str542375,allocate([f,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=5;break;case 5:_fclose(j);h=0;a=13;break;case 6:a=_PyMarshal_ReadLongFromFile(j);var k=HEAP[_Py_VerboseFlag]!= -0;a=a!=d?7:10;break;case 7:a=k?8:9;break;case 8:_PySys_WriteStderr(__str552376,allocate([f,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=9;break;case 9:_fclose(j);h=0;a=13;break;case 10:a=k?11:12;break;case 11:_PySys_WriteStderr(__str562377,allocate([f,0,0,0,c,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=12;break;case 12:h=j;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function _read_compiled_module(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=_PyMarshal_ReadLastObjectFromFile(e);b=d==0?1:2;break;case 1:c=0;b=7;break;case 2:b=HEAP[d+4]!=_PyCode_Type?3:6;break;case 3:_PyErr_Format(HEAP[_PyExc_ImportError],__str572378,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=7;break;case 6:c=d;b=7;break;case 7:return b=c;default:assert(0,"bad label: "+b)}} -function _load_compiled_module(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=_PyMarshal_ReadLongFromFile(f)!=(HEAP[_pyc_magic_b]?168686340:168686339)?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_ImportError],__str582379,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=9;break;case 2:_PyMarshal_ReadLongFromFile(f);j=_read_compiled_module(d,f);a=j==0?3:4;break;case 3:h=0;a=9;break;case 4:a=HEAP[_Py_VerboseFlag]!=0?5:6;break;case 5:_PySys_WriteStderr(__str592380,allocate([c, -0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=6;break;case 6:k=_PyImport_ExecCodeModuleEx(c,j,d);HEAP[j]-=1;a=HEAP[j]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=8;break;case 8:h=k;a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function _parse_source_module(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l;c=g;d=e;h=0;l=_PyArena_New();a=l==0?1:2;break;case 1:f=0;a=5;break;case 2:HEAP[k]=0;j=_PyParser_ASTFromFile(d,c,257,0,0,k,0,l);a=j!=0?3:4;break;case 3:h=_PyAST_Compile(j,c,0,l);a=4;break;case 4:_PyArena_Free(l);f=h;a=5;break;case 5:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _open_exclusive(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;_unlink(b);a=___01open64_(b,705,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK));b=a<0?1:2;break;case 1:c=0;b=3;break;case 2:c=_fdopen(a,__str602381);b=3;break;case 3:return c;default:assert(0,"bad label: "+b)}} -function _write_compiled_module(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;a=b;h=HEAP[a+72];f=_open_exclusive(d,HEAP[a+16]&-74);a=f==0?1:3;break;case 1:a=HEAP[_Py_VerboseFlag]!=0?2:10;break;case 2:_PySys_WriteStderr(__str612382,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=10;break;case 3:_PyMarshal_WriteLongToFile(HEAP[_pyc_magic_b]?168686340:168686339,f,2);_PyMarshal_WriteLongToFile(0,f,2);_PyMarshal_WriteObjectToFile(c,f,2);a=_fflush(f)!=0?5:4;break;case 4:a=_ferror(f)!=0? -5:8;break;case 5:a=HEAP[_Py_VerboseFlag]!=0?6:7;break;case 6:_PySys_WriteStderr(__str622383,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=7;break;case 7:_fclose(f);_unlink(d);a=10;break;case 8:_fseek(f,4,0);_PyMarshal_WriteLongToFile(h,f,2);_fflush(f);_fclose(f);a=HEAP[_Py_VerboseFlag]!=0?9:10;break;case 9:_PySys_WriteStderr(__str632384,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=10;break;case 10:return;default:assert(0,"bad label: "+a)}} -function _update_code_filenames(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;a=__PyString_Eq(HEAP[c+48],d)==0?7:1;break;case 1:j=HEAP[c+48];HEAP[c+48]=f;HEAP[HEAP[c+48]]+=1;HEAP[j]-=1;a=HEAP[j]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=3;break;case 3:h=HEAP[c+28];l=HEAP[h+8];k=0;a=k4096?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str722393);s=0;j=115;break;case 4:_strcpy(D,m);j=r!=0?5:26;break;case 5:R=_PySys_GetObject(__str72328);j=R==0?7:6;break;case 6:j=(HEAP[HEAP[R+ -4]+84]&33554432)==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_ImportError],__str732394);s=0;j=115;break;case 8:HEAP[R]+=1;v=_PyList_Size(R);t=0;j=23;break;case 9:L=_PyList_GetItem(Z,t);j=n!=0?10:11;break;case 10:u=n;j=12;break;case 11:u=__Py_NoneStruct;j=12;break;case 12:M=j=_PyObject_CallMethod(L,__str742395,__str752396,allocate([l,0,0,0,u,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));j=j==0?13:16;break;case 13:HEAP[R]-=1;j=HEAP[R]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[R+ -4]+24]](R);j=15;break;case 15:s=0;j=115;break;case 16:j=M!=__Py_NoneStruct?17:20;break;case 17:HEAP[r]=M;HEAP[R]-=1;j=HEAP[R]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[R+4]+24]](R);j=19;break;case 19:s=_importhookdescr;j=115;break;case 20:HEAP[M]-=1;j=HEAP[M]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[M+4]+24]](M);j=22;break;case 22:t+=1;j=23;break;case 23:var Z=R;j=t=p?29:30;break;case 29:_PyErr_SetString(HEAP[_PyExc_ImportError],__str762397);s=0;j=115;break;case 30:j=_PyString_AsString(n);_strcpy(o,j);j=_strlen(o);_llvm_memcpy_p0i8_p0i8_i32(o+j,__str772398,2,1,0);_strcat(o,D);_strcpy(D,o);j=_find_frozen(D)!=0?31:32;break;case 31:_strcpy(o,D);s=_fd_frozen_10256;j=115;break;case 32:_PyErr_Format(HEAP[_PyExc_ImportError], -__str782399,allocate([D,0,0,0],["i8*",0,0,0],ALLOC_STACK));s=0;j=115;break;case 33:j=K==0?34:39;break;case 34:j=_is_builtin(D)!=0?35:36;break;case 35:_strcpy(o,D);s=_fd_builtin_10257;j=115;break;case 36:j=_find_frozen(D)!=0?37:38;break;case 37:_strcpy(o,D);s=_fd_frozen_10256;j=115;break;case 38:n=j=_PySys_GetObject(__str172338);j=j==0?40:39;break;case 39:j=(HEAP[HEAP[n+4]+84]&33554432)==0?40:41;break;case 40:_PyErr_SetString(HEAP[_PyExc_ImportError],__str792400);s=0;j=115;break;case 41:A=_PySys_GetObject(__str92330); -j=A==0?43:42;break;case 42:j=(HEAP[HEAP[A+4]+84]&33554432)==0?43:44;break;case 43:_PyErr_SetString(HEAP[_PyExc_ImportError],__str802401);s=0;j=115;break;case 44:G=_PySys_GetObject(__str82329);j=G==0?46:45;break;case 45:j=(HEAP[HEAP[G+4]+84]&536870912)==0?46:47;break;case 46:_PyErr_SetString(HEAP[_PyExc_ImportError],__str812402);s=0;j=115;break;case 47:v=_PyList_Size(n);x=_strlen(D);t=0;var H=D,ba=E+16,W=D,B=Q,Y=Q,fa=D;j=111;break;case 48:I=0;J=_PyList_GetItem(n,t);j=J==0?49:50;break;case 49:s=0;j= -115;break;case 50:j=(HEAP[HEAP[J+4]+84]&268435456)!=0?51:54;break;case 51:I=_PyUnicodeUCS2_Encode(HEAP[J+12],HEAP[J+8],HEAP[_Py_FileSystemDefaultEncoding],0);j=I==0?52:53;break;case 52:s=0;j=115;break;case 53:J=I;j=55;break;case 54:j=(HEAP[HEAP[J+4]+84]&134217728)==0?110:55;break;case 55:w=HEAP[J+8];j=w+14+x>=p?56:59;break;case 56:j=I!=0?57:110;break;case 57:HEAP[I]-=1;j=HEAP[I]==0?58:110;break;case 58:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=110;break;case 59:_strcpy(o,J+20);j=_strlen(o)!=w?60:63; -break;case 60:j=I!=0?61:110;break;case 61:HEAP[I]-=1;j=HEAP[I]==0?62:110;break;case 62:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=110;break;case 63:j=r!=0?64:80;break;case 64:F=_get_path_importer(G,A,J);j=F==0?65:69;break;case 65:j=I!=0?66:68;break;case 66:HEAP[I]-=1;j=HEAP[I]==0?67:68;break;case 67:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=68;break;case 68:s=0;j=115;break;case 69:j=F!=__Py_NoneStruct?70:80;break;case 70:var ha=_PyObject_CallMethod(F,__str742395,__str822403,allocate([l,0,0,0],["i8*",0, -0,0],ALLOC_STACK));V=ha;I!=0?(k=70,j=71):(k=70,j=74);break;case 71:HEAP[I]-=1;j=HEAP[I]==0?72:73;break;case 72:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=73;break;case 73:var la=V,k=73;j=74;break;case 74:j=(k==73?la:ha)==0?75:76;break;case 75:s=0;j=115;break;case 76:j=V!=__Py_NoneStruct?77:78;break;case 77:HEAP[r]=V;s=_importhookdescr;j=115;break;case 78:HEAP[V]-=1;j=HEAP[V]==0?79:110;break;case 79:FUNCTION_TABLE[HEAP[HEAP[V+4]+24]](V);j=110;break;case 80:j=w!=0?81:83;break;case 81:j=HEAP[o+(w-1)]!= -47?82:83;break;case 82:HEAP[o+w]=47;w+=1;j=83;break;case 83:_strcpy(o+w,H);w=x+w;j=___01stat64_(o,E)==0?84:96;break;case 84:j=(HEAP[ba]&61440)==16384?85:96;break;case 85:j=_case_ok(o,w,x,W)!=0?86:96;break;case 86:j=_find_init_module(o)!=0?87:91;break;case 87:j=I!=0?88:90;break;case 88:HEAP[I]-=1;j=HEAP[I]==0?89:90;break;case 89:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=90;break;case 90:s=_fd_package_10258;j=115;break;case 91:_sprintf(B,__str832404,allocate([4096,0,0,0,o,0,0,0],["i32",0,0,0,"i8*",0, -0,0],ALLOC_STACK));j=_PyErr_WarnEx(HEAP[_PyExc_ImportWarning],Y,1)!=0?92:96;break;case 92:j=I!=0?93:95;break;case 93:HEAP[I]-=1;j=HEAP[I]==0?94:95;break;case 94:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=95;break;case 95:s=0;j=115;break;case 96:y=HEAP[__PyImport_Filetab];j=105;break;case 97:_strcpy(o+w,HEAP[y]);j=HEAP[_Py_VerboseFlag]>1?98:99;break;case 98:_PySys_WriteStderr(__str842405,allocate([o,0,0,0],["i8*",0,0,0],ALLOC_STACK));j=99;break;case 99:z=HEAP[y+4];j=HEAP[z]==85?100:101;break;case 100:z= -__str32324;j=101;break;case 101:C=j=___01fopen64_(o,z);j=j!=0?102:104;break;case 102:j=_case_ok(o,w,x,fa)!=0?106:103;break;case 103:_fclose(C);C=0;j=104;break;case 104:y+=12;j=105;break;case 105:j=HEAP[y]!=0?97:106;break;case 106:j=I!=0?107:109;break;case 107:HEAP[I]-=1;j=HEAP[I]==0?108:109;break;case 108:FUNCTION_TABLE[HEAP[HEAP[I+4]+24]](I);j=109;break;case 109:j=C!=0?114:110;break;case 110:t+=1;j=111;break;case 111:j=t4095?1:2;break;case 1:d=0;b=12;break;case 2:HEAP[a+h]=47;h+=1;j=a+h;_llvm_memcpy_p0i8_p0i8_i32(j,__str235703,12,1,0);b=___01stat64_(a,k)==0?3:5;break;case 3:b=_case_ok(a,f+9,8,j)!=0?4:5;break;case 4:HEAP[a+f]=0;d=1;b=12;break;case 5:b=_strlen(j);h+=b;b=HEAP[_Py_OptimizeFlag]!=0?6:7;break;case 6:c=__str872408;b=8;break;case 7:c=__str882409;b=8;break; -case 8:_llvm_memcpy_p0i8_p0i8_i32(a+h,c,2,1,0);b=___01stat64_(a,k)==0?9:11;break;case 9:b=_case_ok(a,f+9,8,j)!=0?10:11;break;case 10:HEAP[a+f]=0;d=1;b=12;break;case 11:d=HEAP[a+f]=0;b=12;break;case 12:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _load_module(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r;h=g;j=e;k=b;l=a;m=c;var u=l;u+-1<2?(f=-1,d=1):(f=-1,d=4);break;case 1:d=j==0?2:3;break;case 2:_PyErr_Format(HEAP[_PyExc_ValueError],__str892410,allocate([l,0,0,0],["i32",0,0,0],ALLOC_STACK));p=0;d=33;break;case 3:var s=l,f=3;d=4;break;case 4:d=f==3?s:u;d=d==1?5:d==2?6:d==3?7:d==5?8:d==6?9:d==7?9:d==9?28:31;break;case 5:q=_load_source_module(h,k,j);d=32;break;case 6:q=_load_compiled_module(h,k,j);d=32; -break;case 7:q=__PyImport_LoadDynamicModule(h,k,j);d=32;break;case 8:q=_load_package(h,k);d=32;break;case 9:d=k!=0?10:12;break;case 10:d=HEAP[k]!=0?11:12;break;case 11:h=k;d=12;break;case 12:var t=h;d=l==6?13:14;break;case 13:var v=_init_builtin(t);r=v;f=13;d=15;break;case 14:var w=_PyImport_ImportFrozenModule(t);r=w;f=14;d=15;break;case 15:d=(f==14?w:v)<0?16:17;break;case 16:p=0;d=33;break;case 17:d=r==0?18:22;break;case 18:d=l==6?19:20;break;case 19:o=__str902411;d=21;break;case 20:o=__str912412; -d=21;break;case 21:_PyErr_Format(HEAP[_PyExc_ImportError],__str922413,allocate([o,0,0,0,h,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));p=0;d=33;break;case 22:q=_PyImport_GetModuleDict();q=_PyDict_GetItemString(q,h);d=q==0?23:27;break;case 23:d=l==6?24:25;break;case 24:n=__str902411;d=26;break;case 25:n=__str912412;d=26;break;case 26:_PyErr_Format(HEAP[_PyExc_ImportError],__str932414,allocate([n,0,0,0,h,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));p=0;d=33;break;case 27:HEAP[q]+=1;d=32;break;case 28:d= -m==0?29:30;break;case 29:_PyErr_SetString(HEAP[_PyExc_ImportError],__str942415);p=0;d=33;break;case 30:q=_PyObject_CallMethod(m,__str952416,__str822403,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));d=32;break;case 31:_PyErr_Format(HEAP[_PyExc_ImportError],__str962417,allocate([h,0,0,0,l,0,0,0],["i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));q=0;d=32;break;case 32:p=q;d=33;break;case 33:return g=p;default:assert(0,"bad label: "+d)}} -function _init_builtin(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=__PyImport_FindExtension(b,b)!=0?1:2;break;case 1:a=1;e=16;break;case 2:c=HEAP[_PyImport_Inittab];e=14;break;case 3:e=_strcmp(b,HEAP[c]);var d=c;e=e==0?4:13;break;case 4:e=HEAP[d+4]==0?5:6;break;case 5:_PyErr_Format(HEAP[_PyExc_ImportError],__str972418,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=-1;e=16;break;case 6:e=HEAP[_Py_VerboseFlag]!=0?7:8;break;case 7:_PySys_WriteStderr(__str982419,allocate([b,0,0,0],["i8*", -0,0,0],ALLOC_STACK));e=8;break;case 8:FUNCTION_TABLE[HEAP[c+4]]();e=_PyErr_Occurred()!=0?9:10;break;case 9:a=-1;e=16;break;case 10:e=__PyImport_FixupExtension(b,b)==0?11:12;break;case 11:a=-1;e=16;break;case 12:a=1;e=16;break;case 13:c=d+8;e=14;break;case 14:e=HEAP[c]!=0?3:15;break;case 15:a=0;e=16;break;case 16:return g=a;default:assert(0,"bad label: "+e)}} -function _find_frozen(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[_PyImport_FrozenModules];e=1;break;case 1:e=HEAP[c]==0?2:3;break;case 2:a=0;e=6;break;case 3:e=_strcmp(HEAP[c],b);var d=c;e=e==0?5:4;break;case 4:c=d+12;e=1;break;case 5:a=d;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _get_frozen_object(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=_find_frozen(b);e=c==0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_ImportError],__str992420,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=0;e=7;break;case 2:e=HEAP[c+4]==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_ImportError],__str1002421,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=0;e=7;break;case 4:d=HEAP[c+8];e=d<0?5:6;break;case 5:d=0-d;e=6;break;case 6:a=_PyMarshal_ReadObjectFromString(HEAP[c+4],d);e= -7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _PyImport_ImportFrozenModule(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m,n;b=g;d=_find_frozen(b);e=d==0?1:2;break;case 1:c=0;e=30;break;case 2:e=HEAP[d+4]==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_ImportError],__str1002421,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=-1;e=30;break;case 4:k=HEAP[d+8];j=k<0;e=j!=0?5:6;break;case 5:k=0-k;e=6;break;case 6:e=HEAP[_Py_VerboseFlag]!=0?7:11;break;case 7:e=j!=0?8:9;break;case 8:a=__str1012422;e=10;break;case 9:a=__str712392; -e=10;break;case 10:_PySys_WriteStderr(__str1022423,allocate([b,0,0,0,a,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=11;break;case 11:f=e=_PyMarshal_ReadObjectFromString(HEAP[d+4],k);e=e==0?12:13;break;case 12:c=-1;e=30;break;case 13:e=HEAP[f+4]!=_PyCode_Type?14:15;break;case 14:_PyErr_Format(HEAP[_PyExc_TypeError],__str1032424,allocate([b,0,0,0],["i8*",0,0,0],ALLOC_STACK));e=27;break;case 15:e=j!=0?16:21;break;case 16:h=_PyImport_AddModule(b);e=h==0?27:17;break;case 17:l=_PyModule_GetDict(h); -m=_PyString_InternFromString(b);e=m==0?27:18;break;case 18:n=_PyDict_SetItemString(l,__str692390,m);HEAP[m]-=1;e=HEAP[m]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);e=20;break;case 20:e=n!=0?27:21;break;case 21:h=e=_PyImport_ExecCodeModuleEx(b,f,__str1042425);e=e==0?27:22;break;case 22:HEAP[f]-=1;e=HEAP[f]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=24;break;case 24:HEAP[h]-=1;e=HEAP[h]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=26;break;case 26:c= -1;e=30;break;case 27:HEAP[f]-=1;e=HEAP[f]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=29;break;case 29:c=-1;e=30;break;case 30:return g=c;default:assert(0,"bad label: "+e)}} -function _PyImport_ImportModule(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;a=_PyString_FromString(g);e=a==0?1:2;break;case 1:b=0;e=5;break;case 2:c=_PyImport_Import(a);HEAP[a]-=1;e=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=4;break;case 4:b=c;e=5;break;case 5:return g=b;default:assert(0,"bad label: "+e)}} -function _PyImport_ImportModuleNoBlock(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;d=_PyImport_GetModuleDict();e=d==0?1:2;break;case 1:a=0;e=5;break;case 2:c=_PyDict_GetItemString(d,b);e=c!=0?3:4;break;case 3:HEAP[c]+=1;a=c;e=5;break;case 4:_PyErr_Clear();a=_PyImport_ImportModule(b);e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _import_module_level(g,e,b,a,c){b=STACKTOP;STACKTOP+=4105;_memset(b,0,4105);var d,f=null;for(d=-1;;)switch(d){case -1:var h=b,j,k,l,m,n,o=b+4,p=b+4101,q,r,u,s;HEAP[h]=g;j=e;k=a;l=c;HEAP[p]=0;d=_strchr(HEAP[h],47)!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ImportError],__str1052426);n=0;d=39;break;case 2:q=_get_parent(j,o,p,l);d=q==0?3:4;break;case 3:n=0;d=39;break;case 4:d=l>=0?5:6;break;case 5:m=q;d=7;break;case 6:m=__Py_NoneStruct;d=7;break;case 7:r=d=_load_next(q,m,h,o,p);d=d==0? -8:9;break;case 8:n=0;d=39;break;case 9:s=r;HEAP[s]+=1;var t=s,v=o,f=9;d=17;break;case 10:u=_load_next(x,s,h,v,p);HEAP[s]-=1;d=HEAP[s]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=12;break;case 12:d=u==0?13:16;break;case 13:HEAP[r]-=1;d=HEAP[r]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=15;break;case 15:n=0;d=39;break;case 16:var w=u;s=w;f=16;d=17;break;case 17:var x=f==16?w:t;d=HEAP[h]!=0?10:18;break;case 18:d=x==__Py_NoneStruct?19:24;break;case 19:HEAP[s]-=1; -d=HEAP[s]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=21;break;case 21:HEAP[r]-=1;d=HEAP[r]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=23;break;case 23:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1062427);n=0;d=39;break;case 24:d=k!=0?25:29;break;case 25:d=k==__Py_NoneStruct?27:26;break;case 26:d=_PyObject_IsTrue(k)==0?27:28;break;case 27:k=0;d=29;break;case 28:d=k==0?29:32;break;case 29:HEAP[s]-=1;d=HEAP[s]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[s+ -4]+24]](s);d=31;break;case 31:n=r;d=39;break;case 32:HEAP[r]-=1;d=HEAP[r]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=34;break;case 34:d=_ensure_fromlist(s,k,o,HEAP[p],0);var y=s;d=d==0?35:38;break;case 35:HEAP[s]=HEAP[y]-1;d=HEAP[s]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=37;break;case 37:n=0;d=39;break;case 38:n=y;d=39;break;case 39:return g=n,STACKTOP=b,g;default:assert(0,"bad label: "+d)}} -function _PyImport_ImportModuleLevel(g,e,b,a,c){return _import_module_level(g,e,b,a,c)} -function _get_parent(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;d=g;f=e;h=b;o=j=a;c=d==0?3:1;break;case 1:c=(HEAP[HEAP[d+4]+84]&536870912)==0?3:2;break;case 2:c=j==0?3:4;break;case 3:k=__Py_NoneStruct;c=60;break;case 4:c=HEAP[_namestr_11013]==0?5:7;break;case 5:c=_PyString_InternFromString(__str1072428);HEAP[_namestr_11013]=c;c=HEAP[_namestr_11013]==0?6:7;break;case 6:k=0;c=60;break;case 7:c=HEAP[_pathstr_11014]==0?8:10;break;case 8:c=_PyString_InternFromString(__str692390); -HEAP[_pathstr_11014]=c;c=HEAP[_pathstr_11014]==0?9:10;break;case 9:k=0;c=60;break;case 10:c=HEAP[_pkgstr_11015]==0?11:13;break;case 11:c=_PyString_InternFromString(__str1082429);HEAP[_pkgstr_11015]=c;c=HEAP[_pkgstr_11015]==0?12:13;break;case 12:k=0;c=60;break;case 13:HEAP[f]=0;HEAP[h]=0;l=_PyDict_GetItem(d,HEAP[_pkgstr_11015]);c=l==0|l==__Py_NoneStruct?23:14;break;case 14:c=(HEAP[HEAP[l+4]+84]&134217728)==0?15:16;break;case 15:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1092430);k=0;c=60;break; -case 16:p=HEAP[l+8];c=p==0?17:20;break;case 17:c=j>0?18:19;break;case 18:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1102431);k=0;c=60;break;case 19:k=__Py_NoneStruct;c=60;break;case 20:c=p>4096?21:22;break;case 21:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1112432);k=0;c=60;break;case 22:_strcpy(f,l+20);c=49;break;case 23:m=_PyDict_GetItem(d,HEAP[_namestr_11013]);c=m==0?25:24;break;case 24:c=(HEAP[HEAP[m+4]+84]&134217728)==0?25:26;break;case 25:k=__Py_NoneStruct;c=60;break;case 26:c=_PyDict_GetItem(d, -HEAP[_pathstr_11014]);var w=m;c=c!=0?27:31;break;case 27:c=HEAP[w+8];c=c>4096?28:29;break;case 28:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1122433);k=0;c=60;break;case 29:_strcpy(f,m+20);c=_PyDict_SetItem(d,HEAP[_pkgstr_11015],m);c=c!=0?30:49;break;case 30:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1132434);k=0;c=60;break;case 31:q=w+20;r=_strrchr(q,46);c=r==0?32:38;break;case 32:c=j>0?33:34;break;case 33:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1102431);k=0;c=60;break;case 34:c=r==0? -35:38;break;case 35:s=_PyDict_SetItem(d,HEAP[_pkgstr_11015],__Py_NoneStruct);c=s!=0?36:37;break;case 36:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1132434);k=0;c=60;break;case 37:k=__Py_NoneStruct;c=60;break;case 38:u=r-q;c=r-q>4095?39:40;break;case 39:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1122433);k=0;c=60;break;case 40:_strncpy(f,q,u);HEAP[f+u]=0;l=_PyString_FromString(f);c=l==0?41:42;break;case 41:k=0;c=60;break;case 42:s=_PyDict_SetItem(d,HEAP[_pkgstr_11015],l);HEAP[l]-=1;c=HEAP[l]== -0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=44;break;case 44:c=s!=0?45:49;break;case 45:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1132434);k=0;c=60;break;case 46:t=_strrchr(x,46);c=t==0?47:48;break;case 47:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1142435);k=0;c=60;break;case 48:HEAP[t]=0;c=49;break;case 49:j=c=j-1;var x=f;c=c>0?46:50;break;case 50:n=_strlen(x);HEAP[h]=n;n=_PyImport_GetModuleDict();n=_PyDict_GetItemString(n,f);c=n==0?51:59;break;case 51:c=o<=0?52:58;break; -case 52:v=_PyString_FromFormat(__str1152436,allocate([f,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=v==0?53:54;break;case 53:k=0;c=60;break;case 54:c=_PyString_AsString(v);c=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],c,1)==0?55:56;break;case 55:HEAP[f]=0;HEAP[h]=0;n=__Py_NoneStruct;c=56;break;case 56:HEAP[v]-=1;c=HEAP[v]==0?57:59;break;case 57:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);c=59;break;case 58:_PyErr_Format(HEAP[_PyExc_SystemError],__str1162437,allocate([f,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=59;break; -case 59:k=n;c=60;break;case 60:return g=k;default:assert(0,"bad label: "+c)}} -function _load_next(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u;h=g;j=e;k=b;l=a;m=c;o=HEAP[k];p=_strchr(o,46);d=HEAP[o]==0?1:2;break;case 1:HEAP[h]+=1;HEAP[k]=0;n=h;d=29;break;case 2:d=p==0?3:4;break;case 3:HEAP[k]=0;var s=_strlen(o);q=s;f=3;d=5;break;case 4:HEAP[k]=p+1;var t=p-o;q=t;f=4;d=5;break;case 5:d=(f==4?t:s)==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1062427);n=0;d=29;break;case 7:r=l+HEAP[m];d=r!=l?8:9;break;case 8:HEAP[r]=46;r+= -1;d=9;break;case 9:d=r+q-l>4095?10:11;break;case 10:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1122433);n=0;d=29;break;case 11:_strncpy(r,o,q);HEAP[r+q]=0;HEAP[m]=r+q-l;var v=u=_import_submodule(h,r,l);v==__Py_NoneStruct?(f=11,d=12):(f=11,d=22);break;case 12:d=j!=h?13:21;break;case 13:HEAP[u]-=1;d=HEAP[u]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=15;break;case 15:var w=u=_import_submodule(j,r,r);u!=0&w!=__Py_NoneStruct?(f=15,d=16):(f=15,d=22);break;case 16:d=_mark_miss(l)!= -0?17:20;break;case 17:HEAP[u]-=1;d=HEAP[u]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=19;break;case 19:n=0;d=29;break;case 20:_strncpy(l,o,q);HEAP[l+q]=0;HEAP[m]=q;d=21;break;case 21:var x=u,f=21;d=22;break;case 22:d=(f==21?x:f==15?w:v)==0?23:24;break;case 23:n=0;d=29;break;case 24:var y=u;d=u==__Py_NoneStruct?25:28;break;case 25:HEAP[u]=HEAP[y]-1;d=HEAP[u]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=27;break;case 27:_PyErr_Format(HEAP[_PyExc_ImportError],__str852406, -allocate([o,0,0,0],["i8*",0,0,0],ALLOC_STACK));n=0;d=29;break;case 28:n=y;d=29;break;case 29:return g=n;default:assert(0,"bad label: "+d)}}function _mark_miss(g){var e=_PyImport_GetModuleDict();return _PyDict_SetItemString(e,g,__Py_NoneStruct)} -function _ensure_fromlist(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u,s;h=g;j=e;k=b;l=a;m=c;d=_PyObject_HasAttrString(h,__str692390)==0?1:2;break;case 1:n=1;d=36;break;case 2:o=0;d=3;break;case 3:p=d=_PySequence_GetItem(j,o);d=d==0?4:7;break;case 4:d=_PyErr_ExceptionMatches(HEAP[_PyExc_IndexError])!=0?5:6;break;case 5:_PyErr_Clear();n=1;d=36;break;case 6:n=0;d=36;break;case 7:d=(HEAP[HEAP[p+4]+84]&134217728)==0?8:11;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str1172438);HEAP[p]-=1;d=HEAP[p]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=10;break;case 10:n=0;d=36;break;case 11:d=HEAP[p+20]==42?12:21;break;case 12:HEAP[p]-=1;d=HEAP[p]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=14;break;case 14:d=m!=0?35:15;break;case 15:q=_PyObject_GetAttrString(h,__str1182439);d=q==0?16:17;break;case 16:_PyErr_Clear();d=35;break;case 17:r=_ensure_fromlist(h,q,k,l,1);HEAP[q]-=1;d=HEAP[q]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[q+ -4]+24]](q);d=19;break;case 19:d=r==0?20:35;break;case 20:n=0;d=36;break;case 21:d=_PyObject_HasAttr(h,p);d=d==0?22:33;break;case 22:u=p+20;d=_strlen(u);d=l+d>4095?23:26;break;case 23:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1122433);HEAP[p]-=1;d=HEAP[p]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=25;break;case 25:n=0;d=36;break;case 26:s=k+l;HEAP[s]=46;s+=1;_strcpy(s,u);s=_import_submodule(h,u,k);d=s!=0?27:30;break;case 27:HEAP[s]-=1;var t=s;HEAP[t]==0?(f=27,d=28):(f=27,d= -29);break;case 28:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);var v=s,f=28;d=29;break;case 29:d=(f==28?v:t)==0?30:33;break;case 30:HEAP[p]-=1;d=HEAP[p]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=32;break;case 32:n=0;d=36;break;case 33:HEAP[p]-=1;d=HEAP[p]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=35;break;case 35:o+=1;d=3;break;case 36:return g=n;default:assert(0,"bad label: "+d)}} -function _add_submodule(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;l=c;d=f==__Py_NoneStruct?1:2;break;case 1:m=1;d=14;break;case 2:d=h==0?3:5;break;case 3:h=_PyDict_GetItemString(l,j);d=h==0?4:5;break;case 4:m=1;d=14;break;case 5:d=HEAP[f+4]==_PyModule_Type?7:6;break;case 6:d=_PyType_IsSubtype(HEAP[f+4],_PyModule_Type)!=0?7:11;break;case 7:n=d=_PyModule_GetDict(f);d=d==0?8:9;break;case 8:m=0;d=14;break;case 9:d=_PyDict_SetItemString(n,k,h)<0?10:13;break;case 10:m= -0;d=14;break;case 11:d=_PyObject_SetAttrString(f,k,h)<0?12:13;break;case 12:m=0;d=14;break;case 13:m=1;d=14;break;case 14:return g=m;default:assert(0,"bad label: "+d)}} -function _import_submodule(g,e,b){var a=STACKTOP;STACKTOP+=4105;_memset(a,0,4105);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o=a,p=a+4,q,r=a+4101;f=g;h=e;j=b;l=_PyImport_GetModuleDict();m=_PyDict_GetItemString(l,j);c=m!=0?1:2;break;case 1:HEAP[m]+=1;c=24;break;case 2:HEAP[o]=0;HEAP[r]=0;c=f==__Py_NoneStruct?3:4;break;case 3:n=0;c=6;break;case 4:n=_PyObject_GetAttrString(f,__str692390);c=n==0?5:6;break;case 5:_PyErr_Clear();HEAP[__Py_NoneStruct]+=1;k=__Py_NoneStruct;c=25;break;case 6:HEAP[p]= -0;var u=_find_module(j,h,n,p,4097,r,o);q=u;n!=0?(d=6,c=7):(d=6,c=10);break;case 7:HEAP[n]-=1;c=HEAP[n]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=9;break;case 9:var s=q,d=9;c=10;break;case 10:c=(d==9?s:u)==0?11:14;break;case 11:c=_PyErr_ExceptionMatches(HEAP[_PyExc_ImportError])==0?12:13;break;case 12:k=0;c=25;break;case 13:_PyErr_Clear();HEAP[__Py_NoneStruct]+=1;k=__Py_NoneStruct;c=25;break;case 14:m=_load_module(j,HEAP[r],p,HEAP[q+8],HEAP[o]);c=HEAP[o]!=0?15:17;break;case 15:c= -HEAP[o];HEAP[c]-=1;c=HEAP[c]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);c=17;break;case 17:c=HEAP[r]!=0?18:19;break;case 18:_fclose(HEAP[r]);c=19;break;case 19:c=_add_submodule(f,m,j,h,l)==0?20:24;break;case 20:c=m!=0?21:23;break;case 21:HEAP[m]-=1;c=HEAP[m]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=23;break;case 23:m=0;c=24;break;case 24:k=m;c=25;break;case 25:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyImport_ReloadModule(g){var e=STACKTOP;STACKTOP+=4105;_memset(e,0,4105);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k=e,l,m,n,o=e+4,p,q=e+4101,r,u,s;c=g;f=_PyThreadState_Get();f=HEAP[HEAP[f+4]+20];h=_PyImport_GetModuleDict();j=0;l=HEAP[k]=0;HEAP[q]=0;b=f==0?1:2;break;case 1:throw _Py_FatalError(__str1192440),"Reached an unreachable!";case 2:b=c==0?5:3;break;case 3:b=HEAP[c+4]==_PyModule_Type?6:4;break;case 4:b=_PyType_IsSubtype(HEAP[c+4],_PyModule_Type)==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str1202441);d=0;b=43;break;case 6:m=b=_PyModule_GetName(c);b=b==0?7:8;break;case 7:d=0;b=43;break;case 8:b=_PyDict_GetItemString(h,m)!=c?9:10;break;case 9:_PyErr_Format(HEAP[_PyExc_ImportError],__str1212442,allocate([m,0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;b=43;break;case 10:l=_PyDict_GetItemString(f,m);b=l!=0?11:12;break;case 11:HEAP[l]+=1;d=l;b=43;break;case 12:b=_PyDict_SetItemString(f,m,c)<0?13:14;break;case 13:d=0;b=43;break;case 14:n=_strrchr(m,46);b=n==0?15:16;break;case 15:n=m;b=26;break; -case 16:u=_PyString_FromStringAndSize(m,n-m);b=u==0?17:18;break;case 17:_imp_modules_reloading_clear();d=0;b=43;break;case 18:s=_PyDict_GetItem(h,u);var t=u;b=s==0?19:22;break;case 19:_PyErr_Format(HEAP[_PyExc_ImportError],__str1222443,allocate([t+20,0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[u]-=1;b=HEAP[u]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);b=21;break;case 21:_imp_modules_reloading_clear();d=0;b=43;break;case 22:HEAP[u]=HEAP[t]-1;b=HEAP[u]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[u+ -4]+24]](u);b=24;break;case 24:n+=1;j=b=_PyObject_GetAttrString(s,__str692390);b=b==0?25:26;break;case 25:_PyErr_Clear();b=26;break;case 26:HEAP[o]=0;var v=_find_module(m,n,j,o,4097,q,k);p=v;j!=0?(a=26,b=27):(a=26,b=30);break;case 27:HEAP[j]-=1;b=HEAP[j]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=29;break;case 29:var w=p,a=29;b=30;break;case 30:var x=HEAP[k];b=(a==29?w:v)==0?31:35;break;case 31:b=x!=0?32:34;break;case 32:b=HEAP[k];HEAP[b]-=1;b=HEAP[b]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+ -4]+24]](HEAP[k]);b=34;break;case 34:_imp_modules_reloading_clear();d=0;b=43;break;case 35:r=_load_module(m,HEAP[q],o,HEAP[p+8],x);b=HEAP[k]!=0?36:38;break;case 36:b=HEAP[k];HEAP[b]-=1;b=HEAP[b]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);b=38;break;case 38:b=HEAP[q]!=0?39:40;break;case 39:_fclose(HEAP[q]);b=40;break;case 40:b=r==0?41:42;break;case 41:_PyDict_SetItemString(h,m,c);b=42;break;case 42:_imp_modules_reloading_clear();d=r;b=43;break;case 43:return g=d,STACKTOP= -e,g;default:assert(0,"bad label: "+b)}} -function _PyImport_Import(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j;a=g;j=h=f=d=0;e=HEAP[_silly_list_11619]==0?1:7;break;case 1:e=_PyString_InternFromString(__str1232444);HEAP[_import_str_11621]=e;e=HEAP[_import_str_11621]==0?2:3;break;case 2:c=0;e=28;break;case 3:e=_PyString_InternFromString(__str512372);HEAP[_builtins_str_11620]=e;e=HEAP[_builtins_str_11620]==0?4:5;break;case 4:c=0;e=28;break;case 5:e=_Py_BuildValue(__str1242445,allocate([__str1252446,0,0,0],["i8*",0,0,0],ALLOC_STACK)); -HEAP[_silly_list_11619]=e;e=HEAP[_silly_list_11619]==0?6:7;break;case 6:c=0;e=28;break;case 7:d=e=_PyEval_GetGlobals();e=e!=0?8:9;break;case 8:HEAP[d]+=1;h=_PyObject_GetItem(d,HEAP[_builtins_str_11620]);e=h==0?18:12;break;case 9:h=_PyImport_ImportModuleLevel(__str362357,0,0,0,0);e=h==0?10:11;break;case 10:c=0;e=28;break;case 11:d=_Py_BuildValue(__str1262447,allocate([HEAP[_builtins_str_11620],0,0,0,h,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=d==0?21:12;break; -case 12:var k=HEAP[_import_str_11621],l=h;e=(HEAP[HEAP[h+4]+84]&536870912)!=0?13:15;break;case 13:f=_PyObject_GetItem(l,k);e=f==0?14:17;break;case 14:_PyErr_SetObject(HEAP[_PyExc_KeyError],HEAP[_import_str_11621]);var m=f,b=14;e=16;break;case 15:var n=_PyObject_GetAttr(l,k);f=n;b=15;e=16;break;case 16:e=(b==14?m:n)==0?18:17;break;case 17:j=_PyObject_CallFunction(f,__str1272448,allocate([a,0,0,0,d,0,0,0,d,0,0,0,HEAP[_silly_list_11619],0,0,0,0,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*", -0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=18;break;case 18:e=d!=0?19:21;break;case 19:HEAP[d]-=1;e=HEAP[d]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=21;break;case 21:e=h!=0?22:24;break;case 22:HEAP[h]-=1;e=HEAP[h]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=24;break;case 24:e=f!=0?25:27;break;case 25:HEAP[f]-=1;e=HEAP[f]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=27;break;case 27:c= -j;e=28;break;case 28:return g=c;default:assert(0,"bad label: "+e)}}function _imp_get_magic(){var g=STACKTOP;STACKTOP+=4;_memset(g,0,4);HEAP[g]=(HEAP[_pyc_magic_b]?168686340:168686339)&255;HEAP[g+1]=(HEAP[_pyc_magic_b]?168686340:168686339)>>8&255;HEAP[g+2]=(HEAP[_pyc_magic_b]?168686340:168686339)>>16&255;HEAP[g+3]=(HEAP[_pyc_magic_b]?168686340:168686339)>>24&255;var e=_PyString_FromStringAndSize(g,4);STACKTOP=g;return e} -function _imp_get_suffixes(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c;b=_PyList_New(0);g=b==0?1:2;break;case 1:e=0;g=18;break;case 2:a=HEAP[__PyImport_Filetab];g=16;break;case 3:c=_Py_BuildValue(__str1282449,allocate([HEAP[a],0,0,0,HEAP[a+4],0,0,0,HEAP[a+8],0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));var d=b;g=c==0?4:7;break;case 4:HEAP[b]=HEAP[d]-1;g=HEAP[b]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=6;break;case 6:e=0;g=18;break;case 7:g=_PyList_Append(d,c)< -0?8:13;break;case 8:HEAP[b]-=1;g=HEAP[b]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=10;break;case 10:HEAP[c]-=1;g=HEAP[c]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=12;break;case 12:e=0;g=18;break;case 13:HEAP[c]-=1;g=HEAP[c]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=15;break;case 15:a+=12;g=16;break;case 16:g=HEAP[a]!=0?3:17;break;case 17:e=b;g=18;break;case 18:return g=e;default:assert(0,"bad label: "+g)}} -function _call_find_module(g,e){var b=STACKTOP;STACKTOP+=4101;_memset(b,0,4101);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4097;c=g;d=e;HEAP[m]=0;HEAP[l]=0;a=d==__Py_NoneStruct?1:2;break;case 1:d=0;a=2;break;case 2:k=a=_find_module(0,c,d,l,4097,m,0);a=a==0?3:4;break;case 3:f=0;a=11;break;case 4:a=HEAP[m]!=0?5:7;break;case 5:h=_PyFile_FromFile(HEAP[m],l,HEAP[k+4],68);a=h==0?6:8;break;case 6:_fclose(HEAP[m]);f=0;a=11;break;case 7:h=__Py_NoneStruct;HEAP[h]+=1;a=8;break;case 8:j=_Py_BuildValue(__str1292450, -allocate([h,0,0,0,l,0,0,0,HEAP[k],0,0,0,HEAP[k+4],0,0,0,HEAP[k+8],0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[h]-=1;a=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=10;break;case 10:f=j;a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_find_module(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=e;HEAP[f]=0;a=_PyArg_ParseTuple(a,__str1302451,allocate([d,0,0,0,f,0,0,0],["i8**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_call_find_module(HEAP[d],HEAP[f]);a=3;break;case 3:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_init_builtin(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h;a=_PyArg_ParseTuple(e,__str1312452,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=9;break;case 2:f=_init_builtin(HEAP[d]);a=f<0?3:4;break;case 3:c=0;a=9;break;case 4:a=f==0?5:6;break;case 5:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=9;break;case 6:h=_PyImport_AddModule(HEAP[d]);a=h!=0?7:8;break;case 7:HEAP[h]+=1;a=8;break;case 8:c=h;a=9;break;case 9:return a= -c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _imp_init_frozen(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h;a=_PyArg_ParseTuple(e,__str1322453,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=9;break;case 2:f=_PyImport_ImportFrozenModule(HEAP[d]);a=f<0?3:4;break;case 3:c=0;a=9;break;case 4:a=f==0?5:6;break;case 5:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=9;break;case 6:h=_PyImport_AddModule(HEAP[d]);a=h!=0?7:8;break;case 7:HEAP[h]+=1;a=8;break;case 8:c=h; -a=9;break;case 9:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _imp_get_frozen_object(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=_PyArg_ParseTuple(e,__str1332454,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_get_frozen_object(HEAP[d]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _imp_is_builtin(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=_PyArg_ParseTuple(e,__str1342455,allocate([c,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_is_builtin(HEAP[c]);d=_PyInt_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_is_frozen(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h;a=_PyArg_ParseTuple(e,__str1352456,allocate([f,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:h=_find_frozen(HEAP[f]);a=h!=0?3:4;break;case 3:c=HEAP[h+8];a=5;break;case 4:c=0;a=5;break;case 5:d=_PyBool_FromLong(c);a=6;break;case 6:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _get_file(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=d==0?1:5;break;case 1:a=HEAP[f]==85?2:3;break;case 2:f=__str32324;a=3;break;case 3:h=a=___01fopen64_(c,f);a=a==0?4:7;break;case 4:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);a=7;break;case 5:h=_PyFile_AsFile(d);a=h==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1362457);a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _imp_load_compiled(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8,j,k;a=e;HEAP[h]=0;a=_PyArg_ParseTuple(a,__str1372458,allocate([d,0,0,0,f,0,0,0,_PyFile_Type,0,0,0,h,0,0,0],["i8**",0,0,0,"i8**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:k=_get_file(HEAP[f],HEAP[h],__str32324);a=k==0?3:4;break;case 3:c=0;a=7;break;case 4:j=_load_compiled_module(HEAP[d], -HEAP[f],k);a=HEAP[h]==0?5:6;break;case 5:_fclose(k);a=6;break;case 6:c=j;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_load_dynamic(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h=b+8,j;a=e;j=HEAP[h]=0;a=_PyArg_ParseTuple(a,__str1382459,allocate([c,0,0,0,f,0,0,0,_PyFile_Type,0,0,0,h,0,0,0],["i8**",0,0,0,"i8**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:a=HEAP[h]!=0?3:5;break;case 3:j=_get_file(HEAP[f],HEAP[h],__str1392460);a=j==0?4:5;break;case 4:d=0;a=6;break;case 5:d= -__PyImport_LoadDynamicModule(HEAP[c],HEAP[f],j);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_load_source(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8,j,k;a=e;HEAP[h]=0;a=_PyArg_ParseTuple(a,__str1402461,allocate([d,0,0,0,f,0,0,0,_PyFile_Type,0,0,0,h,0,0,0],["i8**",0,0,0,"i8**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=7;break;case 2:k=_get_file(HEAP[f],HEAP[h],__str1392460);a=k==0?3:4;break;case 3:c=0;a=7;break;case 4:j=_load_source_module(HEAP[d],HEAP[f], -k);a=HEAP[h]==0?5:6;break;case 5:_fclose(k);a=6;break;case 6:c=j;a=7;break;case 7:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_load_module(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8,j=b+16,k=b+20,l;a=_PyArg_ParseTuple(e,__str1412462,allocate([d,0,0,0,f,0,0,0,h,0,0,0,b+12,0,0,0,j,0,0,0,k,0,0,0],["i8**",0,0,0,"%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i8**",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=15;break;case 2:a=HEAP[HEAP[j]]!=0?3:7;break;case 3:a=HEAP[HEAP[j]]==114?5:4;break;case 4:a=HEAP[HEAP[j]]!=85?6:5;break; -case 5:a=_strchr(HEAP[j],43)!=0?6:7;break;case 6:_PyErr_Format(HEAP[_PyExc_ValueError],__str1422463,allocate([HEAP[j],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;a=15;break;case 7:a=HEAP[f]==__Py_NoneStruct?8:9;break;case 8:l=0;a=14;break;case 9:a=HEAP[HEAP[f]+4]!=_PyFile_Type?10:12;break;case 10:a=_PyType_IsSubtype(HEAP[HEAP[f]+4],_PyFile_Type)==0?11:12;break;case 11:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1432464);c=0;a=15;break;case 12:l=a=_get_file(HEAP[h],HEAP[f],HEAP[j]);a=a==0?13:14;break; -case 13:c=0;a=15;break;case 14:c=_load_module(HEAP[d],l,HEAP[h],HEAP[k],0);a=15;break;case 15:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _imp_load_package(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=_PyArg_ParseTuple(e,__str1442465,allocate([d,0,0,0,f,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_load_package(HEAP[d],HEAP[f]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _imp_new_module(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=_PyArg_ParseTuple(e,__str1452466,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyModule_New(HEAP[d]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _imp_reload(g,e){return _PyImport_ReloadModule(e)} -function _setint(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d;a=g;c=e;d=_PyInt_FromLong(b);c=_PyDict_SetItemString(a,c,d);a=d!=0?1:3;break;case 1:HEAP[d]-=1;a=HEAP[d]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=3;break;case 3:return g=c;default:assert(0,"bad label: "+a)}} -function _NullImporter_init(g,e,b){g=STACKTOP;STACKTOP+=100;_memset(g,0,100);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4;c=e;a=__PyArg_NoKeywords(__str1622483,b)==0?1:2;break;case 1:d=-1;a=10;break;case 2:a=_PyArg_ParseTuple(c,__str1632484,allocate([f,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:d=-1;a=10;break;case 4:a=_strlen(HEAP[f]);a=a==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_ImportError],__str1642485);d=-1;a=10;break;case 6:a=___01stat64_(HEAP[f],h);a=a==0?7:9;break; -case 7:a=(HEAP[h+16]&61440)==16384?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_ImportError],__str1652486);d=-1;a=10;break;case 9:d=0;a=10;break;case 10:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _NullImporter_find_module(){HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct} -function _initimp(){var g;for(g=-1;;)switch(g){case -1:var e,b;g=_PyType_Ready(_PyNullImporter_Type)<0?14:1;break;case 1:e=_Py_InitModule4(__str1692490,_imp_methods,_doc_imp,0,1013);g=e==0?14:2;break;case 2:b=_PyModule_GetDict(e);g=b==0?14:3;break;case 3:g=_setint(b,__str1702491,0)<0?14:4;break;case 4:g=_setint(b,__str1712492,1)<0?14:5;break;case 5:g=_setint(b,__str1722493,2)<0?14:6;break;case 6:g=_setint(b,__str1732494,3)<0?14:7;break;case 7:g=_setint(b,__str1742495,4)<0?14:8;break;case 8:g=_setint(b, -__str1752496,5)<0?14:9;break;case 9:g=_setint(b,__str1762497,6)<0?14:10;break;case 10:g=_setint(b,__str1772498,7)<0?14:11;break;case 11:g=_setint(b,__str1782499,8)<0?14:12;break;case 12:g=_setint(b,__str1792500,9)<0?14:13;break;case 13:HEAP[_PyNullImporter_Type]+=1;_PyModule_AddObject(e,__str1802501,_PyNullImporter_Type);g=14;break;case 14:return;default:assert(0,"bad label: "+g)}} -function _PyImport_ExtendInittab(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j;a=g;j=0;HEAP[a]!=0?(b=-1,e=1):(b=-1,e=3);break;case 1:var b=b==1?l:0,k=b+1,l=b+1;j=k;HEAP[a+8*k]!=0?e=b=1:(b=1,e=2);break;case 2:e=k==0?3:4;break;case 3:d=0;e=18;break;case 4:h=0;e=HEAP[HEAP[_PyImport_Inittab]+8*h]!=0?5:6;break;case 5:h+=1;e=HEAP[HEAP[_PyImport_Inittab]+8*h]!=0?5:6;break;case 6:f=HEAP[_our_copy_12226];e=h+1+j<=268435455?7:12;break;case 7:e=(h+1+j)*8>=0?8:11;break;case 8:e=(h+1+j)*8!=0?9: -10;break;case 9:c=(h+1+j)*8;e=13;break;case 10:c=1;e=13;break;case 11:f=0;e=14;break;case 12:f=0;e=14;break;case 13:f=e=_realloc(f,c);e=e==0?14:15;break;case 14:d=-1;e=18;break;case 15:e=HEAP[_our_copy_12226]!=HEAP[_PyImport_Inittab]?16:17;break;case 16:_llvm_memcpy_p0i8_p0i8_i32(f,HEAP[_PyImport_Inittab],(h+1)*8,1,0);e=17;break;case 17:HEAP[_our_copy_12226]=f;HEAP[_PyImport_Inittab]=HEAP[_our_copy_12226];_llvm_memcpy_p0i8_p0i8_i32(f+8*h,a,(j+1)*8,1,0);d=0;e=18;break;case 18:return g=d;default:assert(0, -"bad label: "+e)}}function _PyImport_AppendInittab(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);_llvm_memset_p0i8_i32(b,0,16,1,0);HEAP[b]=g;HEAP[b+4]=e;var a=_PyImport_ExtendInittab(b);STACKTOP=b;return a}function _PyInt_GetMax(){return 2147483647} -function _fill_free_list2554(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a,c;a=_malloc(988);g=a==0?1:2;break;case 1:b=_PyErr_NoMemory();g=5;break;case 2:HEAP[a]=HEAP[_block_list2511];HEAP[_block_list2511]=a;a+=4;c=a+984;c+=-12;var d=c;c>a?(e=2,g=3):(e=2,g=4);break;case 3:HEAP[(e==3?f:d)+4]=c+-12;c+=-12;var f=c;c>a?g=e=3:(e=3,g=4);break;case 4:HEAP[(e==2?d:f)+4]=0;b=a+984+-12;g=5;break;case 5:return g=b;default:assert(0,"bad label: "+g)}} -function _PyInt_FromLong(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b>=-5&b<=256?1:2;break;case 1:a=HEAP[_small_ints+(b+5)*4];HEAP[a]+=1;e=6;break;case 2:e=HEAP[_free_list2512]==0?3:5;break;case 3:e=_fill_free_list2554();HEAP[_free_list2512]=e;e=HEAP[_free_list2512]==0?4:5;break;case 4:a=0;e=6;break;case 5:a=HEAP[_free_list2512];HEAP[_free_list2512]=HEAP[a+4];HEAP[a+4]=_PyInt_Type;HEAP[a]=1;HEAP[a+8]=b;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyInt_FromSize_t(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=e>=0?1:2;break;case 1:b=_PyInt_FromLong(a);e=3;break;case 2:b=_PyLong_FromSize_t(a);e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _PyInt_FromSsize_t(g){return _PyInt_FromLong(g)} -function _int_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a=b=g;e=HEAP[b+4]==_PyInt_Type?1:2;break;case 1:HEAP[a+4]=HEAP[_free_list2512];HEAP[_free_list2512]=b;e=3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+160]](b);e=3;break;case 3:return;default:assert(0,"bad label: "+e)}}function _int_free(g){HEAP[g+4]=HEAP[_free_list2512];HEAP[_free_list2512]=g} -function _PyInt_AsLong(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=b!=0?1:6;break;case 1:var h=b;e=(HEAP[HEAP[b+4]+84]&8388608)!=0?2:3;break;case 2:a=HEAP[h+8];e=23;break;case 3:e=h==0?6:4;break;case 4:c=HEAP[HEAP[b+4]+48];e=c==0?6:5;break;case 5:e=HEAP[c+72]==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str2513);a=-1;e=23;break;case 7:d=FUNCTION_TABLE[HEAP[c+72]](b);e=d==0?8:9;break;case 8:a=-1;e=23;break;case 9:var j=d;e=(HEAP[HEAP[d+4]+84]&8388608)==0?10:20;break; -case 10:var k=d;e=(HEAP[HEAP[j+4]+84]&16777216)!=0?11:17;break;case 11:f=_PyLong_AsLong(k);HEAP[d]-=1;e=HEAP[d]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=13;break;case 13:e=f==-1?14:16;break;case 14:e=_PyErr_Occurred()!=0?15:16;break;case 15:a=-1;e=23;break;case 16:a=f;e=23;break;case 17:HEAP[k]-=1;e=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=19;break;case 19:_PyErr_SetString(HEAP[_PyExc_TypeError],__str12514);a=-1;e=23;break;case 20:f=HEAP[j+8];HEAP[d]-= -1;e=HEAP[d]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=22;break;case 22:a=f;e=23;break;case 23:return g=a;default:assert(0,"bad label: "+e)}} -function _PyInt_AsSsize_t(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str2513);a=-1;e=7;break;case 2:var c=b;e=(HEAP[HEAP[b+4]+84]&8388608)!=0?3:4;break;case 3:a=HEAP[c+8];e=7;break;case 4:var d=b;e=(HEAP[HEAP[c+4]+84]&16777216)!=0?5:6;break;case 5:a=_PyLong_AsSsize_t(d);e=7;break;case 6:a=_PyInt_AsLong(d);e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _PyInt_AsUnsignedLongMask(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=b!=0?1:9;break;case 1:var h=b;e=(HEAP[HEAP[b+4]+84]&8388608)!=0?2:3;break;case 2:a=HEAP[h+8];e=25;break;case 3:e=h!=0?4:9;break;case 4:var j=b;e=(HEAP[HEAP[b+4]+84]&16777216)!=0?5:6;break;case 5:a=_PyLong_AsUnsignedLongMask(j);e=25;break;case 6:e=j==0?9:7;break;case 7:c=HEAP[HEAP[b+4]+48];e=c==0?9:8;break;case 8:e=HEAP[c+72]==0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str2513);a=-1;e=25; -break;case 10:d=FUNCTION_TABLE[HEAP[c+72]](b);e=d==0?11:12;break;case 11:a=-1;e=25;break;case 12:var k=d;e=(HEAP[HEAP[d+4]+84]&8388608)==0?13:22;break;case 13:var l=d;e=(HEAP[HEAP[k+4]+84]&16777216)!=0?14:19;break;case 14:f=_PyLong_AsUnsignedLongMask(l);HEAP[d]-=1;e=HEAP[d]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=16;break;case 16:e=_PyErr_Occurred()!=0?17:18;break;case 17:a=-1;e=25;break;case 18:a=f;e=25;break;case 19:HEAP[l]-=1;e=HEAP[l]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=21;break;case 21:_PyErr_SetString(HEAP[_PyExc_TypeError],__str12514);a=-1;e=25;break;case 22:f=HEAP[k+8];HEAP[d]-=1;e=HEAP[d]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=24;break;case 24:a=f;e=25;break;case 25:return g=a;default:assert(0,"bad label: "+e)}} -function _PyInt_AsUnsignedLongLongMask(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;e=b!=0?1:9;break;case 1:var h=b;e=(HEAP[HEAP[b+4]+84]&8388608)!=0?2:3;break;case 2:a=HEAP[h+8];e=25;break;case 3:e=h!=0?4:9;break;case 4:var j=b;e=(HEAP[HEAP[b+4]+84]&16777216)!=0?5:6;break;case 5:a=_PyLong_AsUnsignedLongLongMask(j);e=25;break;case 6:e=j==0?9:7;break;case 7:c=HEAP[HEAP[b+4]+48];e=c==0?9:8;break;case 8:e=HEAP[c+72]==0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str2513);a= --1;e=25;break;case 10:d=FUNCTION_TABLE[HEAP[c+72]](b);e=d==0?11:12;break;case 11:a=-1;e=25;break;case 12:var k=d;e=(HEAP[HEAP[d+4]+84]&8388608)==0?13:22;break;case 13:var l=d;e=(HEAP[HEAP[k+4]+84]&16777216)!=0?14:19;break;case 14:f=_PyLong_AsUnsignedLongLongMask(l);HEAP[d]-=1;e=HEAP[d]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=16;break;case 16:e=_PyErr_Occurred()!=0?17:18;break;case 17:a=-1;e=25;break;case 18:a=f;e=25;break;case 19:HEAP[l]-=1;e=HEAP[l]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=21;break;case 21:_PyErr_SetString(HEAP[_PyExc_TypeError],__str12514);a=-1;e=25;break;case 22:f=HEAP[k+8];HEAP[d]-=1;e=HEAP[d]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=24;break;case 24:a=f;e=25;break;case 25:return g=a;default:assert(0,"bad label: "+e)}} -function _PyInt_FromString(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m,n,o;d=g;f=e;h=b;c=h!=0&h<=1|h>36?1:3;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str22515);k=0;c=33;break;case 2:d+=1;c=3;break;case 3:c=HEAP[d]==0?5:4;break;case 4:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*HEAP[d]]&8192)!=0?2:5;break;case 5:c=___errno_location();HEAP[c]=0;c=h!=0?9:6;break;case 6:c=HEAP[d]!=48?9:7;break;case 7:m=_PyOS_strtoul(d,l,h);c=m<0?8:10; -break;case 8:k=_PyLong_FromString(d,f,h);c=33;break;case 9:m=_PyOS_strtol(d,l,h);c=10;break;case 10:c=HEAP[l]==d?16:11;break;case 11:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*HEAP[HEAP[l]+-1]]&8)==0?16:13;break;case 12:HEAP[l]+=1;c=13;break;case 13:c=HEAP[HEAP[l]]==0?15:14;break;case 14:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*HEAP[HEAP[l]]]&8192)!=0?12:15;break;case 15:c=HEAP[HEAP[l]]!=0?16:28;break;case 16:c=_strlen(d)<=199?17:18;break;case 17:j=_strlen(d);c=19;break;case 18:j=200;c=19;break;case 19:n=j; -n=c=_PyString_FromStringAndSize(d,n);c=c==0?20:21;break;case 20:k=0;c=33;break;case 21:o=_PyObject_Repr(n);HEAP[n]-=1;c=HEAP[n]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=23;break;case 23:c=o==0?24:25;break;case 24:k=0;c=33;break;case 25:_PyErr_Format(HEAP[_PyExc_ValueError],__str32516,allocate([h,0,0,0,o+20,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[o]-=1;c=HEAP[o]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=27;break;case 27:k=0;c=33;break;case 28:c= -___errno_location();c=HEAP[c]!=0?29:30;break;case 29:k=_PyLong_FromString(d,f,h);c=33;break;case 30:c=f!=0?31:32;break;case 31:HEAP[f]=HEAP[l];c=32;break;case 32:k=_PyInt_FromLong(m);c=33;break;case 33:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyInt_FromUnicode(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=d+1>=0?1:4;break;case 1:a=d!=-1?2:3;break;case 2:j=d+1;a=5;break;case 3:j=1;a=5;break;case 4:k=0;a=6;break;case 5:k=a=_malloc(j);a=a==0?6:7;break;case 6:h=_PyErr_NoMemory();a=10;break;case 7:a=_PyUnicodeUCS2_EncodeDecimal(c,d,k,0);var l=k;a=a!=0?8:9;break;case 8:_free(l);h=0;a=10;break;case 9:h=_PyInt_FromString(l,0,f);_free(k);a=10;break;case 10:return g=h;default:assert(0,"bad label: "+a)}} -function _int_print(g,e){_fprintf(e,__str42517,allocate([HEAP[g+8],0,0,0],["i32",0,0,0],ALLOC_STACK));return 0}function _int_compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;b=e;a=HEAP[a+8];d=HEAP[b+8];b=a>=d?1:2;break;case 1:c=a>d;b=3;break;case 2:c=-1;b=3;break;case 3:return c;default:assert(0,"bad label: "+b)}}function _int_hash(g){var e;for(e=-1;;)switch(e){case -1:var b;b=HEAP[g+8];e=b==-1?1:2;break;case 1:b=-2;e=2;break;case 2:return g=b;default:assert(0,"bad label: "+e)}} -function _int_add(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=8;break;case 3:h=HEAP[c+8];j=h+f;b=(f^j)>=0?6:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=8;break;case 5:b=(h^j)>=0?6:7;break;case 6:d=_PyInt_FromLong(j);b=8;break;case 7:d=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+ -48]]](a,c);b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _int_sub(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=8;break;case 3:h=HEAP[c+8];j=f-h;b=(f^j)>=0?6:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=8;break;case 5:b=(h^-1^j)>=0?6:7;break;case 6:d=_PyInt_FromLong(j);b=8;break;case 7:d=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+ -48]+4]](a,c);b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _int_mul(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:j=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct;b=15;break;case 3:k=HEAP[c+8];l=k*j&4294967295;m=j*k;k=l;b=k==m?5:6;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct;b=15;break;case 5:h=_PyInt_FromLong(l);b=15;break;case 6:var o=b=k-m;b=b<0?7:8;break;case 7:f= -0-o;b=9;break;case 8:f=o;b=9;break;case 9:n=f;var p=m;b=m<0?10:11;break;case 10:d=0-p;b=12;break;case 11:d=p;b=12;break;case 12:b=d;b=n*32<=b?13:14;break;case 13:h=_PyInt_FromLong(l);b=15;break;case 14:h=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+8]](a,c);b=15;break;case 15:return a=h;default:assert(0,"bad label: "+b)}} -function _i_divmod(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;c=f==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str52518);k=2;c=10;break;case 2:c=f==-1?3:6;break;case 3:c=d<0?4:6;break;case 4:c=d==0-d?5:6;break;case 5:k=1;c=10;break;case 6:l=d/f|0;m=d-f*l;c=d-f*l!=0?7:9;break;case 7:c=(m^f)<0?8:9;break;case 8:m=f+m;l-=1;c=9;break;case 9:HEAP[h]=l;HEAP[j]=m;k=0;c=10;break;case 10:return g=k;default:assert(0,"bad label: "+c)}} -function _int_div(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4;c=g;d=e;a=(HEAP[HEAP[c+4]+84]&8388608)!=0?1:2;break;case 1:h=HEAP[c+8];a=(HEAP[HEAP[d+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=8;break;case 3:a=HEAP[d+8];a=_i_divmod(h,a,j,k);a=a==0?5:a==1?6:7;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=8;break;case 5:f=_PyInt_FromLong(HEAP[j]);a=8;break; -case 6:f=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+12]](c,d);a=8;break;case 7:f=0;a=8;break;case 8:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _int_classic_div(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l=b+4;c=g;d=e;a=(HEAP[HEAP[c+4]+84]&8388608)!=0?1:2;break;case 1:h=HEAP[c+8];a=(HEAP[HEAP[d+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=11;break;case 3:j=HEAP[d+8];a=HEAP[_Py_DivisionWarningFlag]!=0?5:7;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=11;break;case 5:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning], -__str62519,1)<0?6:7;break;case 6:f=0;a=11;break;case 7:a=_i_divmod(h,j,k,l);a=a==0?8:a==1?9:10;break;case 8:f=_PyInt_FromLong(HEAP[k]);a=11;break;case 9:f=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+12]](c,d);a=11;break;case 10:f=0;a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _int_true_divide(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:h=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;b=12;break;case 3:j=HEAP[c+8];b=j==0?5:6;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;b=12;break;case 5:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str72520);f=0;b=12;break;case 6:b=h==0?7:11;break; -case 7:b=j<0?8:9;break;case 8:d=0;b=10;break;case 9:d=0;b=10;break;case 10:f=_PyFloat_FromDouble(d);b=12;break;case 11:f=_PyFloat_FromDouble(h/j);b=12;break;case 12:return b=f;default:assert(0,"bad label: "+b)}} -function _int_mod(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4;c=g;d=e;a=(HEAP[HEAP[c+4]+84]&8388608)!=0?1:2;break;case 1:h=HEAP[c+8];a=(HEAP[HEAP[d+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=8;break;case 3:a=HEAP[d+8];a=_i_divmod(h,a,j,k);a=a==0?5:a==1?6:7;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=8;break;case 5:f=_PyInt_FromLong(HEAP[k]);a=8;break; -case 6:f=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+16]](c,d);a=8;break;case 7:f=0;a=8;break;case 8:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _int_divmod(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4;c=g;d=e;a=(HEAP[HEAP[c+4]+84]&8388608)!=0?1:2;break;case 1:h=HEAP[c+8];a=(HEAP[HEAP[d+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=8;break;case 3:a=HEAP[d+8];a=_i_divmod(h,a,j,k);a=a==0?5:a==1?6:7;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=8;break;case 5:f=_Py_BuildValue(__str82521,allocate([HEAP[j], -0,0,0,HEAP[k],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));a=8;break;case 6:f=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+20]](c,d);a=8;break;case 7:f=0;a=8;break;case 8:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _int_pow(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q=a,r=a+4;d=g;f=e;h=b;m=0;c=(HEAP[HEAP[d+4]+84]&8388608)!=0?1:2;break;case 1:k=HEAP[d+8];c=(HEAP[HEAP[f+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;c=31;break;case 3:l=HEAP[f+8];var u=h!=__Py_NoneStruct;c=l<0?5:8;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;c=31;break;case 5:c=u?6:7;break; -case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str92522);j=0;c=31;break;case 7:j=FUNCTION_TABLE[HEAP[HEAP[_PyFloat_Type+48]+24]](d,f,h);c=31;break;case 8:c=u?9:13;break;case 9:c=(HEAP[HEAP[h+4]+84]&8388608)!=0?10:11;break;case 10:m=HEAP[h+8];c=m==0?12:13;break;case 11:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;c=31;break;case 12:_PyErr_SetString(HEAP[_PyExc_ValueError],__str102523);j=0;c=31;break;case 13:o=k;n=1;c=24;break;case 14:p=n;c=(l&1)!=0?15:18;break;case 15:n=o*n&4294967295; -c=o==0?25:16;break;case 16:c=(n/o|0)!=p?17:18;break;case 17:j=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+24]](d,f,h);c=31;break;case 18:l=c=l>>1;c=c==0?25:19;break;case 19:p=o;o=o*o&4294967295;c=p!=0?20:22;break;case 20:c=(o/p|0)!=p?21:22;break;case 21:j=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+24]](d,f,h);c=31;break;case 22:c=m!=0?23:24;break;case 23:n%=m;o%=m;c=24;break;case 24:c=l>0?14:25;break;case 25:c=m!=0?26:30;break;case 26:c=_i_divmod(n,m,q,r);c=c==0?27:c==1?28:29;break;case 27:n=HEAP[r]; -c=30;break;case 28:j=FUNCTION_TABLE[HEAP[HEAP[_PyLong_Type+48]+24]](d,f,h);c=31;break;case 29:j=0;c=31;break;case 30:j=_PyInt_FromLong(n);c=31;break;case 31:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _int_neg(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;a=HEAP[g+8];e=a<0?1:7;break;case 1:e=a==(0-a&4294967295)?2:7;break;case 2:c=_PyLong_FromLong(a);e=c!=0?3:6;break;case 3:d=_PyNumber_Negative(c);HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:b=d;e=8;break;case 6:b=0;e=8;break;case 7:b=_PyInt_FromLong(0-a);e=8;break;case 8:return g=b;default:assert(0,"bad label: "+e)}} -function _int_abs(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=HEAP[e+8]>=0?1:2;break;case 1:b=_int_int(a);e=3;break;case 2:b=_int_neg(a);e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _int_nonzero(g){return HEAP[g+8]!=0}function _int_invert(g){return _PyInt_FromLong(HEAP[g+8]^-1)} -function _int_lshift(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=34;break;case 3:h=HEAP[c+8];b=h<0?5:6;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=34;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError],__str112524);d=0;b=34;break;case 6:b=f==0?8:7;break;case 7:b= -h==0?8:9;break;case 8:d=_int_int(a);b=34;break;case 9:b=h>31?10:21;break;case 10:k=_PyLong_FromLong(HEAP[a+8]);b=k==0?11:12;break;case 11:d=0;b=34;break;case 12:l=_PyLong_FromLong(HEAP[c+8]);var n=k;b=l==0?13:16;break;case 13:HEAP[k]=HEAP[n]-1;b=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=15;break;case 15:d=0;b=34;break;case 16:m=_PyNumber_Lshift(n,l);HEAP[k]-=1;b=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=18;break;case 18:HEAP[l]-=1;b=HEAP[l]== -0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=20;break;case 20:d=m;b=34;break;case 21:j=f<>h!=f?22:33;break;case 22:k=_PyLong_FromLong(HEAP[a+8]);b=k==0?23:24;break;case 23:d=0;b=34;break;case 24:l=_PyLong_FromLong(HEAP[c+8]);var o=k;b=l==0?25:28;break;case 25:HEAP[k]=HEAP[o]-1;b=HEAP[k]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=27;break;case 27:d=0;b=34;break;case 28:m=_PyNumber_Lshift(o,l);HEAP[k]-=1;b=HEAP[k]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);b=30;break;case 30:HEAP[l]-=1;b=HEAP[l]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=32;break;case 32:d=m;b=34;break;case 33:d=_PyInt_FromLong(j);b=34;break;case 34:return b=d;default:assert(0,"bad label: "+b)}} -function _int_rshift(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=15;break;case 3:h=HEAP[c+8];b=h<0?5:6;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=15;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError],__str112524);d=0;b=15;break;case 6:b=f==0?8:7;break;case 7:b=h==0? -8:9;break;case 8:d=_int_int(a);b=15;break;case 9:var j=f;b=h>31?10:13;break;case 10:b=j<0?11:12;break;case 11:f=-1;b=14;break;case 12:f=0;b=14;break;case 13:f=j>>h;b=14;break;case 14:d=_PyInt_FromLong(f);b=15;break;case 15:return b=d;default:assert(0,"bad label: "+b)}} -function _int_and(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=5;break;case 3:b=HEAP[c+8];d=_PyInt_FromLong(b&f);b=5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _int_xor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=5;break;case 3:b=HEAP[c+8];d=_PyInt_FromLong(b^f);b=5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _int_or(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?1:2;break;case 1:f=HEAP[a+8];b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=5;break;case 3:b=HEAP[c+8];d=_PyInt_FromLong(b|f);b=5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _int_coerce(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=(HEAP[HEAP[HEAP[c]+4]+84]&8388608)!=0?1:2;break;case 1:HEAP[HEAP[a]]+=1;HEAP[HEAP[c]]+=1;d=0;b=3;break;case 2:d=1;b=3;break;case 3:return b=d;default:assert(0,"bad label: "+b)}}function _int_int(g){var e;for(e=-1;;)switch(e){case -1:var b,a=b=g;e=HEAP[b+4]==_PyInt_Type?1:2;break;case 1:HEAP[a]+=1;e=3;break;case 2:b=_PyInt_FromLong(HEAP[a+8]);e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _int_long(g){return _PyLong_FromLong(HEAP[g+8])}function _bits_in_ulong(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=0;e=g>31?1:2;break;case 1:a+=6;b=e=b>>>6;e=e>31?1:2;break;case 2:return g=a=HEAP[_BitLengthTable2658+b]+a;default:assert(0,"bad label: "+e)}}function _int_float(g){return _PyFloat_FromDouble(HEAP[g+8])}function _int_oct(g){return __PyInt_Format(g,8,0)}function _int_hex(g){return __PyInt_Format(g,16,0)} -function _int_new(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l=a+4,m,n;d=g;f=e;h=b;HEAP[k]=0;HEAP[l]=-909;c=d!=_PyInt_Type?1:2;break;case 1:j=_int_subtype_new(d,f,h);c=19;break;case 2:c=_PyArg_ParseTupleAndKeywords(f,h,__str122525,_kwlist_9642,allocate([k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:j=0;c=19;break;case 4:c=HEAP[k]==0?5:6;break;case 5:j=_PyInt_FromLong(0);c=19;break;case 6:var o= -HEAP[k];c=HEAP[l]==-909?7:8;break;case 7:j=_PyNumber_Int(o);c=19;break;case 8:var p=HEAP[k];c=(HEAP[HEAP[o+4]+84]&134217728)!=0?9:16;break;case 9:m=p+20;c=_strlen(m);var q=_PyString_Size(HEAP[k]);c=c!=q?10:15;break;case 10:n=_PyObject_Repr(HEAP[k]);c=n==0?11:12;break;case 11:j=0;c=19;break;case 12:_PyErr_Format(HEAP[_PyExc_ValueError],__str32516,allocate([HEAP[l],0,0,0,n+20,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[n]-=1;c=HEAP[n]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n); -c=14;break;case 14:j=0;c=19;break;case 15:j=_PyInt_FromString(m,0,HEAP[l]);c=19;break;case 16:c=(HEAP[HEAP[p+4]+84]&268435456)!=0?17:18;break;case 17:j=_PyInt_FromUnicode(HEAP[HEAP[k]+12],HEAP[HEAP[k]+8],HEAP[l]);c=19;break;case 18:_PyErr_SetString(HEAP[_PyExc_TypeError],__str152528);j=0;c=19;break;case 19:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _int_subtype_new(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;f=_int_new(_PyInt_Type,e,b);a=f==0?1:2;break;case 1:d=0;a=16;break;case 2:var k=f;a=(HEAP[HEAP[f+4]+84]&8388608)==0?3:8;break;case 3:j=_PyLong_AsLong(k);a=j==-1?4:9;break;case 4:a=_PyErr_Occurred()!=0?5:9;break;case 5:HEAP[f]-=1;a=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=7;break;case 7:d=0;a=16;break;case 8:j=HEAP[k+8];a=9;break;case 9:h=a=FUNCTION_TABLE[HEAP[c+152]](c,0);a=a==0?10:13; -break;case 10:HEAP[f]-=1;a=HEAP[f]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=12;break;case 12:d=0;a=16;break;case 13:HEAP[h+8]=j;HEAP[f]-=1;a=HEAP[f]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=15;break;case 15:d=h;a=16;break;case 16:return g=d;default:assert(0,"bad label: "+a)}}function _int_getnewargs(g){return _Py_BuildValue(__str162529,allocate([HEAP[g+8],0,0,0],["i32",0,0,0],ALLOC_STACK))}function _int_get0(){return _PyInt_FromLong(0)} -function _int_get1(){return _PyInt_FromLong(1)} -function _int_to_decimal_string(g){var e=STACKTOP;STACKTOP+=16;_memset(e,0,16);var b;for(b=-1;;)switch(b){case -1:var a,c=e,d,f,h;f=HEAP[g+8];var c=d=c+16,j=f;b=f<0?1:2;break;case 1:a=0-j;b=3;break;case 2:a=j;b=3;break;case 3:h=a;b=4;break;case 4:c+=-1;HEAP[c]=(h%10&255)+48;h=b=Math.floor(h/10);b=b!=0?4:5;break;case 5:b=f<0?6:7;break;case 6:c+=-1;HEAP[c]=45;b=7;break;case 7:return g=_PyString_FromStringAndSize(c,d-c),STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function __PyInt_Format(g,e,b){var a=STACKTOP;STACKTOP+=38;_memset(a,0,38);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o=a,p,q,r;d=g;f=e;h=b;l=HEAP[d+8];m=l<0;n=l==0;p=o+38;c=f==10?1:2;break;case 1:k=_int_to_decimal_string(d);c=20;break;case 2:q=l/f|0;r=l-f*q;c=r>=0?r:0-r;r=c&255;c=(c&255)<=9?3:4;break;case 3:j=48;c=5;break;case 4:j=87;c=5;break;case 5:r=j+r;p+=-1;HEAP[p]=r;l=q;c=q!=0?2:6;break;case 6:c=f==2?7:8;break;case 7:p+=-1;HEAP[p]=98;p+=-1;HEAP[p]=48;c=17;break;case 8:c=f==8?9: -13;break;case 9:c=h!=0?10:11;break;case 10:p+=-1;HEAP[p]=111;p+=-1;HEAP[p]=48;c=17;break;case 11:c=n==0?12:17;break;case 12:p+=-1;HEAP[p]=48;c=17;break;case 13:p+=-1;var u=p;c=f==16?14:15;break;case 14:HEAP[u]=120;p+=-1;HEAP[p]=48;c=17;break;case 15:HEAP[u]=35;p+=-1;HEAP[p]=(f%10&255)+48;c=f>10?16:17;break;case 16:p+=-1;HEAP[p]=((f/10|0)&255)+48;c=17;break;case 17:c=m!=0?18:19;break;case 18:p+=-1;HEAP[p]=45;c=19;break;case 19:k=_PyString_FromStringAndSize(p,o+(38-p));c=20;break;case 20:return g=k, -STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _int__format__(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j;c=g;a=_PyArg_ParseTuple(e,__str172530,allocate([f,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=11;break;case 2:var k=HEAP[f];a=(HEAP[HEAP[HEAP[f]+4]+84]&134217728)!=0?3:4;break;case 3:d=__PyInt_FormatAdvanced(c,HEAP[f]+20,HEAP[k+8]);a=11;break;case 4:a=(HEAP[HEAP[k+4]+84]&268435456)!=0?5:10;break;case 5:j=_PyObject_Str(HEAP[f]);a=j==0?6:7;break; -case 6:d=0;a=11;break;case 7:h=__PyInt_FormatAdvanced(c,j+20,HEAP[j+8]);HEAP[j]-=1;a=HEAP[j]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=9;break;case 9:d=h;a=11;break;case 10:_PyErr_SetString(HEAP[_PyExc_TypeError],__str182531);d=0;a=11;break;case 11:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _int_bit_length(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;var a=HEAP[e+8];e=HEAP[e+8]<0?1:2;break;case 1:b=0-a;e=3;break;case 2:b=a;e=3;break;case 3:return g=_bits_in_ulong(b),g=_PyInt_FromLong(g);default:assert(0,"bad label: "+e)}} -function __PyInt_Init(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a;a=-5;e=-1;g=5;break;case 1:g=HEAP[_free_list2512]==0?2:4;break;case 2:g=_fill_free_list2554();HEAP[_free_list2512]=g;g=HEAP[_free_list2512]==0?3:4;break;case 3:b=0;g=7;break;case 4:e=HEAP[_free_list2512];HEAP[_free_list2512]=HEAP[e+4];HEAP[e+4]=_PyInt_Type;HEAP[e]=1;HEAP[e+8]=a;HEAP[_small_ints+(a+5)*4]=e;var c=a+1;a=c;e=4;g=5;break;case 5:g=(e==4?c:-5)<=256?1:6;break;case 6:b=1;g=7;break;case 7:return b;default:assert(0,"bad label: "+ -g)}} -function _PyInt_ClearFreeList(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;f=0;b=g=HEAP[_block_list2511];HEAP[_block_list2511]=0;HEAP[_free_list2512]=0;g=g!=0?1:18;break;case 1:c=d=0;e=b+4;g=2;break;case 2:g=HEAP[e+4]==_PyInt_Type?3:5;break;case 3:g=HEAP[e]!=0?4:5;break;case 4:d+=1;g=5;break;case 5:c=g=c+1;e+=12;g=g<=81?2:6;break;case 6:a=HEAP[b];g=d!=0?7:16;break;case 7:HEAP[b]=HEAP[_block_list2511];HEAP[_block_list2511]=b;c=0;e=b+4;g=8;break;case 8:g=HEAP[e+4]!=_PyInt_Type?10:9;break;case 9:g= -HEAP[e]==0?10:11;break;case 10:HEAP[e+4]=HEAP[_free_list2512];HEAP[_free_list2512]=e;g=15;break;case 11:g=HEAP[e+8]>=-5?12:15;break;case 12:g=HEAP[e+8]<=256?13:15;break;case 13:g=HEAP[_small_ints+(HEAP[e+8]+5)*4]==0?14:15;break;case 14:HEAP[e]+=1;HEAP[_small_ints+(HEAP[e+8]+5)*4]=e;g=15;break;case 15:c=g=c+1;e+=12;g=g<=81?8:17;break;case 16:_free(b);g=17;break;case 17:f=d+f;b=a;g=a!=0?1:18;break;case 18:return e=f;default:assert(0,"bad label: "+g)}} -function _PyInt_Fini(){var h;var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;c=262;f=_small_ints;c=g=c-1;g=g>=0?1:5;break;case 1:g=HEAP[f]!=0?2:4;break;case 2:g=HEAP[f];HEAP[g]-=1;g=HEAP[g]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);g=4;break;case 4:HEAP[f]=0;f+=4;c=g=c-1;g=g>=0?1:5;break;case 5:d=_PyInt_ClearFreeList();g=HEAP[_Py_VerboseFlag]==0?20:6;break;case 6:_fwrite(__str352549,1,14,HEAP[_stderr]);g=d==0?7:8;break;case 7:_fputc(10,HEAP[_stderr]);g=12;break;case 8:g= -d==1?9:10;break;case 9:e=__str362550;g=11;break;case 10:e=__str372551;g=11;break;case 11:_fprintf(HEAP[_stderr],__str382552,allocate([d,0,0,0,e,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));g=12;break;case 12:g=HEAP[_Py_VerboseFlag]>1?13:20;break;case 13:a=HEAP[_block_list2511];g=HEAP[_block_list2511]!=0?14:20;break;case 14:c=0;b=a+4;g=15;break;case 15:g=HEAP[b+4]==_PyInt_Type?16:18;break;case 16:g=HEAP[b]!=0?17:18;break;case 17:_fprintf(HEAP[_stderr],__str392553,allocate([b,0,0,0,HEAP[b],0,0,0, -HEAP[b+8],0,0,0],["%struct.PyBoolObject*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));g=18;break;case 18:c=g=c+1;b+=12;g=g<=81?15:19;break;case 19:h=g=HEAP[a],a=h;g=g!=0?14:20;break;case 20:return;default:assert(0,"bad label: "+g)}} -function _PySeqIter_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=_PySequence_Check(b)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str2565,17);a=0;e=7;break;case 2:c=__PyObject_GC_New(_PySeqIter_Type);e=c==0?3:4;break;case 3:a=0;e=7;break;case 4:HEAP[c+8]=0;HEAP[b]+=1;HEAP[c+12]=b;d=c+-12;e=HEAP[d+8]!=-2?5:6;break;case 5:throw _Py_FatalError(__str12566),"Reached an unreachable!";case 6:HEAP[d+8]=-3;HEAP[d]=HEAP[__PyGC_generation0];HEAP[d+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[d+ -4]]=d;HEAP[HEAP[__PyGC_generation0]+4]=d;a=c;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}}function _iter_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+12]!=0?1:3;break;case 1:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=3;break;case 3:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}} -function _iter_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+12]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+12],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=0;a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _iter_iternext(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;a=g;c=HEAP[a+12];e=c==0?1:2;break;case 1:b=0;e=10;break;case 2:d=_PySequence_GetItem(c,HEAP[a+8]);e=d!=0?3:4;break;case 3:HEAP[a+8]+=1;b=d;e=10;break;case 4:e=_PyErr_ExceptionMatches(HEAP[_PyExc_IndexError])!=0?6:5;break;case 5:e=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?6:9;break;case 6:_PyErr_Clear();HEAP[c]-=1;e=HEAP[c]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=8;break;case 8:HEAP[a+12]=0;e= -9;break;case 9:b=0;e=10;break;case 10:return g=b;default:assert(0,"bad label: "+e)}}function _iter_len(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+12]!=0?1:5;break;case 1:c=_PySequence_Size(HEAP[b+12]);e=c==-1?2:3;break;case 2:a=0;e=6;break;case 3:d=c-HEAP[b+8];e=d>=0?4:5;break;case 4:a=_PyInt_FromSsize_t(d);e=6;break;case 5:a=_PyInt_FromLong(0);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyCallIter_New(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=__PyObject_GC_New(_PyCallIter_Type);b=f==0?1:2;break;case 1:d=0;b=5;break;case 2:HEAP[a]+=1;HEAP[f+8]=a;HEAP[c]+=1;HEAP[f+12]=c;h=f+-12;b=HEAP[h+8]!=-2?3:4;break;case 3:throw _Py_FatalError(__str12566),"Reached an unreachable!";case 4:HEAP[h+8]=-3;HEAP[h]=HEAP[__PyGC_generation0];HEAP[h+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[h+4]]=h;HEAP[HEAP[__PyGC_generation0]+4]=h;d=f;b=5;break;case 5:return b=d;default:assert(0, -"bad label: "+b)}} -function _calliter_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:e=HEAP[b+12]!=0?4:6;break;case 4:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=6;break;case 6:_PyObject_GC_Del(b);return;default:assert(0, -"bad label: "+e)}}function _calliter_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=HEAP[c+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+8],f);a=j!=0?2:3;break;case 2:h=j;a=7;break;case 3:a=HEAP[c+12]!=0?4:6;break;case 4:k=FUNCTION_TABLE[d](HEAP[c+12],f);a=k!=0?5:6;break;case 5:h=k;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _calliter_iternext(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l;b=g;e=HEAP[b+8]!=0?1:24;break;case 1:c=_PyTuple_New(0);e=c==0?2:3;break;case 2:a=0;e=25;break;case 3:d=_PyObject_Call(HEAP[b+8],c,0);HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:e=d!=0?6:17;break;case 6:f=_PyObject_RichCompareBool(d,HEAP[b+12],2);var m=d;e=f==0?7:8;break;case 7:a=m;e=25;break;case 8:HEAP[d]=HEAP[m]-1;e=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=10;break;case 10:e=f>0?11:24;break;case 11:e=HEAP[b+8]!=0?12:14;break;case 12:h=HEAP[b+8];HEAP[b+8]=0;HEAP[h]-=1;e=HEAP[h]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=14;break;case 14:e=HEAP[b+12]!=0?15:24;break;case 15:j=HEAP[b+12];HEAP[b+12]=0;HEAP[j]-=1;e=HEAP[j]==0?16:24;break;case 16:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=24;break;case 17:e=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?18:24;break;case 18:_PyErr_Clear();e=HEAP[b+8]!=0?19:21;break;case 19:k= -HEAP[b+8];HEAP[b+8]=0;HEAP[k]-=1;e=HEAP[k]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=21;break;case 21:e=HEAP[b+12]!=0?22:24;break;case 22:l=HEAP[b+12];HEAP[b+12]=0;HEAP[l]-=1;e=HEAP[l]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=24;break;case 24:a=0;e=25;break;case 25:return g=a;default:assert(0,"bad label: "+e)}}function _PyNode_ListTree(g){_listnode(HEAP[_stdout],g)}function _listnode(g,e){HEAP[_level]=0;HEAP[_atbol_b]=1;_list1node(g,e)} -function _list1node(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=c==0?18:1;break;case 1:b=HEAP[c]>255?2:4;break;case 2:d=0;b=HEAP[c+16]>d?3:18;break;case 3:_list1node(a,HEAP[c+20]+24*d);d+=1;b=HEAP[c+16]>d?3:18;break;case 4:b=HEAP[c]<=255?5:17;break;case 5:b=HEAP[c];b=b==5?6:b==6?7:8;break;case 6:HEAP[_level]+=1;b=18;break;case 7:HEAP[_level]-=1;b=18;break;case 8:b=HEAP[_atbol_b]!=0?9:12;break;case 9:f=0;b=f=n?(a=-1,b=1):(a=-1,b=3);break;case 1:var o=d;m>>1<=o?(a=1,b=2):(a=1,b=3);break;case 2:HEAP[c+8]=d;j=0;b=22;break;case 3:b=a==1?o:n;var p=b>>3;b=b<=8?4:5;break;case 4:h=3;b=6;break;case 5:b=h=6;break;case 6:l=h+p;b=(d^-1)>>>0>>0?7:8;break;case 7:_PyErr_NoMemory();j=-1;b=22;break;case 8:var q=l+d;l=q;b=d==0?9:10;break;case 9:l=0;k=HEAP[c+12];b=12;break;case 10:k=HEAP[c+12];b=q<= -1073741823?11:18;break;case 11:b=l<=536870911?12:17;break;case 12:b=l*4>=0?13:16;break;case 13:b=l*4!=0?14:15;break;case 14:f=l*4;b=19;break;case 15:f=1;b=19;break;case 16:k=0;b=20;break;case 17:k=0;b=20;break;case 18:k=0;b=20;break;case 19:k=b=_realloc(k,f);b=b==0?20:21;break;case 20:_PyErr_NoMemory();j=-1;b=22;break;case 21:HEAP[c+12]=k;HEAP[c+8]=d;HEAP[c+16]=l;j=0;b=22;break;case 22:return a=j;default:assert(0,"bad label: "+b)}} -function _PyList_Fini(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_numfree2575]!=0?1:2;break;case 1:HEAP[_numfree2575]-=1;g=HEAP[_free_list2576+HEAP[_numfree2575]*4];_PyObject_GC_Del(g);g=HEAP[_numfree2575]!=0?1:2;break;case 2:return;default:assert(0,"bad label: "+g)}} -function _PyList_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;e=b<0?1:2;break;case 1:__PyErr_BadInternalCall(__str2577,126);d=0;e=24;break;case 2:e=b>1073741823?3:4;break;case 3:d=_PyErr_NoMemory();e=24;break;case 4:h=b*4;e=HEAP[_numfree2575]!=0?5:6;break;case 5:HEAP[_numfree2575]-=1;f=HEAP[_free_list2576+HEAP[_numfree2575]*4];HEAP[f]=1;e=8;break;case 6:f=__PyObject_GC_New(_PyList_Type);e=f==0?7:8;break;case 7:d=0;e=24;break;case 8:e=b<=0?9:10;break;case 9:HEAP[f+12]=0;e=21;break; -case 10:e=h>=0?11:15;break;case 11:e=h!=0?12:13;break;case 12:a=h;e=14;break;case 13:a=1;e=14;break;case 14:c=_malloc(a);e=16;break;case 15:c=0;e=16;break;case 16:HEAP[f+12]=c;var k=f;e=HEAP[f+12]==0?17:20;break;case 17:HEAP[k]-=1;e=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=19;break;case 19:d=_PyErr_NoMemory();e=24;break;case 20:_llvm_memset_p0i8_i32(HEAP[k+12],0,h,1,0);e=21;break;case 21:HEAP[f+8]=b;HEAP[f+16]=b;j=f+-12;e=HEAP[j+8]!=-2?22:23;break;case 22:throw _Py_FatalError(__str12578), -"Reached an unreachable!";case 23:HEAP[j+8]=-3;HEAP[j]=HEAP[__PyGC_generation0];HEAP[j+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[j+4]]=j;HEAP[HEAP[__PyGC_generation0]+4]=j;d=f;e=24;break;case 24:return g=d;default:assert(0,"bad label: "+e)}} -function _PyList_Size(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&33554432)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str2577,169);a=-1;e=3;break;case 2:a=HEAP[b+8];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyList_GetItem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&33554432)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str2577,182);d=0;b=9;break;case 2:b=c<0?4:3;break;case 3:b=HEAP[a+8]<=c?4:8;break;case 4:b=HEAP[_indexerr]==0?5:7;break;case 5:b=_PyString_FromString(__str22579);HEAP[_indexerr]=b;b=HEAP[_indexerr]==0?6:7;break;case 6:d=0;b=9;break;case 7:_PyErr_SetObject(HEAP[_PyExc_IndexError],HEAP[_indexerr]);d=0;b=9;break;case 8:d=HEAP[HEAP[a+12]+4*c]; -b=9;break;case 9:return a=d;default:assert(0,"bad label: "+b)}} -function _PyList_SetItem(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&33554432)==0?1:5;break;case 1:a=f!=0?2:4;break;case 2:HEAP[f]-=1;a=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=4;break;case 4:__PyErr_BadInternalCall(__str2577,206);h=-1;a=15;break;case 5:a=d<0?7:6;break;case 6:a=HEAP[c+8]<=d?7:11;break;case 7:a=f!=0?8:10;break;case 8:HEAP[f]-=1;a=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=10;break;case 10:_PyErr_SetString(HEAP[_PyExc_IndexError], -__str32580);h=-1;a=15;break;case 11:a=HEAP[c+12]+4*d;j=HEAP[a];HEAP[a]=f;a=j!=0?12:14;break;case 12:HEAP[j]-=1;a=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=14;break;case 14:h=0;a=15;break;case 15:return g=h;default:assert(0,"bad label: "+a)}} -function _ins1(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=HEAP[c+8];a=f==0?1:2;break;case 1:__PyErr_BadInternalCall(__str2577,228);h=-1;a=14;break;case 2:a=k==2147483647?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str42581);h=-1;a=14;break;case 4:a=_list_resize(c,k+1)==-1?5:6;break;case 5:h=-1;a=14;break;case 6:a=d<0?7:9;break;case 7:d=k+d;a=d<0?8:9;break;case 8:d=0;a=9;break;case 9:a=d>k?10:11;break;case 10:d=k;a=11;break;case 11:l=HEAP[c+12];j=k; -j-=1;a=j>=d?12:13;break;case 12:HEAP[l+4*(j+1)]=HEAP[l+4*j];j-=1;a=j>=d?12:13;break;case 13:HEAP[f]+=1;HEAP[l+4*d]=f;h=0;a=14;break;case 14:return g=h;default:assert(0,"bad label: "+a)}}function _PyList_Insert(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&33554432)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str2577,259);h=-1;a=3;break;case 2:h=_ins1(c,d,f);a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _app1(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=HEAP[a+8];b=f==2147483647?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str42581);d=-1;b=5;break;case 2:b=_list_resize(a,f+1)==-1?3:4;break;case 3:d=-1;b=5;break;case 4:HEAP[c]+=1;HEAP[HEAP[a+12]+4*f]=c;d=0;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _PyList_Append(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&33554432)!=0?1:3;break;case 1:b=c!=0?2:3;break;case 2:d=_app1(a,c);b=4;break;case 3:__PyErr_BadInternalCall(__str2577,290);d=-1;b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}} -function _list_dealloc(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c;a=g;_PyObject_GC_UnTrack(a);e=HEAP[__PyTrash_delete_nesting]<=49?1:14;break;case 1:HEAP[__PyTrash_delete_nesting]+=1;e=HEAP[a+12]!=0?2:8;break;case 2:c=HEAP[a+8];c=b=c-1;var d=HEAP[a+12];b>=0?(b=2,e=3):(b=2,e=7);break;case 3:e=HEAP[(b==4?f:d)+4*c]!=0?5:4;break;case 4:c=b=c-1;var f=HEAP[a+12];b>=0?(b=4,e=3):(b=4,e=7);break;case 5:e=HEAP[HEAP[a+12]+4*c];HEAP[e]-=1;e=HEAP[e]==0?6:4;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[HEAP[a+ -12]+4*c]+4]+24]](HEAP[HEAP[a+12]+4*c]);e=4;break;case 7:_free(b==2?d:f);e=8;break;case 8:e=HEAP[_numfree2575]>79?11:9;break;case 9:e=HEAP[a+4]!=_PyList_Type?11:10;break;case 10:e=HEAP[_numfree2575];HEAP[_free_list2576+e*4]=a;HEAP[_numfree2575]=e+1;e=12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[a+4]+160]](a);e=12;break;case 12:HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?13:15;break;case 13:__PyTrash_destroy_chain();e=15;break;case 14:__PyTrash_deposit_object(a); -e=15;break;case 15:return;default:assert(0,"bad label: "+e)}} -function _list_print(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=_Py_ReprEnter(a);b=f!=0?1:4;break;case 1:b=f<0?2:3;break;case 2:d=f;b=16;break;case 3:_fwrite(__str52582,1,5,c);d=0;b=16;break;case 4:_fputc(91,c);h=0;b=14;break;case 5:j=HEAP[HEAP[a+12]+4*h];HEAP[j]+=1;b=h>0?6:7;break;case 6:_fwrite(__str62583,1,2,c);b=7;break;case 7:b=_PyObject_Print(j,c,0)!=0;HEAP[j]-=1;var k=HEAP[j]==0;b=b?8:11;break;case 8:b=k?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=10;break; -case 10:_Py_ReprLeave(a);d=-1;b=16;break;case 11:b=k?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=13;break;case 13:h+=1;b=14;break;case 14:b=HEAP[a+8]>h?5:15;break;case 15:_fputc(93,c);_Py_ReprLeave(a);d=0;b=16;break;case 16:return a=d;default:assert(0,"bad label: "+b)}} -function _list_repr(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h=e,j=e+4,k,l,m;a=g;l=k=0;f=_Py_ReprEnter(a);b=f!=0?1:5;break;case 1:b=f>0?2:3;break;case 2:c=_PyString_FromString(__str52582);b=4;break;case 3:c=0;b=4;break;case 4:d=c;b=28;break;case 5:b=HEAP[a+8]==0?6:7;break;case 6:l=_PyString_FromString(__str72584);b=24;break;case 7:k=_PyList_New(0);b=k==0?27:8;break;case 8:f=0;b=16;break;case 9:b=HEAP[__PyThreadState_Current];HEAP[b+12]+=1;b=HEAP[b+ -12]>HEAP[__Py_CheckRecursionLimit]?10:11;break;case 10:b=__Py_CheckRecursiveCall(__str82585)!=0?24:11;break;case 11:b=_PyObject_Repr(HEAP[HEAP[a+12]+4*f]);HEAP[h]=b;HEAP[HEAP[__PyThreadState_Current]+12]-=1;b=HEAP[h]==0?24:12;break;case 12:m=_PyList_Append(k,HEAP[h]);b=HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=14;break;case 14:b=m<0?24:15;break;case 15:f+=1;b=16;break;case 16:b=HEAP[a+8]>f?9:17;break;case 17:b=_PyString_FromString(__str92586); -HEAP[h]=b;b=HEAP[h]==0?24:18;break;case 18:HEAP[j]=HEAP[HEAP[k+12]];_PyString_ConcatAndDel(h,HEAP[j]);HEAP[HEAP[k+12]]=HEAP[h];b=HEAP[h]==0?24:19;break;case 19:b=_PyString_FromString(__str102587);HEAP[h]=b;b=HEAP[h]==0?24:20;break;case 20:HEAP[j]=HEAP[HEAP[k+12]+4*(HEAP[k+8]-1)];_PyString_ConcatAndDel(j,HEAP[h]);HEAP[HEAP[k+12]+4*(HEAP[k+8]-1)]=HEAP[j];b=HEAP[j]==0?24:21;break;case 21:b=_PyString_FromString(__str62583);HEAP[h]=b;b=HEAP[h]==0?24:22;break;case 22:l=__PyString_Join(HEAP[h],k);b=HEAP[h]; -HEAP[b]-=1;b=HEAP[b]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=24;break;case 24:b=k!=0?25:27;break;case 25:HEAP[k]-=1;b=HEAP[k]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=27;break;case 27:_Py_ReprLeave(a);d=l;b=28;break;case 28:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _list_length(g){return HEAP[g+8]} -function _list_contains(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h;c=g;d=e;h=f=0;a=-1;b=2;break;case 1:var j=_PyObject_RichCompareBool(d,HEAP[HEAP[c+12]+4*f],2);h=j;f+=1;a=1;b=2;break;case 2:b=(a==1?j:0)!=0?4:3;break;case 3:b=HEAP[c+8]>f?1:4;break;case 4:return b=h;default:assert(0,"bad label: "+b)}} -function _list_item(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=c<0?2:1;break;case 1:b=HEAP[a+8]<=c?2:6;break;case 2:b=HEAP[_indexerr]==0?3:5;break;case 3:b=_PyString_FromString(__str22579);HEAP[_indexerr]=b;b=HEAP[_indexerr]==0?4:5;break;case 4:d=0;b=7;break;case 5:_PyErr_SetObject(HEAP[_PyExc_IndexError],HEAP[_indexerr]);d=0;b=7;break;case 6:HEAP[HEAP[HEAP[a+12]+4*c]]+=1;d=HEAP[HEAP[a+12]+4*c];b=7;break;case 7:return a=d;default:assert(0,"bad label: "+b)}} -function _list_slice(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;a=d<0?1:2;break;case 1:d=0;a=4;break;case 2:a=HEAP[c+8]h?7:8;break;case 7:b=HEAP[j+4*h];HEAP[b]+= -1;HEAP[k+4*h]=b;h+=1;b=HEAP[a+8]>h?7:8;break;case 8:j=HEAP[c+12];k=HEAP[l+12]+4*HEAP[a+8];h=0;b=HEAP[c+8]>h?9:10;break;case 9:b=HEAP[j+4*h];HEAP[b]+=1;HEAP[k+4*h]=b;h+=1;b=HEAP[c+8]>h?9:10;break;case 10:d=l;b=11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}} -function _list_repeat(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;var p=d=e;b=p<0?1:2;break;case 1:k=d=0;b=7;break;case 2:var q=HEAP[c+8]*p;k=q;p!=0?(a=2,b=3):(a=2,b=6);break;case 3:b=(k/d|0)!=HEAP[c+8]?4:5;break;case 4:f=_PyErr_NoMemory();b=19;break;case 5:var r=k,a=5;b=6;break;case 6:b=(a==5?r:q)==0?7:8;break;case 7:f=_PyList_New(0);b=19;break;case 8:l=_PyList_New(k);b=l==0?9:10;break;case 9:f=0;b=19;break;case 10:n=HEAP[l+12];b=HEAP[c+8]==1?11:14;break;case 11:o= -HEAP[HEAP[c+12]];h=0;b=hj?16:17;break;case 16:HEAP[m]=HEAP[n+4*j];HEAP[HEAP[m]]+=1;m+=4;j+=1;b=HEAP[c+8]>j?16:17;break;case 17:h+=1;b=h=0?(b=1,e=2):(b=1,e=6);break;case 2:e=HEAP[(b==3?h:f)+4*c]!=0?4:3;break;case 3:c=b=c-1;var h=d;b>=0?(b=3,e=2):(b=3,e=6);break;case 4:e=HEAP[d+4*c];HEAP[e]-=1;e=HEAP[e]==0?5:3;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+4*c]+4]+24]](HEAP[d+4*c]);e=3;break;case 6:_free(b==1?f:h);e=7;break;case 7:return 0;default:assert(0, -"bad label: "+e)}} -function _list_ass_slice(g,e,b,a){var c=STACKTOP;STACKTOP+=32;_memset(c,0,32);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o=c,p,q,r,u,s,t,v,w,x,y,z;f=g;h=e;j=b;k=a;p=o;u=r=0;y=-1;d=k==0?1:2;break;case 1:s=0;d=13;break;case 2:var C=k;d=f==k?3:8;break;case 3:k=_list_slice(k,0,HEAP[C+8]);d=k==0?4:5;break;case 4:n=y;d=55;break;case 5:y=_list_ass_slice(f,h,j,k);HEAP[k]-=1;d=HEAP[k]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);d=7;break;case 7:n=y;d=55;break;case 8:u=_PySequence_Fast(C, -__str122589);d=u==0?49:9;break;case 9:s=HEAP[u+8];var A=u;d=(HEAP[HEAP[u+4]+84]&33554432)!=0?10:11;break;case 10:m=HEAP[A+12];d=12;break;case 11:m=A+12;d=12;break;case 12:r=m;d=13;break;case 13:d=h<0?14:15;break;case 14:h=0;d=17;break;case 15:d=HEAP[f+8]32?27:34;break;case 27:d=x>=0?28:31;break;case 28:d=x!=0?29:30;break;case 29:l=x;d=32;break;case 30:l=1;d=32;break;case 31:p=0;d=33;break;case 32:p=d=_malloc(l);d=d==0?33:34;break;case 33:_PyErr_NoMemory();d=49;break;case 34:_llvm_memcpy_p0i8_p0i8_i32(p,q+4*h,x,1,0);d=v<0?35:36;break;case 35:_llvm_memmove_p0i8_p0i8_i32(q+4*(v+j),q+4*j,(HEAP[f+8]-j)* -4,1,0);_list_resize(f,v+HEAP[f+8]);q=HEAP[f+12];d=39;break;case 36:d=v>0?37:39;break;case 37:w=HEAP[f+8];d=_list_resize(f,v+w)<0?49:38;break;case 38:q=HEAP[f+12];_llvm_memmove_p0i8_p0i8_i32(q+4*(v+j),q+4*j,(w-j)*4,1,0);d=39;break;case 39:w=0;d=w=0?44:48;break;case 44:d=HEAP[p+4*w]!=0?45:47;break;case 45:d=HEAP[p+4*w];HEAP[d]-=1;d=HEAP[d]== -0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[HEAP[p+4*w]+4]+24]](HEAP[p+4*w]);d=47;break;case 47:w=d=w-1;d=d>=0?44:48;break;case 48:y=0;d=49;break;case 49:d=o!=p?50:51;break;case 50:_free(p);d=51;break;case 51:d=u!=0?52:54;break;case 52:HEAP[u]-=1;d=HEAP[u]==0?53:54;break;case 53:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=54;break;case 54:n=y;d=55;break;case 55:return g=n,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyList_SetSlice(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;f=e;h=b;j=a;c=(HEAP[HEAP[d+4]+84]&33554432)==0?1:2;break;case 1:__PyErr_BadInternalCall(__str2577,715);k=-1;c=3;break;case 2:k=_list_ass_slice(d,f,h,j);c=3;break;case 3:return g=k;default:assert(0,"bad label: "+c)}} -function _list_inplace_repeat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;h=HEAP[a+8];b=h==0?2:1;break;case 1:b=c==1?2:3;break;case 2:HEAP[a]+=1;d=a;b=14;break;case 3:b=c<=0?4:5;break;case 4:_list_clear(a);HEAP[a]+=1;d=a;b=14;break;case 5:b=(2147483647/c|0)=j?28:30;break;case 28:b=_list_resize(a,l)==-1?44:29;break;case 29:HEAP[a+8]=j;b=30;break;case 30:q=b=FUNCTION_TABLE[n](h); -b=b==0?31:35;break;case 31:b=_PyErr_Occurred()!=0?32:34;break;case 32:b=_PyErr_ExceptionMatches(HEAP[_PyExc_StopIteration])!=0?33:44;break;case 33:_PyErr_Clear();b=34;break;case 34:b=HEAP[a+8]>1);var r=HEAP[o],u=q;c=k==0?4:5;break;case 4:var s=_PyObject_RichCompareBool(u,r,0),d=4;c=6;break;case 5:var t=_islt(u,r,k),d=5;c=6;break;case 6:m=c=d==5?t:s;c=c<0?16:7;break;case 7:var v=o;c=m!=0?8:9;break;case 8:p=v;c=10;break;case 9:n=v+4;c=10;break;case 10:c=nn?12:13;break;case 12:HEAP[o]=HEAP[o+-4];o+=-4;c=o>n?12:13;break;case 13:HEAP[n]=q;j+=4;c=14;break;case 14:c=jr?15:16;break;case 15:o=r;d=16;break;case 16:p=l+p;o=l+o;d=29;break;case 17:u=l+1;d=25;break;case 18:var G=HEAP[j+4*(0-o)],E=h;d=m==0?19:20;break;case 19:var D=_PyObject_RichCompareBool(G,E,0),f=19;d=21;break;case 20:var R=_islt(G,E,m),f=20;d=21;break;case 21:q=d=f==20?R:D;d=d<0?39:22;break;case 22:d=q!=0?26:23;break;case 23:p=o;o=o*2+ -1;d=o<=0?24:25;break;case 24:o=u;d=25;break;case 25:d=ou?27:28;break;case 27:o=u;d=28;break;case 28:q=p;p=l-o;o=l-q;d=29;break;case 29:j+=4*(0-l);p+=1;d=37;break;case 30:s=(V-p>>1)+p;var M=HEAP[j+4*s],L=h;d=m==0?31:32;break;case 31:var I=_PyObject_RichCompareBool(M,L,0),f=31;d=33;break;case 32:var J=_islt(M,L,m),f=32;d=33;break;case 33:q=d=f==32?J:I;d=d<0?39:34;break;case 34:var F=s;d=q!=0?35:36;break;case 35:p=F+1;d=37;break;case 36:o=F;d=37;break;case 37:var V=o;d=pr?15:16;break;case 15:o=r;d=16;break;case 16:q=p;p=l-o;o=l-q;d=29;break;case 17:u=k-l;d=25;break;case 18:var G=HEAP[j+4*o],E=h;d=m==0?19:20;break;case 19:var D=_PyObject_RichCompareBool(E,G,0),f=19;d=21;break;case 20:var R=_islt(E,G,m),f=20;d=21;break;case 21:q=d=f==20?R:D;d=d<0?39:22;break;case 22:d=q!=0?26:23;break;case 23:p= -o;o=o*2+1;d=o<=0?24:25;break;case 24:o=u;d=25;break;case 25:d=ou?27:28;break;case 27:o=u;d=28;break;case 28:p=l+p;o=l+o;d=29;break;case 29:j+=4*(0-l);p+=1;d=37;break;case 30:s=(V-p>>1)+p;var M=HEAP[j+4*s],L=h;d=m==0?31:32;break;case 31:var I=_PyObject_RichCompareBool(L,M,0),f=31;d=33;break;case 32:var J=_islt(L,M,m),f=32;d=33;break;case 33:q=d=f==32?J:I;d=d<0?39:34;break;case 34:var F=s;d=q!=0?35:36;break;case 35:o=F;d=37;break;case 36:p=F+1;d=37;break;case 37:var V=o;d= -p=c?1:2;break;case 1:d=0;b=7;break;case 2:_merge_freemem(a);b=c>536870911?3:4;break;case 3:_PyErr_NoMemory();d=-1;b=7;break;case 4:b=_PyMem_Malloc(c*4);HEAP[a+8]=b;b=HEAP[a+8]!=0?5:6;break;case 5:HEAP[a+12]=c;d=0;b=7;break;case 6:_PyErr_NoMemory();_merge_freemem(a);d=-1;b=7;break;case 7:return a=d;default:assert(0,"bad label: "+b)}} -function _merge_lo(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t;h=g;j=e;k=b;l=a;m=c;r=-1;d=HEAP[h+12]=u?16:7;break;case 14:HEAP[q]=HEAP[j];q+=4;j+=4;s+=1;t=0;k-=1;d=k==1?33:15;break;case 15:d=s>=u?16:7;break;case 16:u+=1;d=17;break;case 17:u-=u>1;HEAP[h+4]=u;s=o=d=_gallop_right(HEAP[l],j,k,0,p);d=d!=0?18:21;break;case 18:d=o<0?30:19;break;case 19:_llvm_memcpy_p0i8_p0i8_i32(q,j,o*4,1,0);q+=4*o; -j+=4*o;k-=o;d=k==1?33:20;break;case 20:d=k==0?29:21;break;case 21:HEAP[q]=HEAP[l];q+=4;l+=4;m=d=m-1;d=d==0?29:22;break;case 22:t=o=_gallop_left(HEAP[j],l,m,0,p);d=o!=0?23:25;break;case 23:d=o<0?30:24;break;case 24:_llvm_memmove_p0i8_p0i8_i32(q,l,o*4,1,0);q+=4*o;l+=4*o;m-=o;d=m==0?29:25;break;case 25:HEAP[q]=HEAP[j];q+=4;j+=4;k=d=k-1;d=d==1?33:26;break;case 26:d=s>6?17:27;break;case 27:d=t>6?17:28;break;case 28:u+=1;HEAP[h+4]=u;d=6;break;case 29:r=0;d=30;break;case 30:d=k!=0?31:32;break;case 31:_llvm_memcpy_p0i8_p0i8_i32(q, -j,k*4,1,0);d=32;break;case 32:n=r;d=34;break;case 33:_llvm_memmove_p0i8_p0i8_i32(q,l,m*4,1,0);HEAP[q+4*m]=HEAP[j];n=0;d=34;break;case 34:return g=n;default:assert(0,"bad label: "+d)}} -function _merge_hi(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v,w;h=g;j=e;k=b;l=a;m=c;r=-1;d=HEAP[h+12]=t?16:7;break;case 14:HEAP[q]=HEAP[l];q+=-4;l+=-4;w+=1;v=0;m-=1;d=m==1?33:15;break;case 15:d=w>=t?16:7;break;case 16:t+=1;d=17;break;case 17:t-=t>1;HEAP[h+4]=t;o=d=_gallop_right(HEAP[l],u,k,k-1,p);d=d<0?30:18;break;case 18:v=o=k-o;d=o!= -0?19:20;break;case 19:q+=4*(0-o);j+=4*(0-o);_llvm_memmove_p0i8_p0i8_i32(q+4,j+4,o*4,1,0);k-=o;d=k==0?29:20;break;case 20:HEAP[q]=HEAP[l];q+=-4;l+=-4;m=d=m-1;d=d==1?33:21;break;case 21:o=_gallop_left(HEAP[j],s,m,m-1,p);d=o<0?30:22;break;case 22:w=o=m-o;d=o!=0?23:25;break;case 23:q+=4*(0-o);l+=4*(0-o);_llvm_memcpy_p0i8_p0i8_i32(q+4,l+4,o*4,1,0);m-=o;d=m==1?33:24;break;case 24:d=m==0?29:25;break;case 25:HEAP[q]=HEAP[j];q+=-4;j+=-4;k=d=k-1;d=d==0?29:26;break;case 26:d=v>6?17:27;break;case 27:d=w>6?17: -28;break;case 28:t+=1;HEAP[h+4]=t;d=6;break;case 29:r=0;d=30;break;case 30:d=m!=0?31:32;break;case 31:_llvm_memcpy_p0i8_p0i8_i32(q+4*(1-m),s,m*4,1,0);d=32;break;case 32:n=r;d=34;break;case 33:q+=4*(0-k);j+=4*(0-k);_llvm_memmove_p0i8_p0i8_i32(q+4,j+4,k*4,1,0);HEAP[q]=HEAP[l];n=0;d=34;break;case 34:return g=n;default:assert(0,"bad label: "+d)}} -function _merge_at(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j,k,l,m,n,o;c=g;d=e;j=HEAP[c+20+d*8];l=HEAP[c+20+d*8+4];k=HEAP[c+20+(d+1)*8];m=HEAP[c+20+(d+1)*8+4];HEAP[c+20+d*8+4]=m+l;a=HEAP[c+16]-3==d?1:2;break;case 1:HEAP[h]=HEAP[c+20+(d+2)*8];HEAP[h+4]=HEAP[c+20+(d+2)*8+4];HEAP[c+20+(d+1)*8]=HEAP[h];HEAP[c+20+(d+1)*8+4]=HEAP[h+4];a=2;break;case 2:HEAP[c+16]-=1;o=HEAP[c];n=a=_gallop_right(HEAP[k],j,l,0,o);a=a<0?3:4;break;case 3:f=-1;a=11;break; -case 4:j+=4*n;l-=n;a=l==0?5:6;break;case 5:f=0;a=11;break;case 6:m=_gallop_left(HEAP[j+4*(l-1)],k,m,m-1,o);a=m<=0?7:8;break;case 7:f=m;a=11;break;case 8:var p=c,q=j,r=l,u=k,s=m;a=l<=m?9:10;break;case 9:f=_merge_lo(p,q,r,u,s);a=11;break;case 10:f=_merge_hi(p,q,r,u,s);a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _merge_collapse(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=b+20;e=10;break;case 1:d=HEAP[b+16]-2;e=d<=0?7:2;break;case 2:e=HEAP[c+8*(d-1)+4]>HEAP[c+8*(d+1)+4]+HEAP[c+8*d+4]?7:3;break;case 3:e=HEAP[c+8*(d-1)+4]1?1:11;break;case 11:a=0; -e=12;break;case 12:return g=a;default:assert(0,"bad label: "+e)}}function _merge_force_collapse(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=b+20;e=6;break;case 1:d=HEAP[b+16]-2;e=d>0?2:4;break;case 2:e=HEAP[c+8*(d-1)+4]1?1:7;break;case 7:a=0;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _merge_compute_minrun(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c;a=g;c=0;var d=a;g>63?(b=-1,e=1):(b=-1,e=2);break;case 1:c|=(b==1?f:d)&1;var f=a=e=a>>1;e>63?e=b=1:(b=1,e=2);break;case 2:return g=c+(b==-1?d:f);default:assert(0,"bad label: "+e)}} -function _sortwrapper_richcompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=HEAP[d+4]!=_sortwrapper_type?1:3;break;case 1:a=_PyType_IsSubtype(HEAP[d+4],_sortwrapper_type)==0?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_TypeError],__str202597);h=0;a=4;break;case 3:h=_PyObject_RichCompare(HEAP[c+8],HEAP[d+8],f);a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _sortwrapper_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:e=HEAP[b+12]!=0?4:6;break;case 4:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=6;break;case 6:_PyObject_Free(b);return;default:assert(0,"bad label: "+e)}} -function _build_sortwrapper(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=__PyObject_New(_sortwrapper_type);b=f==0?1:2;break;case 1:d=0;b=3;break;case 2:HEAP[f+8]=a;HEAP[f+12]=c;d=f;b=3;break;case 3:return b=d;default:assert(0,"bad label: "+b)}} -function _sortwrapper_getvalue(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_sortwrapper_type?1:3;break;case 1:e=_PyType_IsSubtype(HEAP[b+4],_sortwrapper_type)==0?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_TypeError],__str202597);a=0;e=4;break;case 3:e=HEAP[b+12];HEAP[e]+=1;a=e;e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _cmpwrapper_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_PyObject_Free(b);return;default:assert(0,"bad label: "+e)}} -function _cmpwrapper_call(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=_PyArg_UnpackTuple(e,__str212598,2,2,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=8;break;case 2:a=HEAP[HEAP[f]+4]==_sortwrapper_type?4:3;break;case 3:a=_PyType_IsSubtype(HEAP[HEAP[f]+4],_sortwrapper_type)==0?6:4;break;case 4:a=HEAP[HEAP[h]+4]==_sortwrapper_type?7:5;break;case 5:a=_PyType_IsSubtype(HEAP[HEAP[h]+ -4],_sortwrapper_type)==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str202597);d=0;a=8;break;case 7:a=HEAP[HEAP[f]+8];d=HEAP[HEAP[h]+8];d=_PyObject_CallFunctionObjArgs(HEAP[c+8],allocate([a,0,0,0,d,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=8;break;case 8:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _build_cmpwrapper(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=__PyObject_New(_cmpwrapper_type);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:HEAP[b]+=1;HEAP[c+8]=b;a=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _listsort(g,e,b){var a=STACKTOP;STACKTOP+=1740;_memset(a,0,1740);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l=a,m,n,o,p,q,r,u,s,t=a+1724,v,w=a+1728,x=a+1732,y,z,C,A,G=a+1736,E,D;f=g;h=e;j=b;v=HEAP[t]=0;HEAP[w]=0;HEAP[x]=0;c=h!=0?1:3;break;case 1:c=_PyArg_ParseTupleAndKeywords(h,j,__str232600,_kwlist_10412,allocate([t,0,0,0,x,0,0,0,w,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?2:3;break;case 2:k=0;c=66;break;case 3:c=HEAP[t]== -__Py_NoneStruct?4:5;break;case 4:HEAP[t]=0;c=5;break;case 5:c=HEAP[t]!=0&HEAP[_Py_Py3kWarningFlag]!=0?6:8;break;case 6:c=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str272604,1)<0?7:8;break;case 7:k=0;c=66;break;case 8:c=HEAP[x]==__Py_NoneStruct?9:10;break;case 9:HEAP[x]=0;c=10;break;case 10:c=HEAP[t]==0?16:11;break;case 11:var R=HEAP[t];c=HEAP[x]==0?14:12;break;case 12:c=_build_cmpwrapper(R);HEAP[t]=c;c=HEAP[t]==0?13:16;break;case 13:k=0;c=66;break;case 14:c=R!=0?15:16;break;case 15:HEAP[HEAP[t]]+= -1;c=16;break;case 16:q=HEAP[f+8];u=HEAP[f+12];r=HEAP[f+16];HEAP[f+8]=0;HEAP[f+12]=0;HEAP[f+16]=-1;c=HEAP[x]!=0?17:26;break;case 17:y=0;c=25;break;case 18:C=HEAP[u+4*y];z=_PyObject_CallFunctionObjArgs(HEAP[x],allocate([C,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=z==0?19:23;break;case 19:y=c=y-1;c=c>=0?20:53;break;case 20:A=HEAP[u+4*y];C=_sortwrapper_getvalue(A);HEAP[u+4*y]=C;HEAP[A]-=1;c=HEAP[A]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[A+4]+24]](A);c=22;break; -case 22:y=c=y-1;c=c>=0?20:53;break;case 23:A=_build_sortwrapper(z,C);c=A==0?53:24;break;case 24:HEAP[u+4*y]=A;y+=1;c=25;break;case 25:c=y1?28:29;break;case 28:_reverse_slice(u,u+4*q);c=29;break;case 29:_merge_init(l,HEAP[t]);o=q;c=q<=1?40:30;break;case 30:m=u;n=m+4*o;p=_merge_compute_minrun(o);var M=l+16,L=l+20,I=l+16,J=l+20,F=l+16,V=l+16;c=31;break;case 31:E=c=_count_run(m,n,HEAP[t],G);c=c<0?41:32;break;case 32:c=HEAP[G]!=0?33:34;break; -case 33:_reverse_slice(m,m+4*E);c=34;break;case 34:c=E1?51:52;break;case 51:_reverse_slice(u,u+4*q);c=52;break;case 52:_merge_freemem(l);c=53;break;case 53:s=HEAP[f+12];y=HEAP[f+8];HEAP[f+8]=q;HEAP[f+12]=u;HEAP[f+16]=r;c=s!=0?54:60; -break;case 54:y=d=y-1;var Q=s;d>=0?(d=54,c=55):(d=54,c=59);break;case 55:c=HEAP[(d==56?Z:Q)+4*y]!=0?57:56;break;case 56:y=d=y-1;var Z=s;d>=0?(d=56,c=55):(d=56,c=59);break;case 57:c=HEAP[s+4*y];HEAP[c]-=1;c=HEAP[c]==0?58:56;break;case 58:FUNCTION_TABLE[HEAP[HEAP[HEAP[s+4*y]+4]+24]](HEAP[s+4*y]);c=56;break;case 59:_free(d==54?Q:Z);c=60;break;case 60:c=HEAP[t]!=0?61:63;break;case 61:c=HEAP[t];HEAP[c]-=1;c=HEAP[c]==0?62:63;break;case 62:FUNCTION_TABLE[HEAP[HEAP[HEAP[t]+4]+24]](HEAP[t]);c=63;break;case 63:c= -v!=0?64:65;break;case 64:HEAP[v]+=1;c=65;break;case 65:k=v;c=66;break;case 66:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyList_Sort(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&33554432)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str2577,2218);a=-1;e=8;break;case 3:b=_listsort(b,0,0);e=b==0?4:5;break;case 4:a=-1;e=8;break;case 5:HEAP[b]-=1;e=HEAP[b]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);e=7;break;case 7:a=0;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _listreverse(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]>1?1:2;break;case 1:_reverse_slice(HEAP[b+12],HEAP[b+12]+4*HEAP[b+8]);e=2;break;case 2:return HEAP[__Py_NoneStruct]+=1,g=__Py_NoneStruct;default:assert(0,"bad label: "+e)}} -function _PyList_Reverse(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;c=b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&33554432)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str2577,2242);a=-1;e=6;break;case 3:e=HEAP[c+8]>1?4:5;break;case 4:_reverse_slice(HEAP[c+12],HEAP[c+12]+4*HEAP[c+8]);e=5;break;case 5:a=0;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PyList_AsTuple(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&33554432)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str2577,2257);a=0;e=8;break;case 3:h=HEAP[b+8];c=_PyTuple_New(h);e=c==0?4:5;break;case 4:a=0;e=8;break;case 5:d=c+12;f=HEAP[b+12];h=e=h-1;e=e>=0?6:7;break;case 6:HEAP[HEAP[f]]+=1;HEAP[d]=HEAP[f];d+=4;f+=4;h=e=h-1;e=e>=0?6:7;break;case 7:a=c;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _listindex(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k=b+8,l,m,n;c=g;a=e;HEAP[h]=0;HEAP[j]=HEAP[c+8];a=_PyArg_ParseTuple(a,__str292606,allocate([k,0,0,0,88,0,0,0,h,0,0,0,88,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"i32 (%struct.NullImporter*, i32*)*",0,0,0,"i32*",0,0,0,"i32 (%struct.NullImporter*, i32*)*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=28;break;case 2:a=HEAP[h]<0?3:5;break;case 3:HEAP[h]+=HEAP[c+ -8];a=HEAP[h]<0?4:5;break;case 4:HEAP[h]=0;a=5;break;case 5:a=HEAP[j]<0?6:8;break;case 6:HEAP[j]+=HEAP[c+8];a=HEAP[j]<0?7:8;break;case 7:HEAP[j]=0;a=8;break;case 8:f=HEAP[h];a=14;break;case 9:n=_PyObject_RichCompareBool(HEAP[HEAP[c+12]+4*f],HEAP[k],2);a=n>0?10:11;break;case 10:d=_PyInt_FromSsize_t(f);a=28;break;case 11:a=n<0?12:13;break;case 12:d=0;a=28;break;case 13:f+=1;a=14;break;case 14:a=f>=HEAP[j]?16:15;break;case 15:a=HEAP[c+8]>f?9:16;break;case 16:a=HEAP[_err_format_10677]==0?17:19;break;case 17:a= -_PyString_FromString(__str302607);HEAP[_err_format_10677]=a;a=HEAP[_err_format_10677]==0?18:19;break;case 18:d=0;a=28;break;case 19:l=a=_PyTuple_Pack(1,allocate([HEAP[k],0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));a=a==0?20:21;break;case 20:d=0;a=28;break;case 21:m=_PyString_Format(HEAP[_err_format_10677],l);HEAP[l]-=1;a=HEAP[l]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=23;break;case 23:a=m==0?24:25;break;case 24:d=0;a=28;break;case 25:_PyErr_SetObject(HEAP[_PyExc_ValueError], -m);HEAP[m]-=1;a=HEAP[m]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=27;break;case 27:d=0;a=28;break;case 28:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _listcount(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=f=0;b=6;break;case 1:j=_PyObject_RichCompareBool(HEAP[HEAP[a+12]+4*h],c,2);b=j>0?2:3;break;case 2:f+=1;b=5;break;case 3:b=j<0?4:5;break;case 4:d=0;b=8;break;case 5:h+=1;b=6;break;case 6:b=HEAP[a+8]>h?1:7;break;case 7:d=_PyInt_FromSsize_t(f);b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _listremove(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=0;b=8;break;case 1:h=_PyObject_RichCompareBool(HEAP[HEAP[a+12]+4*f],c,2);b=h>0?2:5;break;case 2:b=_list_ass_slice(a,f,f+1,0)==0?3:4;break;case 3:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=10;break;case 4:d=0;b=10;break;case 5:b=h<0?6:7;break;case 6:d=0;b=10;break;case 7:f+=1;b=8;break;case 8:b=HEAP[a+8]>f?1:9;break;case 9:_PyErr_SetString(HEAP[_PyExc_ValueError],__str312608);d=0;b=10;break;case 10:return b=d;default:assert(0, -"bad label: "+b)}}function _list_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[c+8];a=4;break;case 1:a=HEAP[HEAP[c+12]+4*j]!=0?2:4;break;case 2:k=FUNCTION_TABLE[d](HEAP[HEAP[c+12]+4*j],f);a=k!=0?3:4;break;case 3:h=k;a=6;break;case 4:j=a=j-1;a=a>=0?1:5;break;case 5:h=0;a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}} -function _list_richcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r;d=g;f=e;h=b;a=(HEAP[HEAP[d+4]+84]&33554432)==0?2:1;break;case 1:a=(HEAP[HEAP[f+4]+84]&33554432)==0?2:3;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;a=35;break;case 3:k=d;l=f;a=HEAP[k+8]!=HEAP[l+8]?4:9;break;case 4:a=h==2|h==3?5:9;break;case 5:a=h==2?6:7;break;case 6:n=__Py_ZeroStruct;a=8;break;case 7:n=__Py_TrueStruct;a=8;break;case 8:HEAP[n]+=1;j=n;a=35;break;case 9:m= -0;a=14;break;case 10:o=_PyObject_RichCompareBool(HEAP[HEAP[k+12]+4*m],HEAP[HEAP[l+12]+4*m],2);a=o<0?11:12;break;case 11:j=0;a=35;break;case 12:a=o==0?16:13;break;case 13:m+=1;a=14;break;case 14:a=HEAP[k+8]<=m?16:15;break;case 15:a=HEAP[l+8]>m?10:16;break;case 16:a=HEAP[k+8]<=m?18:17;break;case 17:a=HEAP[l+8]<=m?18:30;break;case 18:p=HEAP[k+8];q=HEAP[l+8];a=h;a=a==0?19:a==1?20:a==2?21:a==3?22:a==4?23:a==5?24:25;break;case 19:var u=pq,c=23;a=26;break;case 24:var x=p>=q,c=24;a=26;break;case 25:j=0;a=35;break;case 26:a=(c==24?x:c==23?w:c==22?v:c==21?t:c==20?s:u)!=0?27:28;break;case 27:r=__Py_TrueStruct;a=29;break;case 28:r=__Py_ZeroStruct;a=29;break;case 29:HEAP[r]+=1;j=r;a=35;break;case 30:a=h==2?31:32;break;case 31:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=35;break;case 32:a=h==3?33:34;break;case 33:HEAP[__Py_TrueStruct]+=1;j=__Py_TrueStruct;a=35;break; -case 34:j=_PyObject_RichCompare(HEAP[HEAP[k+12]+4*m],HEAP[HEAP[l+12]+4*m],h);a=35;break;case 35:return g=j;default:assert(0,"bad label: "+a)}} -function _list_init(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k;d=g;c=e;f=b;HEAP[j]=0;c=_PyArg_ParseTupleAndKeywords(c,f,__str322609,_kwlist_10924,allocate([j,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=-1;c=10;break;case 2:c=HEAP[d+12]!=0?3:4;break;case 3:_list_clear(d);c=4;break;case 4:c=HEAP[j]!=0?5:9;break;case 5:k=_listextend(d,HEAP[j]);c=k==0?6:7;break;case 6:h=-1;c=10;break;case 7:HEAP[k]-=1;c=HEAP[k]== -0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);c=9;break;case 9:h=0;c=10;break;case 10:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _list_sizeof(g){return _PyInt_FromSsize_t(HEAP[g+16]*4+20)} -function _list_subscript(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k=b,l=b+4,m=b+8,n=b+12,o,p,q,r,u;d=g;f=e;a=HEAP[HEAP[f+4]+48]==0?10:1;break;case 1:a=(HEAP[HEAP[f+4]+84]&131072)==0?10:2;break;case 2:a=HEAP[HEAP[HEAP[f+4]+48]+152]==0?10:3;break;case 3:var s=j=_PyNumber_AsSsize_t(f,HEAP[_PyExc_IndexError]);s==-1?(c=3,a=4):(c=3,a=7);break;case 4:a=_PyErr_Occurred()!=0?5:6;break;case 5:h=0;a=23;break;case 6:var t=j,c=6;a=7;break;case 7:a= -(c==6?t:s)<0?8:9;break;case 8:j+=HEAP[d+8];a=9;break;case 9:h=_list_item(d,j);a=23;break;case 10:a=HEAP[f+4]==_PySlice_Type?11:22;break;case 11:a=_PySlice_GetIndicesEx(f,HEAP[d+8],k,l,m,n)<0?12:13;break;case 12:h=0;a=23;break;case 13:a=HEAP[n]<=0?14:15;break;case 14:h=_PyList_New(0);a=23;break;case 15:a=HEAP[m]==1?16:17;break;case 16:h=_list_slice(d,HEAP[k],HEAP[l]);a=23;break;case 17:q=_PyList_New(HEAP[n]);a=q==0?18:19;break;case 18:h=0;a=23;break;case 19:r=HEAP[d+12];u=HEAP[q+12];o=HEAP[k];p=0; -a=p=0?(d=15,c=18):(d=15,c=16);break;case 16:c=HEAP[p]HEAP[q]?20:21;break;case 20:HEAP[q]=HEAP[p];c=21;break;case 21:c=j==0?22:44;break;case 22:c=HEAP[u]<=0?23:24;break;case 23:n=0;c=79;break;case 24:c=HEAP[r]<0?25:26;break;case 25:HEAP[q]=HEAP[p]+1;HEAP[p]=HEAP[q]+-1+(HEAP[u]-1)*HEAP[r];HEAP[r]=0-HEAP[r];c=26;break;case 26:c=HEAP[u]*4>=0?27:30;break;case 27:c=HEAP[u]*4!=0?28:29;break;case 28:m=HEAP[u]*4;c=31;break;case 29:m=1;c=31;break;case 30:s=0;c=32;break;case 31:s=c=_malloc(m);c=c==0?32:33;break;case 32:_PyErr_NoMemory(); -n=-1;c=79;break;case 33:t=HEAP[p];v=0;c=HEAP[q]>t?34:37;break;case 34:w=HEAP[r]-1;HEAP[s+4*v]=HEAP[HEAP[f+12]+4*t];c=t+HEAP[r]>=HEAP[f+8]?35:36;break;case 35:w=HEAP[f+8]+-1+(0-t);c=36;break;case 36:_llvm_memmove_p0i8_p0i8_i32(HEAP[f+12]+4*t+4*(0-v),HEAP[f+12]+4*t+4,w*4,1,0);t+=HEAP[r];v+=1;c=HEAP[q]>t?34:37;break;case 37:t=HEAP[r]*HEAP[u]+HEAP[p];c=HEAP[f+8]>t?38:39;break;case 38:_llvm_memmove_p0i8_p0i8_i32(HEAP[f+12]+4*t+4*(0-HEAP[u]),HEAP[f+12]+4*t,(HEAP[f+8]-t)*4,1,0);c=39;break;case 39:HEAP[f+ -8]-=HEAP[u];_list_resize(f,HEAP[f+8]);v=0;var L=s;v=0?58:61;break;case 58:c=HEAP[u]*4!=0?59:60;break;case 59:l=HEAP[u]*4;c=62;break;case 60:l=1;c=62;break;case 61:y=0;c=63;break;case 62:y=c=_malloc(l);c=c==0?63:66;break;case 63:HEAP[x]-=1;c=HEAP[x]==0?64:65;break;case 64:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);c=65;break;case 65:_PyErr_NoMemory();n=-1;c=79;break;case 66:C=HEAP[f+12];var Z=x;c=(HEAP[HEAP[x+4]+84]&33554432)!=0?67:68;break;case 67:k=HEAP[Z+12];c=69;break;case 68:k=Z+12;c=69;break;case 69:z=k;A=HEAP[p];G=0;c=G< -HEAP[u]?70:71;break;case 70:HEAP[y+4*G]=HEAP[C+4*A];c=HEAP[z+4*G];HEAP[c]+=1;HEAP[C+4*A]=c;A+=HEAP[r];G+=1;c=G=0?2:3;break;case 2:a=_PyInt_FromSsize_t(c);e=4;break;case 3:a=_PyInt_FromLong(0);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _list_reversed(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=__PyObject_GC_New(_PyListRevIter_Type);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:HEAP[c+8]=HEAP[b+8]-1;HEAP[b]+=1;HEAP[c+12]=b;_PyObject_GC_Track(c);a=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _listreviter_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_PyObject_GC_UnTrack(b);e=HEAP[b+12]!=0?1:3;break;case 1:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=3;break;case 3:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}} -function _listreviter_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+12]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+12],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=0;a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _listreviter_next(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=HEAP[b+8];d=HEAP[b+12];e=c>=0?1:3;break;case 1:e=HEAP[d+8]>c?2:3;break;case 2:e=HEAP[HEAP[d+12]+4*c];HEAP[b+8]-=1;HEAP[e]+=1;a=e;e=7;break;case 3:HEAP[b+8]=-1;e=d!=0?4:6;break;case 4:HEAP[b+12]=0;HEAP[d]-=1;e=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=6;break;case 6:a=0;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _listreviter_len(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[b+8]+1;e=HEAP[b+12]==0?2:1;break;case 1:e=HEAP[HEAP[b+12]+8]=0?HEAP[a+8]:0-HEAP[a+8];f=h;b=-1;e=2;break;case 1:var j=f-1;f=j;b=1;e=2;break;case 2:e=(b==1?j:h)<=0?4:3;break;case 3:e=HEAP[a+12+(f-1)*2]==0?1:4;break;case 4:e=f!=d?5:9;break;case 5:var k=a,l=f;e=HEAP[a+8]<0?6:7;break;case 6:c=0-l;e=8;break;case 7:c=l;e=8;break;case 8:HEAP[k+8]=c;e=9;break;case 9:return g=a;default:assert(0,"bad label: "+e)}} -function __PyLong_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=b>1073741817?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str2643);d=0;e=9;break;case 2:e=(HEAP[_PyLong_Type+16]+3+b*HEAP[_PyLong_Type+20]&-4)>=0?3:7;break;case 3:e=(HEAP[_PyLong_Type+16]+3+b*HEAP[_PyLong_Type+20]&-4)!=0?4:5;break;case 4:a=HEAP[_PyLong_Type+16]+3+b*HEAP[_PyLong_Type+20]&-4;e=6;break;case 5:a=1;e=6;break;case 6:c=_malloc(a);e=8;break;case 7:c=0;e=8;break;case 8:d=_PyObject_InitVar(c,_PyLong_Type, -b);e=9;break;case 9:return g=d;default:assert(0,"bad label: "+e)}}function __PyLong_Copy(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[b+8];e=c<0?1:2;break;case 1:c=0-c;e=2;break;case 2:a=e=__PyLong_New(c);e=e!=0?3:5;break;case 3:HEAP[a+8]=HEAP[b+8];c=e=c-1;e=e>=0?4:5;break;case 4:HEAP[a+12+c*2]=HEAP[b+12+c*2];c=e=c-1;e=e>=0?4:5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _PyLong_FromLong(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k;e=g;j=h=0;var l=e;e=e<0?1:2;break;case 1:var m=0-l&4294967295;d=m;b=j=1;e=3;break;case 2:d=l;b=2;e=3;break;case 3:f=b=b==2?l:m;var n=h;b!=0?(b=3,e=4):(b=3,e=5);break;case 4:h=(b==4?o:n)+1;f=b=f>>>15;var o=h;b!=0?e=b=4:(b=4,e=5);break;case 5:c=e=__PyLong_New(b==3?n:o);e=e!=0?6:11;break;case 6:k=c+12;var p=h;e=j!=0?7:8;break;case 7:a=0-p;e=9;break;case 8:a=p;e=9;break;case 9:HEAP[c+8]=a;f=d;e=d!=0?10:11;break;case 10:HEAP[k]= -f&32767;k+=2;f=e=f>>>15;e=e!=0?10:11;break;case 11:return g=c;default:assert(0,"bad label: "+e)}} -function _PyLong_FromUnsignedLong(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h;a=g;f=0;d=a;var j=f;a!=0?(b=-1,e=1):(b=-1,e=2);break;case 1:f=(b==1?k:j)+1;d=b=d>>>0>>>15;var k=f;b!=0?e=b=1:(b=1,e=2);break;case 2:c=e=__PyLong_New(b==-1?j:k);e=e!=0?3:5;break;case 3:h=c+12;HEAP[c+8]=f;e=a!=0?4:5;break;case 4:HEAP[h]=a&32767;h+=2;a=e=a>>>0>>>15;e=e!=0?4:5;break;case 5:return g=c;default:assert(0,"bad label: "+e)}} -function _PyLong_FromDouble(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k=e,l;a=g;l=0;b=___isinf(a)!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str12644);c=0;b=15;break;case 2:b=___isnan(a)!=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str22645);c=0;b=15;break;case 4:b=a<0?5:6;break;case 5:l=1;a=0-a;b=6;break;case 6:f=_frexp(a,k);b=HEAP[k]<=0?7:8;break;case 7:c=_PyLong_FromLong(0);b=15;break;case 8:j=((HEAP[k]- -1)/15|0)+1;d=__PyLong_New(j);b=d==0?9:10;break;case 9:c=0;b=15;break;case 10:f=_ldexp(f,(HEAP[k]-1)%15+1);h=j;h=b=h-1;b=b>=0?11:12;break;case 11:b=Math.floor(f);HEAP[d+12+h*2]=b;f-=b;f=_ldexp(f,15);h=b=h-1;b=b>=0?11:12;break;case 12:b=l!=0?13:14;break;case 13:HEAP[d+8]=0-HEAP[d+8];b=14;break;case 14:c=d;b=15;break;case 15:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyLong_AsLongAndOverflow(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;n=0;HEAP[d]=0;b=c==0?1:2;break;case 1:__PyErr_BadInternalCall(__str32646,244);f=-1;b=35;break;case 2:var p=c;b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 3:f=_PyInt_AsLong(p);b=35;break;case 4:b=(HEAP[HEAP[p+4]+84]&16777216)==0?5:16;break;case 5:o=HEAP[HEAP[c+4]+48];b=o==0?7:6;break;case 6:b=HEAP[o+72]==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str42647);f=-1;b= -35;break;case 8:c=FUNCTION_TABLE[HEAP[o+72]](c);b=c==0?9:10;break;case 9:f=-1;b=35;break;case 10:n=1;var q=c;b=(HEAP[HEAP[c+4]+84]&8388608)!=0?11:12;break;case 11:k=_PyInt_AsLong(q);b=31;break;case 12:b=(HEAP[HEAP[q+4]+84]&16777216)==0?13:16;break;case 13:HEAP[c]-=1;b=HEAP[c]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=15;break;case 15:_PyErr_SetString(HEAP[_PyExc_TypeError],__str52648);f=-1;b=35;break;case 16:k=-1;h=c;l=b=HEAP[h+8];b=b==-1?17:b==0?18:b==1?19:20;break;case 17:k= -0-HEAP[h+12];b=31;break;case 18:k=0;b=31;break;case 19:k=HEAP[h+12];b=31;break;case 20:m=1;j=0;l<0?(a=20,b=21):(a=20,b=24);break;case 21:m=-1;l=0-l;var r=j,a=21;b=24;break;case 22:var a=s,u=j=HEAP[h+12+l*2]+j*32768;(u>>>0>>>15|0)!=(a|0)?(a=22,b=23):(a=22,b=24);break;case 23:HEAP[d]=m;b=31;break;case 24:var s=a==22?u:a==20?0:r;l=b=l-1;b=b>=0?22:25;break;case 25:b=s>=0?26:27;break;case 26:k=m*j;b=31;break;case 27:b=m>=0?30:28;break;case 28:b=j!=-2147483648?30:29;break;case 29:k=-2147483648;b=31;break; -case 30:HEAP[d]=m;b=31;break;case 31:b=n!=0?32:34;break;case 32:HEAP[c]-=1;b=HEAP[c]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=34;break;case 34:f=k;b=35;break;case 35:return c=f;default:assert(0,"bad label: "+b)}} -function _PyLong_AsLong(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:b=e;var a;a=_PyLong_AsLongAndOverflow(g,b);b=HEAP[b]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str62649);b=2;break;case 2:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyLong_AsSsize_t(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j;a=g;e=a==0?2:1;break;case 1:e=(HEAP[HEAP[a+4]+84]&16777216)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str32646,353);c=-1;e=13;break;case 3:d=a;h=HEAP[d+8];j=1;f=0;h<0?(b=3,e=4):(b=3,e=6);break;case 4:j=-1;h=0-h;var k=f,b=4;e=6;break;case 5:var b=m,l=f=HEAP[d+12+h*2]|f<<15;l>>>15!=b?(b=5,e=12):(b=5,e=6);break;case 6:var m=b==5?l:b==3?0:k;h=e=h-1;e=e>=0?5:7;break;case 7:e=m>=0?8:9;break;case 8:c=j*f;e=13;break; -case 9:e=j<0?10:12;break;case 10:e=f==-2147483648?11:12;break;case 11:c=-2147483648;e=13;break;case 12:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str72650);c=-1;e=13;break;case 13:return g=c;default:assert(0,"bad label: "+e)}} -function _PyLong_AsUnsignedLong(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;e=b==0?7:1;break;case 1:var j=b;e=(HEAP[HEAP[b+4]+84]&16777216)==0?2:8;break;case 2:e=j!=0?3:7;break;case 3:e=(HEAP[HEAP[b+4]+84]&8388608)!=0?4:7;break;case 4:h=_PyInt_AsLong(b);e=h<0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str82651);a=-1;e=14;break;case 6:a=h;e=14;break;case 7:__PyErr_BadInternalCall(__str32646,408);a=-1;e=14;break;case 8:c=j;f=HEAP[c+8];d=0;e=f<0?9:12;break;case 9:_PyErr_SetString(HEAP[_PyExc_OverflowError], -__str82651);a=-1;e=14;break;case 10:e=k;d=HEAP[c+12+f*2]|d<<15;e=d>>>15!=e?11:12;break;case 11:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str92652);a=-1;e=14;break;case 12:f=e=f-1;var k=d;e=e>=0?10:13;break;case 13:a=k;e=14;break;case 14:return g=a;default:assert(0,"bad label: "+e)}} -function _PyLong_AsUnsignedLongMask(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;e=b==0?5:1;break;case 1:var j=b;e=(HEAP[HEAP[b+4]+84]&16777216)==0?2:6;break;case 2:e=j!=0?3:5;break;case 3:e=(HEAP[HEAP[b+4]+84]&8388608)!=0?4:5;break;case 4:a=_PyInt_AsUnsignedLongMask(b);e=11;break;case 5:__PyErr_BadInternalCall(__str32646,445);a=-1;e=11;break;case 6:c=j;f=HEAP[c+8];h=1;d=0;e=f<0?7:8;break;case 7:h=-1;f=0-f;e=8;break;case 8:f=e=f-1;e=e>=0?9:10;break;case 9:d=HEAP[c+12+f*2]|d<<15;f=e=f- -1;e=e>=0?9:10;break;case 10:a=d*h;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}}function __PyLong_Sign(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;c=g;e=HEAP[c+8]!=0?1:5;break;case 1:e=HEAP[c+8]<0?2:3;break;case 2:b=-1;e=4;break;case 3:b=1;e=4;break;case 4:a=b;e=6;break;case 5:a=0;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function __PyLong_NumBits(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;a=g;c=0;d=HEAP[a+8]>=0?HEAP[a+8]:0-HEAP[a+8];e=d>0?1:4;break;case 1:f=HEAP[a+12+(d-1)*2];c=d*15+-15;e=Math.floor(c/15)!=d-1?5:2;break;case 2:c=e=c+1;e=e==0?5:3;break;case 3:f>>>=1;e=f!=0?2:4;break;case 4:b=c;e=6;break;case 5:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str102653);b=-1;e=6;break;case 6:return g=b;default:assert(0,"bad label: "+e)}} -function __PyLong_FromByteArray(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E;f=g;h=e;j=b;k=a;s=0;c=h==0?1:2;break;case 1:n=_PyLong_FromLong(0);c=33;break;case 2:var D=f;c=j!=0?3:4;break;case 3:o=D;q=f+h+-1;p=1;c=5;break;case 4:o=D+h+-1;q=f;p=-1;c=5;break;case 5:var R=q;c=k!=0?7:6;break;case 6:v=R;w=0-p;c=9;break;case 7:k=c=HEAP[R]<0;v=q;w=0-p;c=c!=0?8:9;break;case 8:m=-1;c=10;break;case 9:m=0;c=10;break;case 10:x=m;t=0;c=13;break;case 11:c=HEAP[v]!= -x?14:12;break;case 12:t+=1;v+=w;c=13;break;case 13:c=t268435454?18:19;break;case 18:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str112654);n=0;c=33;break;case 19:u=Math.floor((r*8+14)/15);u=__PyLong_New(u);c=u==0?20:21;break;case 20:n=0;c=33;break;case 21:z=1;A=C=0;G=o;y=0;c=y>>8;E&=255;c=24;break;case 24:C|=E<14?25:26;break;case 25:HEAP[u+12+s*2]=C&32767;s+=1;C>>>=15;A-=15;c=26;break;case 26:y+=1;G+=p;c=y>>15;y&=32767;d=11;break;case 11:r|=y<>>1;u+=1;d=d!=0?16:20;break;case 17:var R=u+15;u=R;f=17;d=21;break;case 18:d=v>=k?39:19;break;case 19:v+=1;HEAP[w]=r&255;w+=x;var M=u-8;u=M;r>>>=8;f=19;d=21;break;case 20:var L=u,f=20;d=21;break;case 21:d=(f==19?M:f==20?L:R)>7?18:22;break;case 22:p+=1;d=23; -break;case 23:d=p=J?39:26;break;case 26:v+=1;d=s!=0?27:28;break;case 27:r|=-1<=0?5:4;break;case 4:var j=_PyLong_AsLong(a);d=j;b=4;e=6;break;case 5:var k=_PyLong_AsUnsignedLong(a);d=k;b=5;e=6;break;case 6:e=(b==5?k:b==4?j:h)==-1?7:9;break;case 7:e=_PyErr_Occurred()!=0?8:9;break;case 8:c=0;e=10;break;case 9:c=d;e=10;break;case 10:return g= -c;default:assert(0,"bad label: "+e)}} -function _PyLong_FromLongLong(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l;a=g;k=j=0;e=(e=reSign(a,64,1)<0)?1:2;break;case 1:var m=0-a;f=m;b=k=1;e=3;break;case 2:f=a;b=2;e=3;break;case 3:h=b=b==2?a:m;var n=j;b!=0?(b=3,e=4):(b=3,e=5);break;case 4:j=(b==4?o:n)+1;h=b=h/Math.pow(2,15);var o=j;b!=0?e=b=4:(b=4,e=5);break;case 5:d=e=__PyLong_New(b==3?n:o);e=e!=0?6:11;break;case 6:l=d+12;var p=d,q=j;e=k!=0?7:8;break;case 7:c=0-q;e=9;break;case 8:c=q;e=9;break;case 9:HEAP[p+8]=c;h=f;e= -f!=0?10:11;break;case 10:HEAP[l]=h&32767;l+=2;h=e=h/Math.pow(2,15);e=e!=0?10:11;break;case 11:return g=d;default:assert(0,"bad label: "+e)}} -function _PyLong_FromUnsignedLongLong(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h;a=g;f=0;d=a;var j=f;a!=0?(b=-1,e=1):(b=-1,e=2);break;case 1:f=(b==1?k:j)+1;d=b=unSign(d,64,1)/Math.pow(2,15);var k=f;b!=0?e=b=1:(b=1,e=2);break;case 2:c=e=__PyLong_New(b==-1?j:k);e=e!=0?3:5;break;case 3:h=c+12;HEAP[c+8]=f;e=a!=0?4:5;break;case 4:HEAP[h]=a&32767;h+=2;a=e=unSign(a,64,1)/Math.pow(2,15);e=e!=0?4:5;break;case 5:return g=c;default:assert(0,"bad label: "+e)}} -function _PyLong_FromSsize_t(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b=e+4;HEAP[e]=g;HEAP[b]=1;g=__PyLong_FromByteArray(e,4,HEAP[b],1);STACKTOP=e;return g}function _PyLong_FromSize_t(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b=e+4;HEAP[e]=g;HEAP[b]=1;g=__PyLong_FromByteArray(e,4,HEAP[b],0);STACKTOP=e;return g} -function _PyLong_AsLongLong(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f=e+8,h,j;a=g;HEAP[f]=1;b=a==0?1:2;break;case 1:__PyErr_BadInternalCall(__str32646,928);c=-1;b=24;break;case 2:b=(HEAP[HEAP[a+4]+84]&16777216)==0?3:21;break;case 3:var k=a;b=(HEAP[HEAP[a+4]+84]&8388608)!=0?4:5;break;case 4:c=_PyInt_AsLong(k);b=24;break;case 5:h=HEAP[HEAP[k+4]+48];b=h==0?7:6;break;case 6:b=HEAP[h+72]==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str42647); -c=-1;b=24;break;case 8:j=FUNCTION_TABLE[HEAP[h+72]](a);b=j==0?9:10;break;case 9:c=-1;b=24;break;case 10:var l=j;b=(HEAP[HEAP[j+4]+84]&8388608)!=0?11:14;break;case 11:b=_PyInt_AsLong(l);HEAP[d]=b;HEAP[j]-=1;b=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=13;break;case 13:c=HEAP[d];b=24;break;case 14:var m=j;b=(HEAP[HEAP[l+4]+84]&16777216)!=0?15:18;break;case 15:b=_PyLong_AsLongLong(m);HEAP[d]=b;HEAP[j]-=1;b=HEAP[j]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j); -b=17;break;case 17:c=HEAP[d];b=24;break;case 18:HEAP[j]=HEAP[m]-1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:_PyErr_SetString(HEAP[_PyExc_TypeError],__str142657);c=-1;b=24;break;case 21:b=__PyLong_AsByteArray(a,d,8,HEAP[f],1);b=b<0?22:23;break;case 22:c=-1;b=24;break;case 23:c=HEAP[d];b=24;break;case 24:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyLong_AsUnsignedLongLong(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f=e+8,h;a=g;HEAP[f]=1;b=a==0?2:1;break;case 1:b=(HEAP[HEAP[a+4]+84]&16777216)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str32646,980);c=-1;b=6;break;case 3:h=__PyLong_AsByteArray(a,d,8,HEAP[f],0);b=h<0?4:5;break;case 4:c=h;b=6;break;case 5:c=HEAP[d];b=6;break;case 6:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyLong_AsUnsignedLongLongMask(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;e=b==0?2:1;break;case 1:e=(HEAP[HEAP[b+4]+84]&16777216)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str32646,1006);a=4294967295;e=8;break;case 3:c=b;f=HEAP[c+8];h=1;d=0;e=f<0?4:5;break;case 4:h=-1;f=0-f;e=5;break;case 5:f=e=f-1;e=e>=0?6:7;break;case 6:d*=Math.pow(2,15);d=Runtime.or64(HEAP[c+12+f*2],d);f=e=f-1;e=e>=0?6:7;break;case 7:a=h*d;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _PyLong_AsLongLongAndOverflow(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;n=0;HEAP[d]=0;b=c==0?1:2;break;case 1:__PyErr_BadInternalCall(__str32646,1044);f=-1;b=35;break;case 2:var p=c;b=(HEAP[HEAP[c+4]+84]&8388608)!=0?3:4;break;case 3:f=_PyInt_AsLong(p);b=35;break;case 4:b=(HEAP[HEAP[p+4]+84]&16777216)==0?5:16;break;case 5:o=HEAP[HEAP[c+4]+48];b=o==0?7:6;break;case 6:b=HEAP[o+72]==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_TypeError],__str42647);f= --1;b=35;break;case 8:c=FUNCTION_TABLE[HEAP[o+72]](c);b=c==0?9:10;break;case 9:f=-1;b=35;break;case 10:n=1;var q=c;b=(HEAP[HEAP[c+4]+84]&8388608)!=0?11:12;break;case 11:k=_PyInt_AsLong(q);b=31;break;case 12:b=(HEAP[HEAP[q+4]+84]&16777216)==0?13:16;break;case 13:HEAP[c]-=1;b=HEAP[c]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=15;break;case 15:_PyErr_SetString(HEAP[_PyExc_TypeError],__str52648);f=-1;b=35;break;case 16:k=-1;h=c;l=b=HEAP[h+8];b=b==-1?17:b==0?18:b==1?19:20;break;case 17:k= -0-HEAP[h+12];b=31;break;case 18:k=0;b=31;break;case 19:k=HEAP[h+12];b=31;break;case 20:m=1;j=0;l<0?(a=20,b=21):(a=20,b=24);break;case 21:m=-1;l=0-l;var r=j,a=21;b=24;break;case 22:var a=s,u=j=HEAP[h+12+l*2]+j*32768;u/Math.pow(2,15)!=a?(a=22,b=23):(a=22,b=24);break;case 23:HEAP[d]=m;b=31;break;case 24:var s=a==22?u:a==20?0:r;l=b=l-1;b=b>=0?22:25;break;case 25:var t=m;b=s>=0?26:27;break;case 26:k=j*t;b=31;break;case 27:b=t>=0?30:28;break;case 28:b=j!=-9223372036854775E3?30:29;break;case 29:k=-9223372036854775E3; -b=31;break;case 30:HEAP[d]=m;b=31;break;case 31:b=n!=0?32:34;break;case 32:HEAP[c]-=1;b=HEAP[c]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=34;break;case 34:f=k;b=35;break;case 35:return c=f;default:assert(0,"bad label: "+b)}} -function _convert_binop(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;f=e;h=b;j=a;var l=d;c=(HEAP[HEAP[d+4]+84]&16777216)!=0?1:2;break;case 1:HEAP[h]=l;HEAP[d]+=1;c=5;break;case 2:c=(HEAP[HEAP[l+4]+84]&8388608)!=0?3:4;break;case 3:c=_PyLong_FromLong(HEAP[d+8]);HEAP[h]=c;c=5;break;case 4:k=0;c=13;break;case 5:var m=f;c=(HEAP[HEAP[f+4]+84]&16777216)!=0?6:7;break;case 6:HEAP[j]=m;HEAP[f]+=1;c=12;break;case 7:c=(HEAP[HEAP[m+4]+84]&8388608)!=0?8:9;break;case 8:c=_PyLong_FromLong(HEAP[f+ -8]);HEAP[j]=c;c=12;break;case 9:c=HEAP[h];HEAP[c]-=1;c=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);c=11;break;case 11:k=0;c=13;break;case 12:k=1;c=13;break;case 13:return g=k;default:assert(0,"bad label: "+c)}}function _bits_in_digit(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=0;e=g>31?1:2;break;case 1:a+=6;b=e=b>>>6;e=e>31?1:2;break;case 2:return g=a=HEAP[_BitLengthTable2658+b]+a;default:assert(0,"bad label: "+e)}} -function _v_iadd(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m;f=g;h=e;j=b;k=a;l=m=0;c=l>>=15;l+=1;c=l>>15;m=n;l+=1;d=2;c=4;break;case 3:var o=m,d=3;c=4;break;case 4:c=(d==3?o:n)==0?6:5;break;case 5:c=l>>=15;m&=1;l+=1;c=l>>=15;var n=m&1;m=n;l+=1;d=2;c=4;break;case 3:var o=m,d=3;c=4;break;case 4:c=(d==3?o:n)==0?6:5;break;case 5:c=l>>15&65535;k+=1;c=k0;j-=1;var n=c;d?(d=-1,c=1):(d=-1,c=2);break;case 1:m=HEAP[h+2*j]|(d==1?m:n)<<15;c=m&65535&l;HEAP[f+2*j]=m>>>k&65535;d=j>0;j-=1;m=c;d!=0?c=d=1:(d=1,c=2);break;case 2:return g=d==-1?n:m,g&65535;default:assert(0,"bad label: "+c)}} -function _inplace_divrem1(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l;f=g;h=e;j=b;k=a;c=0;h+=2*j;f+=2*j;j=d=j-1;var m=c;d>=0?(d=-1,c=1):(d=-1,c=2);break;case 1:l=d==1?l:m;h+=-2;c=HEAP[h]|l<<15;f+=-2;l=Math.floor(c/k)&65535;HEAP[f]=l;c-=k*l;j=d=j-1;l=c;d>=0?c=d=1:(d=1,c=2);break;case 2:return g=(d==-1?m:l)&65535,g&65535;default:assert(0,"bad label: "+c)}} -function _divrem1(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[c+8]>=0?HEAP[c+8]:0-HEAP[c+8];k=__PyLong_New(j);a=k==0?1:2;break;case 1:h=0;a=3;break;case 2:a=_inplace_divrem1(k+12,c+12,j,d&65535);HEAP[f]=a;h=_long_normalize(k);a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _long_to_decimal_string(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;c=g;d=e;b=c==0?2:1;break;case 1:b=(HEAP[HEAP[c+4]+84]&16777216)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str32646,1330);f=0;b=39;break;case 3:m=HEAP[c+8]>=0?HEAP[c+8]:0-HEAP[c+8];t=HEAP[c+8]<0;b=m>143165576?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str152659);f=0;b=39;break;case 5:k=(m*15/12|0)+1;h=__PyLong_New(k);b=h==0?6:7;break;case 6:f=0;b=39;break;case 7:q= -c+12;p=h+12;k=0;n=m;b=18;break;case 8:var w=HEAP[q+2*n];v=w;o=0;o=0?8:19;break;case 19:b=k==0?20:21;break;case 20:HEAP[p+2*k]=0;k+=1;b=21;break;case 21:l=t+-3+(d!=0)+k*4;u=10;r=HEAP[p+2*(k-1)];b=r>=u?22:23;break;case 22:u=u*10&65535;l+=1;b=r>=u?22:23;break;case 23:j=b=_PyString_FromStringAndSize(0,l);b=b==0?24:27;break;case 24:HEAP[h]-=1;b=HEAP[h]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h); -b=26;break;case 26:f=0;b=39;break;case 27:s=j+20+l;HEAP[s]=0;b=d!=0?28:29;break;case 28:s+=-1;HEAP[s]=76;b=29;break;case 29:n=0;r=HEAP[p+2*n];b=k-1>n?30:33;break;case 30:o=0;b=31;break;case 31:s+=-1;HEAP[s]=(r%10&255)+48;r=Math.floor(r/10);o=b=o+1;b=b<=3?31:32;break;case 32:n+=1;r=HEAP[p+2*n];b=k-1>n?30:33;break;case 33:s+=-1;HEAP[s]=(r%10&255)+48;r=b=Math.floor(r/10);b=b!=0?33:34;break;case 34:b=t!=0?35:36;break;case 35:s+=-1;HEAP[s]=45;b=36;break;case 36:HEAP[h]-=1;b=HEAP[h]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);b=38;break;case 38:f=j;b=39;break;case 39:return a=f;default:assert(0,"bad label: "+b)}} -function __PyLong_Format(g,e,b,a){var c=STACKTOP;STACKTOP+=4;_memset(c,0,4);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q=c,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V;h=g;j=e;k=b;l=a;w=0;var Q=h;d=j==10?1:2;break;case 1:p=_long_to_decimal_string(Q,k);d=76;break;case 2:d=Q==0?4:3;break;case 3:d=(HEAP[HEAP[h+4]+84]&16777216)==0?4:5;break;case 4:__PyErr_BadInternalCall(__str32646,1451);p=0;d=76;break;case 5:s=HEAP[h+8]>=0?HEAP[h+8]:0-HEAP[h+8];r=j;v=0;d=j>1?6:7;break;case 6:v+=1;r=d= -r>>1;d=d>1?6:7;break;case 7:d=k!=0?8:9;break;case 8:o=6;d=10;break;case 9:o=5;d=10;break;case 10:r=o;d=((2147483647-r)/15|0)>1;d=d>1?22:23;break;case 22:z+=1;r=d=r>>1;d=d>1?22:23;break;case 23:r=0;d=r>>=z;d=s-1>r?29:30;break;case 29:var Z=y>=z,f=29;d=31;break;case 30:var K=x!=0,f=30;d=31;break;case 31:d= -(f==30?K:Z)!=0?25:32;break;case 32:r+=1;d=r>>15!=0?35:34;break;case 34:D=M&65535;R+=1;M=D*j;d=M>>>15!=0?35:34;break;case 35:E=d=__PyLong_New(A);d=d==0?36:39;break;case 36:d=HEAP[q];HEAP[d]-=1;d=HEAP[d]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);d=38;break;case 38:p=0;d=76;break;case 39:L=R;I=_inplace_divrem1(E+12,G,A,D&65535);G=E+12;d=HEAP[G+2*(A-1)]==0?40:41;break;case 40:A-=1;d=41;break;case 41:HEAP[__Py_Ticker]-= -1;d=HEAP[__Py_Ticker]<0?42:48;break;case 42:HEAP[__Py_Ticker]=HEAP[__Py_CheckInterval];d=_PyErr_CheckSignals()!=0?43:48;break;case 43:HEAP[E]-=1;d=HEAP[E]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[E+4]+24]](E);d=45;break;case 45:d=HEAP[q];HEAP[d]-=1;d=HEAP[d]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);d=47;break;case 47:p=0;d=76;break;case 48:J=(I/j|0)&65535;F=(I&255)-(J*j&255);d=(I&255)-(J*j&255)<=9?49:50;break;case 49:m=48;d=51;break;case 50:m=87;d=51;break;case 51:F= -m+F;t+=-1;HEAP[t]=F;I=J;L=d=L-1;d=d==0?54:52;break;case 52:d=A!=0?48:53;break;case 53:d=I!=0?48:54;break;case 54:d=A!=0?39:55;break;case 55:HEAP[E]-=1;d=HEAP[E]==0?56:57;break;case 56:FUNCTION_TABLE[HEAP[HEAP[E+4]+24]](E);d=57;break;case 57:d=j==2?58:59;break;case 58:t+=-1;HEAP[t]=98;t+=-1;HEAP[t]=48;d=69;break;case 59:d=j==8?60:64;break;case 60:d=l!=0?61:62;break;case 61:t+=-1;HEAP[t]=111;t+=-1;HEAP[t]=48;d=69;break;case 62:d=s!=0?63:69;break;case 63:t+=-1;HEAP[t]=48;d=69;break;case 64:d=j==16?65: -66;break;case 65:t+=-1;HEAP[t]=120;t+=-1;HEAP[t]=48;d=69;break;case 66:d=j!=10?67:69;break;case 67:t+=-1;HEAP[t]=35;t+=-1;HEAP[t]=(j%10&255)+48;d=j>10?68:69;break;case 68:t+=-1;HEAP[t]=((j/10|0)&255)+48;d=69;break;case 69:d=w!=0?70:71;break;case 70:t+=-1;HEAP[t]=w;d=71;break;case 71:d=HEAP[q]+20!=t?72:75;break;case 72:V=HEAP[q]+20;d=73;break;case 73:HEAP[V]=HEAP[t];d=HEAP[V]!=0;V+=1;t+=1;d=d!=0?73:74;break;case 74:V+=-1;__PyString_Resize(q,V-(HEAP[q]+20));d=75;break;case 75:p=HEAP[q];d=76;break;case 76:return g= -p,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _long_from_binary_base(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n,o;a=g;c=e;h=f=HEAP[a];k=c;j=-1;b=c!=0?1:2;break;case 1:k=b=k>>1;j+=1;b=b!=0?1:2;break;case 2:b=HEAP[__PyLong_DigitValue+HEAP[f]*4]=h?9:12;break;case 9:b=HEAP[__PyLong_DigitValue+HEAP[f]*4];m|=b<14?11:10;break;case 10:f+=-1;b=f>=h?9:12;break;case 11:HEAP[o]=m&32767;o+=2;m>>>=15;n-=15;b=10;break;case 12:b=n!=0?13:14;break;case 13:HEAP[o]=m&65535;o+=2;b=14;break;case 14:b=((o-(l+12))/2|0)36?1:3;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str172661);l=0;c=99;break;case 2:HEAP[f]+=1;c=3;break;case 3:c=HEAP[HEAP[f]]==0?5:4;break;case 4:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*HEAP[HEAP[f]]]&8192)!=0?2:5;break;case 5:var R=HEAP[f];c=HEAP[HEAP[f]]==43?6:7;break; -case 6:HEAP[f]=R+1;c=10;break;case 7:c=HEAP[R]==45?8:10;break;case 8:HEAP[f]+=1;m=-1;c=10;break;case 9:HEAP[f]+=1;c=10;break;case 10:c=HEAP[HEAP[f]]==0?12:11;break;case 11:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*HEAP[HEAP[f]]]&8192)!=0?9:12;break;case 12:c=j==0?13:25;break;case 13:c=HEAP[HEAP[f]]!=48?14:15;break;case 14:j=10;c=25;break;case 15:c=HEAP[HEAP[f]+1]==120?17:16;break;case 16:c=HEAP[HEAP[f]+1]==88?17:18;break;case 17:j=16;c=25;break;case 18:c=HEAP[HEAP[f]+1]==111?20:19;break;case 19:c=HEAP[HEAP[f]+ -1]==79?20:21;break;case 20:j=8;c=25;break;case 21:c=HEAP[HEAP[f]+1]==98?23:22;break;case 22:c=HEAP[HEAP[f]+1]==66?23:24;break;case 23:j=2;c=25;break;case 24:j=8;c=25;break;case 25:c=HEAP[HEAP[f]]==48?26:37;break;case 26:var M=j;M!=16?(d=26,c=30):(d=26,c=27);break;case 27:c=HEAP[HEAP[f]+1]==120?36:28;break;case 28:c=HEAP[HEAP[f]+1]==88?36:29;break;case 29:var L=j,d=29;c=30;break;case 30:c=(d==29?L:M)!=8?33:31;break;case 31:c=HEAP[HEAP[f]+1]==111?36:32;break;case 32:c=HEAP[HEAP[f]+1]==79?36:33;break; -case 33:c=j!=2?37:34;break;case 34:c=HEAP[HEAP[f]+1]==98?36:35;break;case 35:c=HEAP[HEAP[f]+1]==66?36:37;break;case 36:HEAP[f]+=2;c=37;break;case 37:n=HEAP[f];var I=j;c=(j-1&j)==0?38:39;break;case 38:var J=_long_from_binary_base(f,I);p=J;d=38;c=69;break;case 39:c=HEAP[_log_base_PyLong_BASE_9958+I*8]==0?40:43;break;case 40:A=j;G=1;E=j;c=_llvm_log_f64(j);var F=_llvm_log_f64(32768);HEAP[_log_base_PyLong_BASE_9958+E*8]=c/F;E=A*j;c=A*j>32768?42:41;break;case 41:A=E;G+=1;E=A*j;c=A*j>32768?42:41;break;case 42:HEAP[_convmultmax_base_9960+ -j*4]=A;HEAP[_convwidth_base_9959+j*4]=G;c=43;break;case 43:var V=C=HEAP[f];HEAP[__PyLong_DigitValue+HEAP[C]*4]=v?52:51;break;case 51:c=HEAP[f]!=C?49:52;break;case 52:x=w;c=t!=v?53:55;break;case 53:x=j;c=t>1?54:55;break;case 54:x*=j;t=c=t-1;c=c>1?54:55;break;case 55:y=p+12;z=y+2*HEAP[p+8];c=y>>=15;y+=2;c=y=0?1:4;break;case 1:a=d!=-1?2:3;break;case 2:j=d+1;a=5;break;case 3:j=1;a=5;break;case 4:k=0;a=6;break;case 5:k=a=_malloc(j);a=a==0?6:7;break;case 6:h=0;a=10;break;case 7:a=_PyUnicodeUCS2_EncodeDecimal(c,d,k,0);var l=k;a=a!=0?8:9;break;case 8:_free(l);h=0;a=10;break;case 9:h=_PyLong_FromString(l,0,f);_free(k);a=10;break;case 10:return g=h;default:assert(0,"bad label: "+a)}} -function _long_divrem(g,e,b,a){var c=STACKTOP;STACKTOP+=2;_memset(c,0,2);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q=c;h=g;j=e;k=b;l=a;n=HEAP[h+8]>=0?HEAP[h+8]:0-HEAP[h+8];o=HEAP[j+8]>=0?HEAP[j+8]:0-HEAP[j+8];d=o==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError],__str192663);m=-1;d=24;break;case 2:d=n=0?HEAP[c+8]:0-HEAP[c+8];p=HEAP[d+8]>=0?HEAP[d+8]:0-HEAP[d+8];j=__PyLong_New(o+1);a=j==0?1:2;break;case 1:h=HEAP[f]=0;a=39;break;case 2:k=__PyLong_New(p);a=k==0?3:6;break;case 3:HEAP[j]-=1;a=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=5;break;case 5:h=HEAP[f]=0;a=39;break;case 6:q=15-_bits_in_digit(HEAP[d+12+(p-1)*2]&65535);_v_lshift(k+12,d+ -12,p,q);s=_v_lshift(j+12,c+12,o,q);a=s!=0?8:7;break;case 7:a=HEAP[j+12+(o-1)*2]>=HEAP[k+12+(p-1)*2]?8:9;break;case 8:HEAP[j+12+o*2]=s;o+=1;a=9;break;case 9:n=o-p;l=a=__PyLong_New(n);a=a==0?10:15;break;case 10:HEAP[k]-=1;a=HEAP[k]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=12;break;case 12:HEAP[j]-=1;a=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=14;break;case 14:h=HEAP[f]=0;a=39;break;case 15:x=j+12;z=k+12;r=HEAP[z+2*(p-1)];u=HEAP[z+2*(p-2)];y=x+2*n;C= -l+12+2*n;a=35;break;case 16:HEAP[__Py_Ticker]-=1;a=HEAP[__Py_Ticker]<0?17:25;break;case 17:HEAP[__Py_Ticker]=HEAP[__Py_CheckInterval];a=_PyErr_CheckSignals()!=0?18:25;break;case 18:HEAP[l]-=1;a=HEAP[l]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=20;break;case 20:HEAP[k]-=1;a=HEAP[k]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=22;break;case 22:HEAP[j]-=1;a=HEAP[j]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=24;break;case 24:h=HEAP[f]=0;a=39; -break;case 25:w=HEAP[y+2*p];v=HEAP[y+2*(p-1)]|w<<15;t=Math.floor(v/r)&65535;v=(v&65535)-t*r;a=27;break;case 26:t-=1;v=r+v;a=reSign(v,16,1)<0?28:27;break;case 27:a=t*u>(HEAP[y+2*(p-2)]|v<<15)?26:28;break;case 28:m=A=0;a=m>15&65535;m+=1;a=m>>=15;m+=1;a=mx;y+=-2;a=a!=0?16:36;break;case 36:s=_v_rshift(z,x,p,q);HEAP[j]-=1;a=HEAP[j]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=38;break;case 38:h=_long_normalize(k);HEAP[f]=h;h=_long_normalize(l);a=39;break;case 39:return g=h;default:assert(0,"bad label: "+a)}} -function __PyLong_Frexp(g,e){var b=STACKTOP;STACKTOP+=10;_memset(b,0,10);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p=b,q;d=g;f=e;k=HEAP[d+8]>=0?HEAP[d+8]:0-HEAP[d+8];a=k==0?1:2;break;case 1:j=HEAP[f]=0;a=25;break;case 2:l=_bits_in_digit(HEAP[d+12+(k-1)*2]&65535);a=k>143165576?3:5;break;case 3:a=k>143165577?24:4;break;case 4:a=l>7?24:5;break;case 5:var r=l=a=l+-15+k*15;a=a<=55?6:9;break;case 6:m=(55-r)/15|0;n=(55-l)%15;o=0;a=o0?11:15;break;case 15:var t=HEAP[p];q=unSign(HEAP[p],16,1);HEAP[p]=(HEAP[_half_even_correction_10608+(q&7)*4]&65535)+t;o=c=o-1;t=q=HEAP[p+c*2];c>0?(c=15,a=16):(c= -15,a=17);break;case 16:v=c==16?v:t;o-=1;var v=q=v*32768+HEAP[p+o*2];o>0?a=c=16:(c=16,a=17);break;case 17:q=a=(c==15?t:v)/36028797018963968;a=a==1?18:20;break;case 18:a=l==2147483647?24:19;break;case 19:q=0.5;l+=1;a=20;break;case 20:HEAP[f]=l;var w=q;a=HEAP[d+8]<0?21:22;break;case 21:h=0-w;a=23;break;case 22:h=w;a=23;break;case 23:j=h;a=25;break;case 24:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str202664);HEAP[f]=0;j=-1;a=25;break;case 25:return d=j,STACKTOP=b,d;default:assert(0,"bad label: "+ -a)}} -function _PyLong_AsDouble(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f;a=g;b=a==0?2:1;break;case 1:b=(HEAP[HEAP[a+4]+84]&16777216)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str32646,2318);c=-1;b=8;break;case 3:f=__PyLong_Frexp(a,d);b=f!=-1?5:4;break;case 4:b=_PyErr_Occurred()!=0?6:5;break;case 5:b=HEAP[d]>1024?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str212665);c=-1;b=8;break;case 7:c=_ldexp(f,HEAP[d]);b=8;break;case 8:return g=c, -STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function _long_dealloc(g){FUNCTION_TABLE[HEAP[HEAP[g+4]+160]](g)}function _long_repr(g){return __PyLong_Format(g,10,1,0)}function _long_str(g){return __PyLong_Format(g,10,0,0)} -function _long_compare(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j;c=g;d=e;var k=HEAP[c+8];b=HEAP[c+8]!=HEAP[d+8]?1:2;break;case 1:var l=k-HEAP[d+8];h=l;a=1;b=9;break;case 2:j=k>=0?k:0-k;b=3;break;case 3:j=b=j-1;b=b<0?6:4;break;case 4:b=HEAP[c+12+j*2]==HEAP[d+12+j*2]?3:5;break;case 5:b=j<0?6:7;break;case 6:h=0;b=10;break;case 7:var m=h=HEAP[c+12+j*2]-HEAP[d+12+j*2];HEAP[c+8]<0?(a=7,b=8):(a=7,b=9);break;case 8:var n=0-m;h=n;a=8;b=9;break;case 9:b=(a==8?n:a==1?l:m)>=0?10:11;break;case 10:f= -h>0;b=12;break;case 11:f=-1;b=12;break;case 12:return a=f;default:assert(0,"bad label: "+b)}} -function _long_hash(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=HEAP[b+8];d=1;a=0;e=c<0?1:2;break;case 1:d=-1;c=0-c;e=2;break;case 2:c=e=c-1;e=e>=0?3:6;break;case 3:a=a>>>0>>>17|a<<15;a=HEAP[b+12+c*2]+a;e=unSign(HEAP[b+12+c*2],16,1)>>>0>a>>>0?5:4;break;case 4:c=e=c-1;e=e>=0?3:6;break;case 5:a+=1;e=4;break;case 6:a=e=a*d&4294967295;e=e==-1?7:8;break;case 7:a=-2;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _x_add(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;h=HEAP[c+8]>=0?HEAP[c+8]:0-HEAP[c+8];j=HEAP[d+8]>=0?HEAP[d+8]:0-HEAP[d+8];m=0;b=h>>=15;l+=1;b=l>>=15;l+=1;var o=l;l=0?HEAP[a+8]:0-HEAP[a+8];h=HEAP[c+8]>=0?HEAP[c+8]:0-HEAP[c+8];l=1;m=0;b=f>>15;m&=1;k+=1;b=k>>15;m&=1;k+=1;b=k=0?HEAP[c+8]:0-HEAP[c+8];k=HEAP[d+8]>=0?HEAP[d+8]:0-HEAP[d+8];h=__PyLong_New(k+j);b=h==0?1:2;break;case 1:f=0;b=29;break;case 2:_llvm_memset_p0i8_i32(h+12,0,HEAP[h+8]*2,1,0);l=0;b=c==d?15:27;break;case 3:n=HEAP[c+12+l*2];o=h+12+2*(l<<1);p=c+12+2*l+2;q=c+12+2*j;HEAP[__Py_Ticker]-=1;b=HEAP[__Py_Ticker]<0?4:8;break;case 4:HEAP[__Py_Ticker]=HEAP[__Py_CheckInterval];b=_PyErr_CheckSignals()!= -0?5:8;break;case 5:HEAP[h]-=1;b=HEAP[h]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=7;break;case 7:f=0;b=29;break;case 8:m=n*n+HEAP[o];HEAP[o]=m&32767;o+=2;m>>>=15;n<<=1;b=p>>15;m=w;p>>15;b=b!=0?13:14;break;case 13:HEAP[o]=(m&32767)+HEAP[o];b=14;break;case 14:l+=1;b= -15;break;case 15:b=l>>15;r=y;t=0?HEAP[d+8]:0-HEAP[d+8];f=l<=f?l:f;n=l-f;l=__PyLong_New(n);c=l==0?1:2;break;case 1:k=-1;c=7;break;case 2:m=__PyLong_New(f);c=m==0?3:6;break;case 3:HEAP[l]-=1;c=HEAP[l]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=5;break;case 5:k=-1;c=7;break;case 6:_llvm_memcpy_p0i8_p0i8_i32(m+12,d+12,f*2,1,0);_llvm_memcpy_p0i8_p0i8_i32(l+12,d+12+2*f,n*2,1,0);k=_long_normalize(l);HEAP[h]= -k;k=_long_normalize(m);HEAP[j]=k;k=0;c=7;break;case 7:return g=k;default:assert(0,"bad label: "+c)}} -function _k_mul(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4,n=b+8,o=b+12,p,q,r,u,s,t;c=g;d=e;j=HEAP[c+8]>=0?HEAP[c+8]:0-HEAP[c+8];k=HEAP[d+8]>=0?HEAP[d+8]:0-HEAP[d+8];HEAP[l]=0;HEAP[m]=0;HEAP[n]=0;p=HEAP[o]=0;a=j>k?1:2;break;case 1:q=c;c=d;d=q;t=j;j=k;k=t;a=2;break;case 2:a=c==d?3:4;break;case 3:h=140;a=5;break;case 4:h=70;a=5;break;case 5:t=h;var v=j;a=v<=t?6:9;break;case 6:a=v==0?7:8;break;case 7:f=__PyLong_New(0);a=66;break;case 8:f= -_x_mul(c,d);a=66;break;case 9:a=v*2<=k?10:11;break;case 10:f=_k_lopsided_mul(c,d);a=66;break;case 11:s=k>>1;a=_kmul_split(c,s,l,m)<0?50:12;break;case 12:a=c==d?13:14;break;case 13:HEAP[n]=HEAP[l];HEAP[o]=HEAP[m];HEAP[HEAP[n]]+=1;HEAP[HEAP[o]]+=1;a=15;break;case 14:a=_kmul_split(d,s,n,o)<0?50:15;break;case 15:p=a=__PyLong_New(k+j);a=a==0?53:16;break;case 16:q=_k_mul(HEAP[l],HEAP[n]);a=q==0?50:17;break;case 17:_llvm_memcpy_p0i8_p0i8_i32(p+12+s*4,q+12,HEAP[q+8]*2,1,0);t=0-s*2+HEAP[p+8]+(0-HEAP[q+8]); -a=t!=0?18:19;break;case 18:_llvm_memset_p0i8_i32(p+12+s*4+2*HEAP[q+8],0,t*2,1,0);a=19;break;case 19:r=a=_k_mul(HEAP[m],HEAP[o]);a=a==0?20:22;break;case 20:HEAP[q]-=1;a=HEAP[q]==0?21:50;break;case 21:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=50;break;case 22:_llvm_memcpy_p0i8_p0i8_i32(p+12,r+12,HEAP[r+8]*2,1,0);t=s*2-HEAP[r+8];a=t!=0?23:24;break;case 23:_llvm_memset_p0i8_i32(p+12+2*HEAP[r+8],0,t*2,1,0);a=24;break;case 24:t=HEAP[p+8]-s;_v_isub(p+12+2*s,t,r+12,HEAP[r+8]);HEAP[r]-=1;a=HEAP[r]==0?25:26; -break;case 25:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=26;break;case 26:_v_isub(p+12+2*s,t,q+12,HEAP[q+8]);HEAP[q]-=1;a=HEAP[q]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=28;break;case 28:q=a=_x_add(HEAP[l],HEAP[m]);a=a==0?50:29;break;case 29:a=HEAP[l];HEAP[a]-=1;a=HEAP[a]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);a=31;break;case 31:a=HEAP[m];HEAP[a]-=1;a=HEAP[a]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);a=33;break;case 33:HEAP[m]= -0;HEAP[l]=HEAP[m];a=c==d?34:35;break;case 34:r=q;HEAP[r]+=1;a=38;break;case 35:r=_x_add(HEAP[n],HEAP[o]);a=r==0?36:38;break;case 36:HEAP[q]-=1;a=HEAP[q]==0?37:50;break;case 37:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=50;break;case 38:a=HEAP[n];HEAP[a]-=1;a=HEAP[a]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);a=40;break;case 40:a=HEAP[o];HEAP[a]-=1;a=HEAP[a]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);a=42;break;case 42:HEAP[o]=0;HEAP[n]=HEAP[o]; -u=_k_mul(q,r);HEAP[q]-=1;a=HEAP[q]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=44;break;case 44:HEAP[r]-=1;a=HEAP[r]==0?45:46;break;case 45:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=46;break;case 46:a=u==0?50:47;break;case 47:_v_iadd(p+12+2*s,t,u+12,HEAP[u+8]);HEAP[u]-=1;a=HEAP[u]==0?48:49;break;case 48:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=49;break;case 49:f=_long_normalize(p);a=66;break;case 50:a=p!=0?51:53;break;case 51:HEAP[p]-=1;a=HEAP[p]==0?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[p+ -4]+24]](p);a=53;break;case 53:a=HEAP[l]!=0?54:56;break;case 54:a=HEAP[l];HEAP[a]-=1;a=HEAP[a]==0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);a=56;break;case 56:a=HEAP[m]!=0?57:59;break;case 57:a=HEAP[m];HEAP[a]-=1;a=HEAP[a]==0?58:59;break;case 58:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);a=59;break;case 59:a=HEAP[n]!=0?60:62;break;case 60:a=HEAP[n];HEAP[a]-=1;a=HEAP[a]==0?61:62;break;case 61:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);a=62;break;case 62:a=HEAP[o]!= -0?63:65;break;case 63:a=HEAP[o];HEAP[a]-=1;a=HEAP[a]==0?64:65;break;case 64:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);a=65;break;case 65:f=0;a=66;break;case 66:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _k_lopsided_mul(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;h=HEAP[c+8]>=0?HEAP[c+8]:0-HEAP[c+8];j=HEAP[d+8]>=0?HEAP[d+8]:0-HEAP[d+8];m=0;l=__PyLong_New(j+h);b=l==0?1:2;break;case 1:f=0;b=18;break;case 2:_llvm_memset_p0i8_i32(l+12,0,HEAP[l+8]*2,1,0);m=__PyLong_New(h);b=m==0?12:3;break;case 3:k=0;var p=j,a=3;b=8;break;case 4:o=j<=h?j:h;_llvm_memcpy_p0i8_p0i8_i32(m+12,d+12+2*k,o*2,1,0);HEAP[m+8]=o;n=_k_mul(c,m);b=n==0?12:5;break;case 5:_v_iadd(l+12+2*k,HEAP[l+ -8]-k,n+12,HEAP[n+8]);HEAP[n]-=1;b=HEAP[n]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=7;break;case 7:var q=j-o;j=q;k=o+k;a=7;b=8;break;case 8:b=(a==7?q:p)>0?4:9;break;case 9:HEAP[m]-=1;b=HEAP[m]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);b=11;break;case 11:f=_long_normalize(l);b=18;break;case 12:HEAP[l]-=1;b=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=14;break;case 14:b=m!=0?15:17;break;case 15:HEAP[m]-=1;b=HEAP[m]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);b=17;break;case 17:f=0;b=18;break;case 18:return b=f;default:assert(0,"bad label: "+b)}} -function _long_mul(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h;a=_convert_binop(g,e,d,f)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;c=__Py_NotImplementedStruct;a=10;break;case 2:h=_k_mul(HEAP[d],HEAP[f]);a=(HEAP[HEAP[f]+8]^HEAP[HEAP[d]+8])<0?3:5;break;case 3:a=h!=0?4:5;break;case 4:HEAP[h+8]=0-HEAP[h+8];a=5;break;case 5:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=7;break; -case 7:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);a=9;break;case 9:c=h;a=10;break;case 10:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _l_divmod(g,e,b,a){var c=STACKTOP;STACKTOP+=8;_memset(c,0,8);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l=c,m=c+4,n,o;d=g;f=e;h=b;j=a;d=_long_divrem(d,f,l,m)<0?1:2;break;case 1:k=-1;d=36;break;case 2:d=HEAP[HEAP[m]+8]>=0?4:3;break;case 3:d=HEAP[f+8]>0?6:4;break;case 4:d=HEAP[HEAP[m]+8]<=0?27:5;break;case 5:d=HEAP[f+8]<0?6:27;break;case 6:n=_long_add(HEAP[m],f);d=HEAP[m];HEAP[d]-=1;d=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);d=8;break;case 8:HEAP[m]= -n;d=n==0?9:12;break;case 9:d=HEAP[l];HEAP[d]-=1;d=HEAP[d]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);d=11;break;case 11:k=-1;d=36;break;case 12:o=_PyLong_FromLong(1);d=o==0?14:13;break;case 13:n=_long_sub(HEAP[l],o);d=n==0?14:22;break;case 14:d=HEAP[m];HEAP[d]-=1;d=HEAP[d]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);d=16;break;case 16:d=HEAP[l];HEAP[d]-=1;d=HEAP[d]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);d= -18;break;case 18:d=o!=0?19:21;break;case 19:HEAP[o]-=1;d=HEAP[o]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=21;break;case 21:k=-1;d=36;break;case 22:HEAP[o]-=1;d=HEAP[o]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=24;break;case 24:d=HEAP[l];HEAP[d]-=1;d=HEAP[d]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);d=26;break;case 26:HEAP[l]=n;d=27;break;case 27:var p=HEAP[l];d=h!=0?28:29;break;case 28:HEAP[h]=p;d=31;break;case 29:d=p;HEAP[d]-= -1;d=HEAP[d]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);d=31;break;case 31:var q=HEAP[m];d=j!=0?32:33;break;case 32:HEAP[j]=q;d=35;break;case 33:d=q;HEAP[d]-=1;d=HEAP[d]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);d=35;break;case 35:k=0;d=36;break;case 36:return g=k,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _long_div(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=_convert_binop(g,e,d,f)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;c=__Py_NotImplementedStruct;a=9;break;case 2:a=_l_divmod(HEAP[d],HEAP[f],h,0)<0?3:4;break;case 3:HEAP[h]=0;a=4;break;case 4:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+ -4]+24]](HEAP[f]);a=8;break;case 8:c=HEAP[h];a=9;break;case 9:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _long_classic_div(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=_convert_binop(g,e,d,f)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;c=__Py_NotImplementedStruct;a=12;break;case 2:a=HEAP[_Py_DivisionWarningFlag]==0?5:3;break;case 3:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str222666,1)>=0?5:4;break;case 4:HEAP[h]=0;a=7;break;case 5:a=_l_divmod(HEAP[d],HEAP[f],h,0)<0?6:7;break;case 6:HEAP[h]=0;a=7;break;case 7:a= -HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=9;break;case 9:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);a=11;break;case 11:c=HEAP[h];a=12;break;case 12:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _long_true_divide(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l=b,m=b+4,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I=b+8;a=_convert_binop(g,e,l,m)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;k=__Py_NotImplementedStruct;a=84;break;case 2:o=HEAP[HEAP[l]+8]>=0?HEAP[HEAP[l]+8]:0-HEAP[HEAP[l]+8];p=HEAP[HEAP[m]+8]>=0?HEAP[HEAP[m]+8]:0-HEAP[HEAP[m]+8];x=HEAP[HEAP[m]+8]<0^HEAP[HEAP[l]+8]<0;a=p==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ZeroDivisionError], -__str232667);a=79;break;case 4:a=o==0?70:5;break;case 5:a=o<=3?8:6;break;case 6:a=o!=4?9:7;break;case 7:a=HEAP[HEAP[l]+12+6]>>>8==0?8:9;break;case 8:j=1;a=10;break;case 9:j=0;a=10;break;case 10:y=j;a=p<=3?13:11;break;case 11:a=p!=4?14:12;break;case 12:a=HEAP[HEAP[m]+12+6]>>>8==0?13:14;break;case 13:h=1;a=15;break;case 14:h=0;a=15;break;case 15:z=h;a=y!=0?16:22;break;case 16:a=z!=0?17:22;break;case 17:G=HEAP[l];o-=1;G=HEAP[G+12+o*2];a=o>0?18:19;break;case 18:a=HEAP[l];o-=1;G=G*32768+HEAP[a+12+o*2]; -a=o>0?18:19;break;case 19:E=HEAP[m];p=a=p-1;E=HEAP[E+12+a*2];a=a>0?20:21;break;case 20:a=HEAP[m];p-=1;E=E*32768+HEAP[a+12+p*2];a=p>0?20:21;break;case 21:A=G/E;a=62;break;case 22:u=o-p;a=o-p>143165575?78:23;break;case 23:a=u<-143165575?70:24;break;case 24:u*=15;a=_bits_in_digit(HEAP[HEAP[l]+12+(o-1)*2]&65535);var J=_bits_in_digit(HEAP[HEAP[m]+12+(p-1)*2]&65535);u=a+u+(0-J);a=u>1024?78:25;break;case 25:a=u<-1075?70:26;break;case 26:q=(u>=-1021?u:-1021)-55;w=0;var F=q;a=q<=0?27:33;break;case 27:R=(0- -F)/15|0;a=2147483646-R<=o?28:29;break;case 28:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str242668);a=79;break;case 29:n=__PyLong_New(o+1+R);a=n==0?79:30;break;case 30:D=0;a=D0?36:41;break;case 41:_long_normalize(n);s=HEAP[n+8];var Q=HEAP[m];a=p==1?42:44;break;case 42:a=_inplace_divrem1(n+12,n+12,s,HEAP[Q+12]&65535);_long_normalize(n);a=a!=0?43:51;break;case 43:w=1;a=51;break;case 44:L=_x_divrem(n,Q,I);HEAP[n]-=1;a=HEAP[n]==0?45:46;break;case 45:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=46;break;case 46:n=L;a=L==0?79:47;break; -case 47:a=HEAP[HEAP[I]+8]!=0?48:49;break;case 48:w=1;a=49;break;case 49:a=HEAP[I];HEAP[a]-=1;a=HEAP[a]==0?50:51;break;case 50:FUNCTION_TABLE[HEAP[HEAP[HEAP[I]+4]+24]](HEAP[I]);a=51;break;case 51:s=HEAP[n+8]>=0?HEAP[n+8]:0-HEAP[n+8];t=s*15;r=_bits_in_digit(HEAP[n+12+(s-1)*2]&65535);t=t+-15+r;r=-1021-q;r=(r>=t?r:t)-53;r=1<0?55:56;break; -case 55:s-=1;C=C*32768+HEAP[n+12+s*2];a=s>0?55:56;break;case 56:HEAP[n]-=1;a=HEAP[n]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=58;break;case 58:a=t+q>1023?59:61;break;case 59:a=t+q>1024?78:60;break;case 60:a=_ldexp(1,t)==C?78:61;break;case 61:A=_ldexp(C,q);a=62;break;case 62:a=HEAP[l];HEAP[a]-=1;a=HEAP[a]==0?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);a=64;break;case 64:a=HEAP[m];HEAP[a]-=1;a=HEAP[a]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+ -4]+24]](HEAP[m]);a=66;break;case 66:var Z=A;a=x!=0?67:68;break;case 67:f=0-Z;a=69;break;case 68:f=Z;a=69;break;case 69:k=_PyFloat_FromDouble(f);a=84;break;case 70:a=HEAP[l];HEAP[a]-=1;a=HEAP[a]==0?71:72;break;case 71:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);a=72;break;case 72:a=HEAP[m];HEAP[a]-=1;a=HEAP[a]==0?73:74;break;case 73:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);a=74;break;case 74:a=x!=0?75:76;break;case 75:d=0;a=77;break;case 76:d=0;a=77;break;case 77:k=_PyFloat_FromDouble(d); -a=84;break;case 78:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str252669);a=79;break;case 79:a=HEAP[l];HEAP[a]-=1;a=HEAP[a]==0?80:81;break;case 80:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);a=81;break;case 81:a=HEAP[m];HEAP[a]-=1;a=HEAP[a]==0?82:83;break;case 82:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);a=83;break;case 83:k=0;a=84;break;case 84:return c=k,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _long_mod(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=_convert_binop(g,e,d,f)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;c=__Py_NotImplementedStruct;a=9;break;case 2:a=_l_divmod(HEAP[d],HEAP[f],0,h)<0?3:4;break;case 3:HEAP[h]=0;a=4;break;case 4:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=6;break;case 6:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+ -4]+24]](HEAP[f]);a=8;break;case 8:c=HEAP[h];a=9;break;case 9:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _long_divmod(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8,j=b+12,k;a=_convert_binop(g,e,d,f)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;c=__Py_NotImplementedStruct;a=19;break;case 2:a=_l_divmod(HEAP[d],HEAP[f],h,j)<0?3:8;break;case 3:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=5;break;case 5:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+ -4]+24]](HEAP[f]);a=7;break;case 7:c=0;a=19;break;case 8:k=_PyTuple_New(2);var l=HEAP[h];a=k!=0?9:10;break;case 9:_PyTuple_SetItem(k,0,l);_PyTuple_SetItem(k,1,HEAP[j]);a=14;break;case 10:HEAP[l]-=1;a=HEAP[l]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=12;break;case 12:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=14;break;case 14:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+ -4]+24]](HEAP[d]);a=16;break;case 16:a=HEAP[f];HEAP[a]-=1;a=HEAP[a]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);a=18;break;case 18:c=k;a=19;break;case 19:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _long_pow(g,e,b){var a=STACKTOP;STACKTOP+=140;_memset(a,0,140);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l=a,m=a+4,n,o,p,q,r,u,s=a+8,t=a+12,v,w,x;f=g;h=e;j=b;p=o=0;HEAP[s]=0;_llvm_memset_p0i8_i32(t,0,128,4,0);c=_convert_binop(f,h,l,m)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;k=__Py_NotImplementedStruct;c=136;break;case 2:var y=j;c=(HEAP[HEAP[j+4]+84]&16777216)!=0?3:4;break;case 3:n=y;HEAP[j]+=1;var z=n,d=3;c=13;break;case 4:var C=j;c=(HEAP[HEAP[y+4]+84]&8388608)!= -0?5:6;break;case 5:var A=n=_PyLong_FromLong(HEAP[C+8]);A==0?(d=5,c=115):(d=5,c=13);break;case 6:c=C==__Py_NoneStruct?7:8;break;case 7:n=0;d=7;c=13;break;case 8:c=HEAP[l];HEAP[c]-=1;c=HEAP[c]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);c=10;break;case 10:c=HEAP[m];HEAP[c]-=1;c=HEAP[c]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);c=12;break;case 12:HEAP[__Py_NotImplementedStruct]+=1;k=__Py_NotImplementedStruct;c=136;break;case 13:var G=(d==5?A: -d==7?0:z)!=0;c=HEAP[HEAP[m]+8]<0?14:21;break;case 14:c=G?15:16;break;case 15:_PyErr_SetString(HEAP[_PyExc_TypeError],__str262670);c=115;break;case 16:c=HEAP[l];HEAP[c]-=1;c=HEAP[c]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);c=18;break;case 18:c=HEAP[m];HEAP[c]-=1;c=HEAP[c]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);c=20;break;case 20:k=FUNCTION_TABLE[HEAP[HEAP[_PyFloat_Type+48]+24]](f,h,j);c=136;break;case 21:c=G?22:37;break;case 22:c=HEAP[n+ -8]==0?23:24;break;case 23:_PyErr_SetString(HEAP[_PyExc_ValueError],__str272671);c=115;break;case 24:c=HEAP[n+8]<0?25:29;break;case 25:o=1;c=__PyLong_Copy(n);HEAP[s]=c;c=HEAP[s]==0?115:26;break;case 26:HEAP[n]-=1;c=HEAP[n]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=28;break;case 28:n=HEAP[s];HEAP[s]=0;HEAP[n+8]=0-HEAP[n+8];c=29;break;case 29:c=HEAP[n+8]==1?30:32;break;case 30:c=HEAP[n+12]==1?31:32;break;case 31:p=_PyLong_FromLong(0);c=119;break;case 32:c=HEAP[HEAP[l]+8]<0?33:37; -break;case 33:c=_l_divmod(HEAP[l],n,0,s)<0?115:34;break;case 34:c=HEAP[l];HEAP[c]-=1;c=HEAP[c]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);c=36;break;case 36:HEAP[l]=HEAP[s];HEAP[s]=0;c=37;break;case 37:p=c=_PyLong_FromLong(1);c=c==0?119:38;break;case 38:c=HEAP[HEAP[m]+8]<=8?39:66;break;case 39:var E=HEAP[HEAP[m]+8]-1;q=E;d=39;c=65;break;case 40:v=HEAP[HEAP[m]+12+q*2];r=16384;d=40;c=63;break;case 41:c=_long_mul(p,p);HEAP[s]=c;c=HEAP[s]==0?115:42;break;case 42:c=p!=0?43: -45;break;case 43:HEAP[p]-=1;c=HEAP[p]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=45;break;case 45:p=HEAP[s];HEAP[s]=0;c=n!=0?46:51;break;case 46:c=_l_divmod(p,n,0,s)<0?115:47;break;case 47:c=p!=0?48:50;break;case 48:HEAP[p]-=1;c=HEAP[p]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=50;break;case 50:p=HEAP[s];HEAP[s]=0;c=51;break;case 51:c=(v&r)!=0?52:62;break;case 52:c=_long_mul(p,HEAP[l]);HEAP[s]=c;c=HEAP[s]==0?115:53;break;case 53:c=p!=0?54:56;break;case 54:HEAP[p]-= -1;c=HEAP[p]==0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=56;break;case 56:p=HEAP[s];HEAP[s]=0;c=n!=0?57:62;break;case 57:c=_l_divmod(p,n,0,s)<0?115:58;break;case 58:c=p!=0?59:61;break;case 59:HEAP[p]-=1;c=HEAP[p]==0?60:61;break;case 60:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=61;break;case 61:p=HEAP[s];HEAP[s]=0;c=62;break;case 62:var D=r>>1;r=D;d=62;c=63;break;case 63:c=(d==62?D:16384)!=0?41:64;break;case 64:var R=q-1;q=R;d=64;c=65;break;case 65:c=(d==64?R:E)>=0?40:109;break;case 66:HEAP[p]+= -1;HEAP[t]=p;q=1;d=66;c=78;break;case 67:c=_long_mul(HEAP[t+(q-1)*4],HEAP[l]);HEAP[s]=c;c=HEAP[s]==0?115:68;break;case 68:c=HEAP[t+q*4]!=0?69:71;break;case 69:c=HEAP[t+q*4];HEAP[c]-=1;c=HEAP[c]==0?70:71;break;case 70:FUNCTION_TABLE[HEAP[HEAP[HEAP[t+q*4]+4]+24]](HEAP[t+q*4]);c=71;break;case 71:HEAP[t+q*4]=HEAP[s];HEAP[s]=0;c=n!=0?72:77;break;case 72:c=_l_divmod(HEAP[t+q*4],n,0,s)<0?115:73;break;case 73:c=HEAP[t+q*4]!=0?74:76;break;case 74:c=HEAP[t+q*4];HEAP[c]-=1;c=HEAP[c]==0?75:76;break;case 75:FUNCTION_TABLE[HEAP[HEAP[HEAP[t+ -q*4]+4]+24]](HEAP[t+q*4]);c=76;break;case 76:HEAP[t+q*4]=HEAP[s];HEAP[s]=0;c=77;break;case 77:var M=q+1;q=M;d=77;c=78;break;case 78:c=(d==77?M:1)<=31?67:79;break;case 79:var L=HEAP[HEAP[m]+8]-1;q=L;d=79;c=108;break;case 80:w=HEAP[HEAP[m]+12+q*2];r=10;d=80;c=106;break;case 81:x=w>>r&31;u=0;d=81;c=93;break;case 82:c=_long_mul(p,p);HEAP[s]=c;c=HEAP[s]==0?115:83;break;case 83:c=p!=0?84:86;break;case 84:HEAP[p]-=1;c=HEAP[p]==0?85:86;break;case 85:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=86;break;case 86:p= -HEAP[s];HEAP[s]=0;c=n!=0?87:92;break;case 87:c=_l_divmod(p,n,0,s)<0?115:88;break;case 88:c=p!=0?89:91;break;case 89:HEAP[p]-=1;c=HEAP[p]==0?90:91;break;case 90:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=91;break;case 91:p=HEAP[s];HEAP[s]=0;c=92;break;case 92:var I=u+1;u=I;d=92;c=93;break;case 93:c=(d==92?I:0)<=4?82:94;break;case 94:c=x!=0?95:105;break;case 95:c=_long_mul(p,HEAP[t+x*4]);HEAP[s]=c;c=HEAP[s]==0?115:96;break;case 96:c=p!=0?97:99;break;case 97:HEAP[p]-=1;c=HEAP[p]==0?98:99;break;case 98:FUNCTION_TABLE[HEAP[HEAP[p+ -4]+24]](p);c=99;break;case 99:p=HEAP[s];HEAP[s]=0;c=n!=0?100:105;break;case 100:c=_l_divmod(p,n,0,s)<0?115:101;break;case 101:c=p!=0?102:104;break;case 102:HEAP[p]-=1;c=HEAP[p]==0?103:104;break;case 103:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=104;break;case 104:p=HEAP[s];HEAP[s]=0;c=105;break;case 105:var J=r-5;r=J;d=105;c=106;break;case 106:c=(d==105?J:10)>=0?81:107;break;case 107:var F=q-1;q=F;d=107;c=108;break;case 108:c=(d==107?F:L)>=0?80:109;break;case 109:c=o!=0?110:119;break;case 110:c=HEAP[p+ -8]!=0?111:119;break;case 111:c=_long_sub(p,n);HEAP[s]=c;c=HEAP[s]==0?115:112;break;case 112:HEAP[p]-=1;c=HEAP[p]==0?113:114;break;case 113:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=114;break;case 114:p=HEAP[s];HEAP[s]=0;c=119;break;case 115:c=p!=0?116:119;break;case 116:HEAP[p]-=1;c=HEAP[p]==0?117:118;break;case 117:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=118;break;case 118:p=0;c=119;break;case 119:c=HEAP[HEAP[m]+8]>8?120:125;break;case 120:q=0;c=121;break;case 121:c=HEAP[t+q*4]!=0?122:124;break;case 122:c= -HEAP[t+q*4];HEAP[c]-=1;c=HEAP[c]==0?123:124;break;case 123:FUNCTION_TABLE[HEAP[HEAP[HEAP[t+q*4]+4]+24]](HEAP[t+q*4]);c=124;break;case 124:q=c=q+1;c=c<=31?121:125;break;case 125:c=HEAP[l];HEAP[c]-=1;c=HEAP[c]==0?126:127;break;case 126:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);c=127;break;case 127:c=HEAP[m];HEAP[c]-=1;c=HEAP[c]==0?128:129;break;case 128:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);c=129;break;case 129:c=n!=0?130:132;break;case 130:HEAP[n]-=1;c=HEAP[n]==0?131:132;break; -case 131:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=132;break;case 132:c=HEAP[s]!=0?133:135;break;case 133:c=HEAP[s];HEAP[c]-=1;c=HEAP[c]==0?134:135;break;case 134:FUNCTION_TABLE[HEAP[HEAP[HEAP[s]+4]+24]](HEAP[s]);c=135;break;case 135:k=p;c=136;break;case 136:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _long_invert(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;d=_PyLong_FromLong(1);e=d==0?1:2;break;case 1:a=0;e=7;break;case 2:c=_long_add(b,d);HEAP[d]-=1;e=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=4;break;case 4:e=c==0?5:6;break;case 5:a=0;e=7;break;case 6:HEAP[c+8]=0-HEAP[c+8];a=c;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _long_neg(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[b+8]==0?1:3;break;case 1:e=HEAP[b+4]==_PyLong_Type?2:3;break;case 2:HEAP[b]+=1;a=b;e=6;break;case 3:c=e=__PyLong_Copy(b);e=e!=0?4:5;break;case 4:HEAP[c+8]=0-HEAP[b+8];e=5;break;case 5:a=c;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _long_abs(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=HEAP[e+8]<0?1:2;break;case 1:b=_long_neg(a);e=3;break;case 2:b=_long_long(a);e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _long_nonzero(g){return HEAP[g+8]!=0} -function _long_rshift(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h=b,j=b+4,k,l,m,n,o,p,q,r,u,s,t,v;a=g;d=e;k=0;a=_convert_binop(a,d,h,j)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=33;break;case 2:a=HEAP[HEAP[h]+8]<0?3:9;break;case 3:t=_long_invert(HEAP[h]);a=t==0?28:4;break;case 4:v=_long_rshift(t,HEAP[j]);HEAP[t]-=1;a=HEAP[t]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=6;break;case 6:a= -v==0?28:7;break;case 7:k=_long_invert(v);HEAP[v]-=1;a=HEAP[v]==0?8:28;break;case 8:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);a=28;break;case 9:var w=l=_PyLong_AsSsize_t(HEAP[j]);w==-1?(c=9,a=10):(c=9,a=12);break;case 10:a=_PyErr_Occurred()!=0?28:11;break;case 11:var x=l,c=11;a=12;break;case 12:a=(c==11?x:w)<0?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_ValueError],__str282672);a=28;break;case 14:n=l/15|0;m=(HEAP[HEAP[h]+8]>=0?HEAP[HEAP[h]+8]:0-HEAP[HEAP[h]+8])-n;a=m<=0?15:20;break;case 15:k=__PyLong_New(0); -a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=17;break;case 17:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=19;break;case 19:f=k;a=33;break;case 20:o=l%15;p=15-o;u=(1<>o&65535&u;a=q+1=0?HEAP[HEAP[h]+8]:0-HEAP[HEAP[h]+8];n=o+m;a=p!=0?8:9;break;case 8:n+=1;a=9;break;case 9:k=a=__PyLong_New(n);a=a==0?19:10;break;case 10:a=HEAP[HEAP[h]+8]<0?11:12;break;case 11:HEAP[k+8]=0-HEAP[k+8];a=12;break;case 12:q=0;a=q>>=15;q+=1;r+=1;a=r>>=15;h+=1;a=h=0?HEAP[c+8]:0-HEAP[c+8];l=HEAP[c+8]<0;a=l!=0?1:4;break;case 1:u=__PyLong_New(o);a=u==0?2:3;break;case 2:k=0;a=52;break;case 3:_v_complement(u+12,c+12,o);c=u;a=5;break;case 4:HEAP[c]+=1;a=5;break;case 5:p=HEAP[f+8]>=0?HEAP[f+8]:0-HEAP[f+8];m=HEAP[f+8]<0;a=HEAP[f+8]<0!=0?6:11;break;case 6:u=__PyLong_New(p);a=u==0?7:10;break;case 7:HEAP[c]-=1;a=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+ -4]+24]](c);a=9;break;case 9:k=0;a=52;break;case 10:_v_complement(u+12,f+12,p);f=u;a=12;break;case 11:HEAP[f]+=1;a=12;break;case 12:a=o=0?HEAP[g+8]:0-HEAP[g+8])*2+HEAP[HEAP[g+4]+16])} -function _long_bit_length(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k;b=g;j=0;h=HEAP[b+8]>=0?HEAP[b+8]:0-HEAP[b+8];e=h==0?1:2;break;case 1:a=_PyInt_FromLong(0);e=24;break;case 2:k=HEAP[b+12+(h-1)*2];e=HEAP[b+12+(h-1)*2]>31?3:4;break;case 3:j+=6;k=e=k>>>6;e=e>31?3:4;break;case 4:j=HEAP[_BitLengthTable2658+k]+j;var l=h;e=h<=143165576?5:6;break;case 5:a=_PyInt_FromSsize_t(l*15+-15+j);e=24;break;case 6:c=_PyLong_FromSsize_t(l-1);e=c==0?7:8;break;case 7:a=0;e=24;break;case 8:d=_PyLong_FromLong(15); -e=d==0?21:9;break;case 9:f=_long_mul(c,d);HEAP[d]-=1;e=HEAP[d]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=11;break;case 11:e=f==0?21:12;break;case 12:HEAP[c]-=1;e=HEAP[c]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=14;break;case 14:c=f;d=e=_PyLong_FromLong(j);e=e==0?21:15;break;case 15:f=_long_add(c,d);HEAP[d]-=1;e=HEAP[d]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=17;break;case 17:e=f==0?21:18;break;case 18:HEAP[c]-=1;e=HEAP[c]==0?19:20; -break;case 19:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=20;break;case 20:a=c=f;e=24;break;case 21:HEAP[c]-=1;e=HEAP[c]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=23;break;case 23:a=0;e=24;break;case 24:return g=a;default:assert(0,"bad label: "+e)}} -function _PyLong_GetInfo(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c;a=0;b=_PyStructSequence_New(_Long_InfoType);g=b==0?1:2;break;case 1:e=0;g=8;break;case 2:var d=b;g=a;var f=_PyInt_FromLong(15);HEAP[d+12+g*4]=f;a+=1;d=b;g=a;f=_PyInt_FromLong(2);HEAP[d+12+g*4]=f;a+=1;g=_PyErr_Occurred();d=b;g=g!=0?3:7;break;case 3:g=d!=0?4:6;break;case 4:c=b;b=0;HEAP[c]-=1;g=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=6;break;case 6:e=0;g=8;break;case 7:e=d;g=8;break;case 8:return e; -default:assert(0,"bad label: "+g)}}function __PyLong_Init(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_Long_InfoType+12]==0?1:2;break;case 1:_PyStructSequence_InitType(_Long_InfoType,_long_info_desc);g=2;break;case 2:return 1;default:assert(0,"bad label: "+g)}} -function _w_more(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[c+12]==0?6:1;break;case 1:d=_PyString_Size(HEAP[c+12]);f=d+1024+d;b=f>33554432?2:3;break;case 2:f=(d>>3)+d;b=3;break;case 3:b=__PyString_Resize(c+12,f);var h=c;b=b!=0?4:5;break;case 4:HEAP[h+20]=0;HEAP[c+16]=HEAP[c+20];b=6;break;case 5:HEAP[c+16]=HEAP[h+12]+20+d;HEAP[c+20]=HEAP[c+12]+20+f;b=HEAP[c+16];HEAP[b]=a&255;HEAP[c+16]=b+1;b=6;break;case 6:return;default:assert(0,"bad label: "+b)}} -function _w_string(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;d=e;f=b;a=HEAP[f]!=0?2:1;break;case 1:d=a=d-1;a=a>=0?3:9;break;case 2:_fwrite(c,1,d,HEAP[f]);a=9;break;case 3:var h=f;a=HEAP[f]!=0?4:5;break;case 4:__IO_putc(HEAP[c],HEAP[h]);a=8;break;case 5:a=HEAP[h+16]!=HEAP[f+20]?6:7;break;case 6:a=HEAP[f+16];HEAP[a]=HEAP[c];HEAP[f+16]=a+1;a=8;break;case 7:_w_more(HEAP[c],f);a=8;break;case 8:c+=1;d=a=d-1;a=a>=0?3:9;break;case 9:return;default:assert(0,"bad label: "+a)}} -function _w_short(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;var d=c=e;b=(HEAP[c]|0)!=0?1:2;break;case 1:b=HEAP[d];var f=reSign(a&255,8,1);__IO_putc(f,b);b=5;break;case 2:b=(HEAP[d+16]|0)!=(HEAP[c+20]|0)?3:4;break;case 3:b=HEAP[c+16];HEAP[b]=a&255;HEAP[c+16]=b+1;b=5;break;case 4:b=reSign(a&255,8,1);_w_more(b,c);b=5;break;case 5:var h=c;b=HEAP[c]!=0?6:7;break;case 6:__IO_putc(a>>8&255,HEAP[h]);b=10;break;case 7:b=HEAP[h+16]!=HEAP[c+20]?8:9;break;case 8:b=HEAP[c+16];HEAP[b]=a>>8&255;HEAP[c+ -16]=b+1;b=10;break;case 9:_w_more(a>>8&255,c);b=10;break;case 10:return;default:assert(0,"bad label: "+b)}} -function _w_long(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;var d=c=e;b=(HEAP[c]|0)!=0?1:2;break;case 1:b=HEAP[d];var f=reSign(a&255,8,1);__IO_putc(f,b);b=5;break;case 2:b=(HEAP[d+16]|0)!=(HEAP[c+20]|0)?3:4;break;case 3:b=HEAP[c+16];HEAP[b]=a&255;HEAP[c+16]=b+1;b=5;break;case 4:b=reSign(a&255,8,1);_w_more(b,c);b=5;break;case 5:var h=c;b=HEAP[c]!=0?6:7;break;case 6:__IO_putc(a>>8&255,HEAP[h]);b=10;break;case 7:b=HEAP[h+16]!=HEAP[c+20]?8:9;break;case 8:b=HEAP[c+16];HEAP[b]=a>>8&255;HEAP[c+ -16]=b+1;b=10;break;case 9:_w_more(a>>8&255,c);b=10;break;case 10:var j=c;b=HEAP[c]!=0?11:12;break;case 11:__IO_putc(a>>16&255,HEAP[j]);b=15;break;case 12:b=HEAP[j+16]!=HEAP[c+20]?13:14;break;case 13:b=HEAP[c+16];HEAP[b]=a>>16&255;HEAP[c+16]=b+1;b=15;break;case 14:_w_more(a>>16&255,c);b=15;break;case 15:var k=c;b=HEAP[c]!=0?16:17;break;case 16:__IO_putc(a>>24&255,HEAP[k]);b=20;break;case 17:b=HEAP[k+16]!=HEAP[c+20]?18:19;break;case 18:b=HEAP[c+16];HEAP[b]=a>>24&255;HEAP[c+16]=b+1;b=20;break;case 19:_w_more(a>> -24&255,c);b=20;break;case 20:return;default:assert(0,"bad label: "+b)}} -function _w_PyLong(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;var m=c=e;b=HEAP[c]!=0?1:2;break;case 1:__IO_putc(108,HEAP[m]);b=5;break;case 2:var n=c;b=HEAP[m+16]!=HEAP[c+20]?3:4;break;case 3:b=HEAP[n+16];HEAP[b]=108;HEAP[c+16]=b+1;b=5;break;case 4:_w_more(108,n);b=5;break;case 5:b=HEAP[a+8]==0?6:7;break;case 6:_w_long(0,c);b=18;break;case 7:j=HEAP[a+8]>=0?HEAP[a+8]:0-HEAP[a+8];k=j-1;l=HEAP[a+12+(j-1)*2];b=8;break;case 8:l=b=l>>>15;k+=1;b=b!=0?8:9;break;case 9:var o=k;b=HEAP[a+ -8]<=0?10:11;break;case 10:d=0-o;b=12;break;case 11:d=o;b=12;break;case 12:_w_long(d,c);f=0;b=j-1>f?13:16;break;case 13:l=HEAP[a+12+f*2];h=0;b=14;break;case 14:_w_short(l&32767,c);l>>>=15;h=b=h+1;b=b<=0?14:15;break;case 15:f+=1;b=j-1>f?13:16;break;case 16:l=HEAP[a+12+(j-1)*2];b=17;break;case 17:_w_short(l&32767,c);l=b=l>>>15;b=b!=0?17:18;break;case 18:return;default:assert(0,"bad label: "+b)}} -function _w_object(g,e){var b=STACKTOP;STACKTOP+=32;_memset(b,0,32);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m=b,n,o=b+8,p,q,r,u,s,t=b+16,v=b+20,w=b+24,x,y,z,C=b+28,A;d=g;f=e;HEAP[f+8]+=1;a=HEAP[f+8]>2E3?1:2;break;case 1:HEAP[f+4]=2;a=214;break;case 2:a=d==0?3:8;break;case 3:var G=f;a=HEAP[f]!=0?4:5;break;case 4:__IO_putc(48,HEAP[G]);a=214;break;case 5:var E=f;a=HEAP[G+16]!=HEAP[f+20]?6:7;break;case 6:a=HEAP[E+16];HEAP[a]=48;HEAP[f+16]=a+1;a=214;break;case 7:_w_more(48,E);a=214;break; -case 8:a=d==__Py_NoneStruct?9:14;break;case 9:var D=f;a=HEAP[f]!=0?10:11;break;case 10:__IO_putc(78,HEAP[D]);a=214;break;case 11:var R=f;a=HEAP[D+16]!=HEAP[f+20]?12:13;break;case 12:a=HEAP[R+16];HEAP[a]=78;HEAP[f+16]=a+1;a=214;break;case 13:_w_more(78,R);a=214;break;case 14:a=d==HEAP[_PyExc_StopIteration]?15:20;break;case 15:var M=f;a=HEAP[f]!=0?16:17;break;case 16:__IO_putc(83,HEAP[M]);a=214;break;case 17:var L=f;a=HEAP[M+16]!=HEAP[f+20]?18:19;break;case 18:a=HEAP[L+16];HEAP[a]=83;HEAP[f+16]=a+1; -a=214;break;case 19:_w_more(83,L);a=214;break;case 20:a=d==__Py_EllipsisObject?21:26;break;case 21:var I=f;a=HEAP[f]!=0?22:23;break;case 22:__IO_putc(46,HEAP[I]);a=214;break;case 23:var J=f;a=HEAP[I+16]!=HEAP[f+20]?24:25;break;case 24:a=HEAP[J+16];HEAP[a]=46;HEAP[f+16]=a+1;a=214;break;case 25:_w_more(46,J);a=214;break;case 26:a=d==__Py_ZeroStruct?27:32;break;case 27:var F=f;a=HEAP[f]!=0?28:29;break;case 28:__IO_putc(70,HEAP[F]);a=214;break;case 29:var V=f;a=HEAP[F+16]!=HEAP[f+20]?30:31;break;case 30:a= -HEAP[V+16];HEAP[a]=70;HEAP[f+16]=a+1;a=214;break;case 31:_w_more(70,V);a=214;break;case 32:a=d==__Py_TrueStruct?33:38;break;case 33:var Q=f;a=HEAP[f]!=0?34:35;break;case 34:__IO_putc(84,HEAP[Q]);a=214;break;case 35:var Z=f;a=HEAP[Q+16]!=HEAP[f+20]?36:37;break;case 36:a=HEAP[Z+16];HEAP[a]=84;HEAP[f+16]=a+1;a=214;break;case 37:_w_more(84,Z);a=214;break;case 38:var K=d;a=HEAP[d+4]==_PyInt_Type?39:45;break;case 39:l=HEAP[K+8];var N=f;a=HEAP[f]!=0?40:41;break;case 40:__IO_putc(105,HEAP[N]);a=44;break; -case 41:var H=f;a=HEAP[N+16]!=HEAP[f+20]?42:43;break;case 42:a=HEAP[H+16];HEAP[a]=105;HEAP[f+16]=a+1;a=44;break;case 43:_w_more(105,H);a=44;break;case 44:_w_long(l,f);a=214;break;case 45:var ba=d;a=HEAP[K+4]==_PyLong_Type?46:47;break;case 46:a=ba;_w_PyLong(a,f);a=214;break;case 47:a=HEAP[ba+4]==_PyFloat_Type?48:70;break;case 48:var W=d;a=HEAP[f+28]>1?49:57;break;case 49:var B=_PyFloat_AsDouble(W);a=__PyFloat_Pack8(B,m,1);B=f;a=a<0?50:51;break;case 50:HEAP[B+4]=1;a=215;break;case 51:var Y=f;a=HEAP[B]!= -0?52:53;break;case 52:__IO_putc(103,HEAP[Y]);a=56;break;case 53:var fa=f;a=HEAP[Y+16]!=HEAP[f+20]?54:55;break;case 54:a=HEAP[fa+16];HEAP[a]=103;HEAP[f+16]=a+1;a=56;break;case 55:_w_more(103,fa);a=56;break;case 56:_w_string(m,8,f);a=214;break;case 57:n=_PyOS_double_to_string(HEAP[W+8],103,17,0,0);a=n==0?58:59;break;case 58:HEAP[f+4]=3;a=215;break;case 59:k=_strlen(n);var ha=f;a=HEAP[f]!=0?60:61;break;case 60:__IO_putc(102,HEAP[ha]);a=64;break;case 61:var la=f;a=HEAP[ha+16]!=HEAP[f+20]?62:63;break; -case 62:a=HEAP[la+16];HEAP[a]=102;HEAP[f+16]=a+1;a=64;break;case 63:_w_more(102,la);a=64;break;case 64:var ra=f;a=HEAP[f]!=0?65:66;break;case 65:__IO_putc(k,HEAP[ra]);a=69;break;case 66:a=HEAP[ra+16]!=HEAP[f+20]?67:68;break;case 67:a=HEAP[f+16];HEAP[a]=k&255;HEAP[f+16]=a+1;a=69;break;case 68:_w_more(k,f);a=69;break;case 69:_w_string(n,k,f);_PyMem_Free(n);a=214;break;case 70:a=HEAP[d+4]==_PyComplex_Type?71:102;break;case 71:a=HEAP[f+28]>1?72:82;break;case 72:var ya=_PyComplex_RealAsDouble(d);a=__PyFloat_Pack8(ya, -o,1);ya=f;a=a<0?73:74;break;case 73:HEAP[ya+4]=1;a=215;break;case 74:var Da=f;a=HEAP[ya]!=0?75:76;break;case 75:__IO_putc(121,HEAP[Da]);a=79;break;case 76:var Ua=f;a=HEAP[Da+16]!=HEAP[f+20]?77:78;break;case 77:a=HEAP[Ua+16];HEAP[a]=121;HEAP[f+16]=a+1;a=79;break;case 78:_w_more(121,Ua);a=79;break;case 79:_w_string(o,8,f);a=_PyComplex_ImagAsDouble(d);a=__PyFloat_Pack8(a,o,1)<0?80:81;break;case 80:HEAP[f+4]=1;a=215;break;case 81:_w_string(o,8,f);a=214;break;case 82:var Na=f;a=HEAP[f]!=0?83:84;break; -case 83:__IO_putc(120,HEAP[Na]);a=87;break;case 84:var Pa=f;a=HEAP[Na+16]!=HEAP[f+20]?85:86;break;case 85:a=HEAP[Pa+16];HEAP[a]=120;HEAP[f+16]=a+1;a=87;break;case 86:_w_more(120,Pa);a=87;break;case 87:p=_PyComplex_RealAsDouble(d);p=a=_PyOS_double_to_string(p,103,17,0,0);a=a==0?88:89;break;case 88:HEAP[f+4]=3;a=215;break;case 89:k=_strlen(p);var wa=f;a=HEAP[f]!=0?90:91;break;case 90:__IO_putc(k,HEAP[wa]);a=94;break;case 91:a=HEAP[wa+16]!=HEAP[f+20]?92:93;break;case 92:a=HEAP[f+16];HEAP[a]=k&255;HEAP[f+ -16]=a+1;a=94;break;case 93:_w_more(k,f);a=94;break;case 94:_w_string(p,k,f);_PyMem_Free(p);p=_PyComplex_ImagAsDouble(d);p=a=_PyOS_double_to_string(p,103,17,0,0);a=a==0?95:96;break;case 95:HEAP[f+4]=3;a=215;break;case 96:k=_strlen(p);var Ya=f;a=HEAP[f]!=0?97:98;break;case 97:__IO_putc(k,HEAP[Ya]);a=101;break;case 98:a=HEAP[Ya+16]!=HEAP[f+20]?99:100;break;case 99:a=HEAP[f+16];HEAP[a]=k&255;HEAP[f+16]=a+1;a=101;break;case 100:_w_more(k,f);a=101;break;case 101:_w_string(p,k,f);_PyMem_Free(p);a=214;break; -case 102:a=HEAP[d+4]==_PyString_Type?103:133;break;case 103:a=HEAP[f+24]==0?127:104;break;case 104:a=HEAP[d+16]==0?127:105;break;case 105:q=_PyDict_GetItem(HEAP[f+24],d);a=q!=0?106:112;break;case 106:r=_PyInt_AsLong(q);var Ha=f;a=HEAP[f]!=0?107:108;break;case 107:__IO_putc(82,HEAP[Ha]);a=111;break;case 108:var ta=f;a=HEAP[Ha+16]!=HEAP[f+20]?109:110;break;case 109:a=HEAP[ta+16];HEAP[a]=82;HEAP[f+16]=a+1;a=111;break;case 110:_w_more(82,ta);a=111;break;case 111:_w_long(r,f);a=214;break;case 112:q=_PyDict_Size(HEAP[f+ -24]);q=_PyInt_FromSsize_t(q);a=q==0?115:113;break;case 113:a=_PyDict_SetItem(HEAP[f+24],d,q)<0?115:114;break;case 114:h=1;a=116;break;case 115:h=0;a=116;break;case 116:var Va=h;u=Va;q!=0?(c=116,a=117):(c=116,a=120);break;case 117:HEAP[q]-=1;a=HEAP[q]==0?118:119;break;case 118:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=119;break;case 119:var Ia=u,c=119;a=120;break;case 120:var Wa=f;a=(c==119?Ia:Va)==0?121:122;break;case 121:HEAP[f+8]=HEAP[Wa+8]-1;HEAP[f+4]=1;a=215;break;case 122:var ia=f;a=HEAP[Wa]!= -0?123:124;break;case 123:__IO_putc(116,HEAP[ia]);a=132;break;case 124:var Ba=f;a=HEAP[ia+16]!=HEAP[f+20]?125:126;break;case 125:a=HEAP[Ba+16];HEAP[a]=116;HEAP[f+16]=a+1;a=132;break;case 126:_w_more(116,Ba);a=132;break;case 127:var Xa=f;a=HEAP[f]!=0?128:129;break;case 128:__IO_putc(115,HEAP[Xa]);a=132;break;case 129:var Ta=f;a=HEAP[Xa+16]!=HEAP[f+20]?130:131;break;case 130:a=HEAP[Ta+16];HEAP[a]=115;HEAP[f+16]=a+1;a=132;break;case 131:_w_more(115,Ta);a=132;break;case 132:k=HEAP[d+8];_w_long(k,f);_w_string(d+ -20,k,f);a=214;break;case 133:var Ea=d;a=HEAP[d+4]==_PyUnicode_Type?134:143;break;case 134:s=_PyUnicodeUCS2_AsUTF8String(Ea);var Ga=f;a=s==0?135:136;break;case 135:HEAP[f+8]=HEAP[Ga+8]-1;HEAP[f+4]=1;a=215;break;case 136:var ka=f;a=HEAP[Ga]!=0?137:138;break;case 137:__IO_putc(117,HEAP[ka]);a=141;break;case 138:var Fa=f;a=HEAP[ka+16]!=HEAP[f+20]?139:140;break;case 139:a=HEAP[Fa+16];HEAP[a]=117;HEAP[f+16]=a+1;a=141;break;case 140:_w_more(117,Fa);a=141;break;case 141:k=HEAP[s+8];_w_long(k,f);_w_string(s+ -20,k,f);HEAP[s]-=1;a=HEAP[s]==0?142:214;break;case 142:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=214;break;case 143:a=HEAP[Ea+4]==_PyTuple_Type?144:151;break;case 144:var ma=f;a=HEAP[f]!=0?145:146;break;case 145:__IO_putc(40,HEAP[ma]);a=149;break;case 146:var La=f;a=HEAP[ma+16]!=HEAP[f+20]?147:148;break;case 147:a=HEAP[La+16];HEAP[a]=40;HEAP[f+16]=a+1;a=149;break;case 148:_w_more(40,La);a=149;break;case 149:k=_PyTuple_Size(d);_w_long(k,f);j=0;a=j0?1:2;break;case 1:h=_PyDict_New();c=3;break;case 2:h=0;c=3;break;case 3:HEAP[j+24]=h;HEAP[j+28]=f;_w_object(d,j);c=HEAP[j+24]!=0?4:6;break;case 4:c=HEAP[j+24];HEAP[c]-=1;c=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[j+24]+4]+24]](HEAP[j+24]);c=6;break;case 6:STACKTOP=a;return;default:assert(0,"bad label: "+ -c)}}function _r_string(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;var j=f=b;a=HEAP[f]!=0?1:2;break;case 1:h=_fread(c,1,d,HEAP[j]);a=5;break;case 2:a=HEAP[j+20]-HEAP[f+16]=0?n:0-n;m=1;f=__PyLong_New(h);e=f==0?5:6;break;case 5:d=0;e=27;break;case 6:var p=f,q=h;e=n<=0?7:8;break;case 7:c=0-q;e=9;break;case 8:c=q;e=9;break;case 9:HEAP[p+8]=c;j=0;e=14;break;case 10:l=_r_short(a);e=l<0|l>32768?24: -11;break;case 11:o=((l&65535)<j?(b=14,e=12):(b=14,e=22);break;case 15:l=_r_short(a);e=l<0|l>32768?24:16;break;case 16:e=l==0?17:21;break;case 17:e=m-1==k?18:21;break;case 18:HEAP[f]-=1;e=HEAP[f]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=20;break;case 20:_PyErr_SetString(HEAP[_PyExc_ValueError],__str12723);d=0;e=27;break;case 21:o=((l&65535)<< -k*15&65535)+o;k+=1;e=22;break;case 22:e=k2E3?7:8;break;case 7:HEAP[c+8]-= -1;_PyErr_SetString(HEAP[_PyExc_ValueError],__str32725);k=0;b=215;break;case 8:b=r;b=b==-1?9:b==40?104:b==46?13:b==48?10:b==60?148:b==62?148:b==70?14:b==73?17:b==78?11:b==82?86:b==83?12:b==84?15:b==91?118:b==99?173:b==102?19:b==103?32:b==105?16:b==108?18:b==115?74:b==116?74:b==117?90:b==120?38:b==121?63:b==123?132:213;break;case 9:_PyErr_SetString(HEAP[_PyExc_EOFError],__str42726);u=0;b=214;break;case 10:u=0;b=214;break;case 11:HEAP[__Py_NoneStruct]+=1;u=__Py_NoneStruct;b=214;break;case 12:HEAP[HEAP[_PyExc_StopIteration]]+= -1;u=HEAP[_PyExc_StopIteration];b=214;break;case 13:HEAP[__Py_EllipsisObject]+=1;u=__Py_EllipsisObject;b=214;break;case 14:HEAP[__Py_ZeroStruct]+=1;u=__Py_ZeroStruct;b=214;break;case 15:HEAP[__Py_TrueStruct]+=1;u=__Py_TrueStruct;b=214;break;case 16:u=_r_long(c);u=_PyInt_FromLong(u);b=214;break;case 17:u=_r_long64(c);b=214;break;case 18:u=_r_PyLong(c);b=214;break;case 19:var B=c;b=HEAP[c]!=0?20:21;break;case 20:var Y=__IO_getc(HEAP[B]),a=20;b=25;break;case 21:b=HEAP[B+16]=0?93:98;break;case 93:b=q>=0?94:97;break;case 94:b=q!=0?95:96;break;case 95:d=q;b=99; -break;case 96:d=1;b=99;break;case 97:A=0;b=100;break;case 98:A=0;b=100;break;case 99:A=b=_malloc(d);b=b==0?100:101;break;case 100:u=_PyErr_NoMemory();b=214;break;case 101:b=_r_string(A,q,c);var Na=A;b=b!=q?102:103;break;case 102:_free(Na);_PyErr_SetString(HEAP[_PyExc_EOFError],__str42726);u=0;b=214;break;case 103:u=_PyUnicodeUCS2_DecodeUTF8(Na,q,0);HEAP[n]=u;_free(A);u=HEAP[n];b=214;break;case 104:q=_r_long(c);b=q<0?105:106;break;case 105:_PyErr_SetString(HEAP[_PyExc_ValueError],__str82730);u=0;b= -214;break;case 106:b=_PyTuple_New(q);HEAP[n]=b;b=HEAP[n]==0?107:108;break;case 107:u=0;b=214;break;case 108:p=0;b=116;break;case 109:o=_r_object(c);b=o==0?110:115;break;case 110:b=_PyErr_Occurred()==0?111:112;break;case 111:_PyErr_SetString(HEAP[_PyExc_TypeError],__str92731);b=112;break;case 112:b=HEAP[n];HEAP[b]-=1;b=HEAP[b]==0?113:114;break;case 113:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);b=114;break;case 114:HEAP[n]=0;b=117;break;case 115:HEAP[HEAP[n]+12+p*4]=o;p+=1;b=116;break;case 116:b= -p0&d<=262144?1:8;break;case 1:e=(d&4294967295)>=0?2:5;break;case 2:e=d!=0?3:4;break;case 3:c=d&4294967295;e=6;break;case 4:c=1;e=6;break;case 5:f=0;e=8;break;case 6:f=e=_malloc(c);e=e!=0?7:8;break;case 7:a=_fread(f,1,d&4294967295,b);a=_PyMarshal_ReadObjectFromString(f,a);_free(f);e=9;break;case 8:a=_PyMarshal_ReadObjectFromFile(b);e=9;break;case 9:return g=a;default:assert(0,"bad label: "+ -e)}}function _PyMarshal_ReadObjectFromFile(g){var e=STACKTOP;STACKTOP+=32;_memset(e,0,32);var b;for(b=-1;;)switch(b){case -1:var a=e,c;HEAP[a]=g;c=_PyList_New(0);HEAP[a+24]=c;HEAP[a+8]=0;HEAP[a+20]=0;HEAP[a+16]=HEAP[a+20];c=_r_object(a);b=HEAP[a+24];HEAP[b]-=1;b=HEAP[b]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+24]+4]+24]](HEAP[a+24]);b=2;break;case 2:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyMarshal_ReadObjectFromString(g,e){var b=STACKTOP;STACKTOP+=32;_memset(b,0,32);var a;for(a=-1;;)switch(a){case -1:var c,d;d=b;c=g;a=e;HEAP[d]=0;HEAP[d+16]=c;HEAP[d+20]=c+a;c=_PyList_New(0);HEAP[d+24]=c;HEAP[d+8]=0;c=_r_object(d);a=HEAP[d+24];HEAP[a]-=1;a=HEAP[a]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+24]+4]+24]](HEAP[d+24]);a=2;break;case 2:return d=c,STACKTOP=b,d;default:assert(0,"bad label: "+a)}} -function _set_error(g){var e;for(e=-1;;)switch(e){case -1:e=g;e=e==1?2:e==3?1:3;break;case 1:_PyErr_NoMemory();e=4;break;case 2:_PyErr_SetString(HEAP[_PyExc_ValueError],__str182740);e=4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str192741);e=4;break;case 4:return;default:assert(0,"bad label: "+e)}} -function _PyMarshal_WriteObjectToString(g,e){var b=STACKTOP;STACKTOP+=32;_memset(b,0,32);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b;c=g;d=e;HEAP[j]=0;a=_PyString_FromStringAndSize(0,50);HEAP[j+12]=a;a=HEAP[j+12]==0?1:2;break;case 1:h=0;a=17;break;case 2:HEAP[j+16]=HEAP[j+12]+20;a=HEAP[j+16];var k=_PyString_Size(HEAP[j+12]);HEAP[j+20]=a+k;HEAP[j+4]=0;HEAP[j+8]=0;HEAP[j+28]=d;a=d>0?3:4;break;case 3:f=_PyDict_New();a=5;break;case 4:f=0;a=5;break;case 5:HEAP[j+24]=f;_w_object(c,j);a=HEAP[j+24]!= -0?6:8;break;case 6:a=HEAP[j+24];HEAP[a]-=1;a=HEAP[a]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[j+24]+4]+24]](HEAP[j+24]);a=8;break;case 8:a=HEAP[j+12]!=0?9:11;break;case 9:a=HEAP[j+12]+20;a=__PyString_Resize(j+12,HEAP[j+16]-a)!=0?10:11;break;case 10:h=0;a=17;break;case 11:var l=HEAP[j+12];a=HEAP[j+4]!=0?12:16;break;case 12:a=l!=0?13:15;break;case 13:a=HEAP[j+12];HEAP[a]-=1;a=HEAP[a]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[j+12]+4]+24]](HEAP[j+12]);a=15;break;case 15:_set_error(HEAP[j+ -4]);h=0;a=17;break;case 16:h=l;a=17;break;case 17:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _marshal_dump(g,e){var b=STACKTOP;STACKTOP+=44;_memset(b,0,44);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+32,j=b+36,k=b+40;a=e;HEAP[k]=2;a=__PyArg_ParseTuple_SizeT(a,__str202742,allocate([h,0,0,0,j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=14;break;case 2:a=HEAP[HEAP[j]+4]!=_PyFile_Type?3:5;break;case 3:a=_PyType_IsSubtype(HEAP[HEAP[j]+4],_PyFile_Type)==0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str212743);d=0;a=14;break;case 5:a=_PyFile_AsFile(HEAP[j]);HEAP[f]=a;HEAP[f+12]=0;HEAP[f+20]=0;HEAP[f+16]=HEAP[f+20];HEAP[f+4]=0;HEAP[f+8]=0;a=HEAP[k]>0?6:7;break;case 6:c=_PyDict_New();a=8;break;case 7:c=0;a=8;break;case 8:HEAP[f+24]=c;HEAP[f+28]=HEAP[k];_w_object(HEAP[h],f);a=HEAP[f+24]!=0?9:11;break;case 9:a=HEAP[f+24];HEAP[a]-=1;a=HEAP[a]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+24]+4]+24]](HEAP[f+24]);a=11;break;case 11:a=HEAP[f+4]!=0?12:13;break;case 12:_set_error(HEAP[f+4]); -d=0;a=14;break;case 13:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=14;break;case 14:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _marshal_load(g,e){var b=STACKTOP;STACKTOP+=32;_memset(b,0,32);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h;c=e;a=HEAP[c+4]!=_PyFile_Type?1:3;break;case 1:a=_PyType_IsSubtype(HEAP[c+4],_PyFile_Type)==0?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_TypeError],__str222744);d=0;a=6;break;case 3:h=_PyFile_AsFile(c);HEAP[f]=h;h=_PyList_New(0);HEAP[f+24]=h;HEAP[f+8]=0;h=_read_object(f);a=HEAP[f+24];HEAP[a]-=1;a=HEAP[a]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+24]+4]+24]](HEAP[f+ -24]);a=5;break;case 5:d=h;a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _marshal_dumps(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=e;HEAP[f]=2;a=__PyArg_ParseTuple_SizeT(a,__str232745,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyMarshal_WriteObjectToString(HEAP[d],HEAP[f]);a=3;break;case 3:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _marshal_loads(g,e){var b=STACKTOP;STACKTOP+=40;_memset(b,0,40);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+32,h=b+36,j;a=__PyArg_ParseTuple_SizeT(e,__str242746,allocate([f,0,0,0,h,0,0,0],["i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:HEAP[d]=0;HEAP[d+16]=HEAP[f];HEAP[d+20]=HEAP[f]+HEAP[h];j=_PyList_New(0);HEAP[d+24]=j;HEAP[d+8]=0;j=_read_object(d);a=HEAP[d+24];HEAP[a]-=1;a=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+24]+4]+24]](HEAP[d+ -24]);a=4;break;case 4:c=j;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _PyMarshal_Init(){var g;for(g=-1;;)switch(g){case -1:var e;e=_Py_InitModule4(__str292751,_marshal_methods,_marshal_doc,0,1013);g=e==0?2:1;break;case 1:_PyModule_AddIntConstant(e,__str302752,2);g=2;break;case 2:return;default:assert(0,"bad label: "+g)}} -function _get_shape0(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=HEAP[e+28]!=0?1:2;break;case 1:b=HEAP[HEAP[a+28]];e=5;break;case 2:e=HEAP[a+20]==0?3:4;break;case 3:b=1;e=5;break;case 4:_PyErr_SetString(HEAP[_PyExc_TypeError],__str2759);b=-1;e=5;break;case 5:return g=b;default:assert(0,"bad label: "+e)}} -function _dup_buffer(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;_llvm_memcpy_p0i8_p0i8_i32(a,c,52,4,0);b=HEAP[c+20]==1?1:3;break;case 1:b=HEAP[c+28]!=0?2:3;break;case 2:HEAP[a+28]=a+40;b=HEAP[a+28];var d=_get_shape0(c);HEAP[b]=d;b=3;break;case 3:b=HEAP[c+20]==1?4:6;break;case 4:b=HEAP[c+32]!=0?5:6;break;case 5:HEAP[a+32]=a+40+4;HEAP[HEAP[a+32]]=HEAP[HEAP[c+32]];b=6;break;case 6:return;default:assert(0,"bad label: "+b)}} -function _memory_getbuf(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;h=0;a=HEAP[c+12+4]!=0?1:2;break;case 1:h=_PyObject_GetBuffer(HEAP[c+12+4],d,f);a=2;break;case 2:a=d!=0?3:4;break;case 3:_dup_buffer(d,c+12);a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}}function _memory_releasebuf(g,e){_PyBuffer_Release(e)} -function _PyMemoryView_FromBuffer(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=__PyObject_GC_New(_PyMemoryView_Type);e=c==0?1:2;break;case 1:a=0;e=5;break;case 2:HEAP[c+8]=0;_dup_buffer(c+12,b);d=c+-12;e=HEAP[d+8]!=-2?3:4;break;case 3:throw _Py_FatalError(__str12761),"Reached an unreachable!";case 4:HEAP[d+8]=-3;HEAP[d]=HEAP[__PyGC_generation0];HEAP[d+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[d+4]]=d;HEAP[HEAP[__PyGC_generation0]+4]=d;a=c;e=5;break;case 5:return g=a;default:assert(0, -"bad label: "+e)}} -function _PyMemoryView_FromObject(g){var e=STACKTOP;STACKTOP+=52;_memset(e,0,52);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f=e;a=g;b=HEAP[HEAP[a+4]+80]==0?3:1;break;case 1:b=(HEAP[HEAP[a+4]+84]&2097152)==0?3:2;break;case 2:b=HEAP[HEAP[HEAP[a+4]+80]+16]==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str22762);c=0;b=9;break;case 4:b=_PyObject_GetBuffer(a,f,284)<0?5:6;break;case 5:c=0;b=9;break;case 6:d=_PyMemoryView_FromBuffer(f);b=d==0?7:8;break;case 7:_PyBuffer_Release(f);c=0;b= -9;break;case 8:HEAP[d+8]=a;HEAP[a]+=1;c=d;b=9;break;case 9:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _memory_new(g,e,b){g=STACKTOP;STACKTOP+=4;_memset(g,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=g;a=_PyArg_ParseTupleAndKeywords(e,b,__str32763,_kwlist_8402,allocate([d,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=_PyMemoryView_FromObject(HEAP[d]);a=3;break;case 3:return e=c,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function __strided_copy_nd(g,e,b,a,c,d,f){var h;for(h=-1;;)switch(h){case -1:var j,k,l,m,n,o,p,q,r;j=g;k=e;l=b;m=a;n=c;o=d;p=f;h=l==0?1:2;break;case 1:_llvm_memcpy_p0i8_p0i8_i32(j,k,o,1,0);h=14;break;case 2:h=l==1?3:5;break;case 3:q=0;h=HEAP[m]>q?4:14;break;case 4:_llvm_memcpy_p0i8_p0i8_i32(j,k,o,1,0);j+=o;k+=HEAP[n];q+=1;h=HEAP[m]>q?4:14;break;case 5:r=o;q=1;h=p==70?6:7;break;case 6:h=l-1>q?8:9;break;case 7:h=qq?8:9;break;case 9:q=0;h=HEAP[m+4*(l-1)]> -q?10:14;break;case 10:__strided_copy_nd(j,k,l-1,m,n,o,p&255);j+=r;k+=HEAP[n+4*(l-1)];q+=1;h=HEAP[m+4*(l-1)]>q?10:14;break;case 11:r*=HEAP[m+4*q];q+=1;h=qq?13:14;break;case 13:__strided_copy_nd(j,k,l-1,m+4,n+4,o,p&255);j+=r;k+=HEAP[n];q+=1;h=HEAP[m]>q?13:14;break;case 14:return;default:assert(0,"bad label: "+h)}} -function __indirect_copy_nd(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;a=HEAP[d+20]>536870911?1:2;break;case 1:_PyErr_NoMemory();h=-1;a=14;break;case 2:j=_PyMem_Malloc(HEAP[d+20]*4);a=j==0?3:4;break;case 3:_PyErr_NoMemory();h=-1;a=14;break;case 4:k=0;a=HEAP[d+20]>k?5:6;break;case 5:HEAP[j+4*k]=0;k+=1;a=HEAP[d+20]>k?5:6;break;case 6:l=1;k=0;a=HEAP[d+20]>k?7:8;break;case 7:l*=HEAP[HEAP[d+28]+4*k];k+=1;a=HEAP[d+20]>k?7:8;break;case 8:a=f==70?9:10;break;case 9:m=2;a=11; -break;case 10:m=4;a=11;break;case 11:l=a=l-1;a=a!=-1?12:13;break;case 12:FUNCTION_TABLE[m](HEAP[d+20],j,HEAP[d+28]);a=_PyBuffer_GetPointer(d,j);_llvm_memcpy_p0i8_p0i8_i32(c,a,HEAP[d+12],1,0);c+=HEAP[d+12];l=a=l-1;a=a!=-1?12:13;break;case 13:_PyMem_Free(j);h=0;a=14;break;case 14:return g=h;default:assert(0,"bad label: "+a)}} -function _PyMemoryView_GetContiguous(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;f=b;a=HEAP[HEAP[c+4]+80]==0?3:1;break;case 1:a=(HEAP[HEAP[c+4]+84]&2097152)==0?3:2;break;case 2:a=HEAP[HEAP[HEAP[c+4]+80]+16]==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str52765);h=0;a=43;break;case 4:j=__PyObject_GC_New(_PyMemoryView_Type);a=j==0?5:6;break;case 5:h=0;a=43;break;case 6:l=j+12;m=284;a=d==512?7:8;break;case 7:m=285;a=8;break;case 8:a=_PyObject_GetBuffer(c, -l,m)!=0?9:12;break;case 9:HEAP[j]-=1;a=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=11;break;case 11:h=0;a=43;break;case 12:a=_PyBuffer_IsContiguous(l,f&255)!=0?13:16;break;case 13:HEAP[c]+=1;HEAP[j+8]=c;o=j+-12;a=HEAP[o+8]!=-2?14:15;break;case 14:throw _Py_FatalError(__str12761),"Reached an unreachable!";case 15:HEAP[o+8]=-3;HEAP[o]=HEAP[__PyGC_generation0];HEAP[o+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[o+4]]=o;HEAP[HEAP[__PyGC_generation0]+4]=o;h=j;a=43;break;case 16:a= -d==512?17:20;break;case 17:HEAP[j]-=1;a=HEAP[j]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=19;break;case 19:_PyErr_SetString(HEAP[_PyExc_BufferError],__str62766);h=0;a=43;break;case 20:k=_PyString_FromStringAndSize(0,HEAP[l+8]);a=k==0?21:24;break;case 21:HEAP[j]-=1;a=HEAP[j]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=23;break;case 23:h=0;a=43;break;case 24:n=k+20;var q=f;a=HEAP[l+36]==0?25:26;break;case 25:__strided_copy_nd(n,HEAP[l],HEAP[l+20],HEAP[l+28],HEAP[l+ -32],HEAP[l+12],q&255);a=32;break;case 26:a=__indirect_copy_nd(n,l,q&255)<0?27:32;break;case 27:HEAP[k]-=1;a=HEAP[k]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=29;break;case 29:HEAP[j]-=1;a=HEAP[j]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=31;break;case 31:h=0;a=43;break;case 32:var r=l;a=d==1024?33:39;break;case 33:HEAP[r]=n;a=_PyTuple_Pack(2,allocate([c,0,0,0,k,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[j+8]=a; -HEAP[k]-=1;a=HEAP[k]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=35;break;case 35:a=HEAP[j+8]==0?36:40;break;case 36:HEAP[j]-=1;a=HEAP[j]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=38;break;case 38:h=0;a=43;break;case 39:_PyBuffer_Release(r);HEAP[j+8]=k;a=40;break;case 40:p=j+-12;a=HEAP[p+8]!=-2?41:42;break;case 41:throw _Py_FatalError(__str12761),"Reached an unreachable!";case 42:HEAP[p+8]=-3;HEAP[p]=HEAP[__PyGC_generation0];HEAP[p+4]=HEAP[HEAP[__PyGC_generation0]+ -4];HEAP[HEAP[p+4]]=p;HEAP[HEAP[__PyGC_generation0]+4]=p;h=j;a=43;break;case 43:return g=h;default:assert(0,"bad label: "+a)}}function _memory_format_get(g){return _PyString_FromString(HEAP[g+12+24])}function _memory_itemsize_get(g){return _PyLong_FromSsize_t(HEAP[g+12+12])} -function __IntTupleFromSsizet(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=c==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=12;break;case 2:j=_PyTuple_New(a);b=j==0?3:4;break;case 3:d=0;b=12;break;case 4:f=0;b=10;break;case 5:h=_PyLong_FromSsize_t(HEAP[c+4*f]);var k=j;b=h==0?6:9;break;case 6:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=8;break;case 8:d=0;b=12;break;case 9:HEAP[k+12+f*4]=h;f+=1;b=10;break;case 10:b=f< -a?5:11;break;case 11:d=j;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}}function _memory_shape_get(g){return __IntTupleFromSsizet(HEAP[g+12+20],HEAP[g+12+28])}function _memory_strides_get(g){return __IntTupleFromSsizet(HEAP[g+12+20],HEAP[g+12+32])}function _memory_suboffsets_get(g){return __IntTupleFromSsizet(HEAP[g+12+20],HEAP[g+12+36])}function _memory_readonly_get(g){return _PyBool_FromLong(HEAP[g+12+16])}function _memory_ndim_get(g){return _PyLong_FromLong(HEAP[g+12+20])} -function _memory_tobytes(g){var e=STACKTOP;STACKTOP+=52;_memset(e,0,52);var b;for(b=-1;;)switch(b){case -1:var a,c=e;b=_PyObject_GetBuffer(g,c,0)<0?1:2;break;case 1:a=0;b=3;break;case 2:b=_PyString_FromStringAndSize(0,HEAP[c+8]);_PyBuffer_ToContiguous(b+20,c,HEAP[c+8],67);_PyBuffer_Release(c);a=b;b=3;break;case 3:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _memory_tolist(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;a=g+12;e=_strcmp(HEAP[a+24],__str14)!=0?2:1;break;case 1:e=HEAP[a+12]!=1?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_NotImplementedError],__str152775);b=0;e=15;break;case 3:e=HEAP[a+20]!=1?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_NotImplementedError],__str162776);b=0;e=15;break;case 5:d=_PyList_New(HEAP[a+8]);e=d==0?6:7;break;case 6:b=0;e=15;break;case 7:h=HEAP[a];c=0;e=13;break;case 8:f=_PyInt_FromLong(HEAP[h]); -var j=d;e=f==0?9:12;break;case 9:HEAP[d]=HEAP[j]-1;e=HEAP[d]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=11;break;case 11:b=0;e=15;break;case 12:HEAP[HEAP[j+12]+4*c]=f;h+=1;c+=1;e=13;break;case 13:e=HEAP[a+8]>c?8:14;break;case 14:b=d;e=15;break;case 15:return g=b;default:assert(0,"bad label: "+e)}} -function _memory_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+12+4]!=0?1:8;break;case 1:e=HEAP[b+8]==0?4:2;break;case 2:e=(HEAP[HEAP[HEAP[b+8]+4]+84]&67108864)==0?4:3;break;case 3:_PyObject_CopyData(HEAP[HEAP[b+8]+12],HEAP[HEAP[b+8]+12+4]);_PyBuffer_Release(b+12);e=5;break;case 4:_PyBuffer_Release(b+12);e=5;break;case 5:e=HEAP[b+8]!=0?6:8;break;case 6:a=HEAP[b+8];HEAP[b+8]=0;HEAP[a]-=1;e=HEAP[a]== -0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=8;break;case 8:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}}function _memory_repr(g){return _PyString_FromFormat(__str192779,allocate([g,0,0,0],["%struct.PyMemoryViewObject*",0,0,0],ALLOC_STACK))}function _memory_length(g){return _get_shape0(g+12)} -function _memory_item(g,e){var b=STACKTOP;STACKTOP+=52;_memset(b,0,52);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b;c=g;d=e;c+=12;a=HEAP[c+20]==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_IndexError],__str202780);f=0;a=15;break;case 2:a=HEAP[c+20]==1?3:14;break;case 3:h=HEAP[c];a=d<0?4:5;break;case 4:a=_get_shape0(c);d=a=d+a;a=a<0?6:5;break;case 5:a=_get_shape0(c)<=d?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_IndexError],__str212781);f=0;a=15;break;case 7:var k=c;a=HEAP[c+32]==0?8:9; -break;case 8:h+=d*HEAP[k+12];a=10;break;case 9:h+=d*HEAP[HEAP[k+32]];a=10;break;case 10:a=HEAP[c+36]!=0?11:13;break;case 11:a=HEAP[HEAP[c+36]]>=0?12:13;break;case 12:h=HEAP[h]+HEAP[HEAP[c+36]];a=13;break;case 13:f=_PyString_FromStringAndSize(h,HEAP[c+12]);a=15;break;case 14:_llvm_memset_p0i8_i32(j,0,52,1,0);f=_PyMemoryView_FromBuffer(j);a=15;break;case 15:return d=f,STACKTOP=b,d;default:assert(0,"bad label: "+a)}} -function _memory_subscript(g,e){var b=STACKTOP;STACKTOP+=68;_memset(b,0,68);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4,n=b+8,o=b+12,p=b+16,q,r;c=g;d=e;j=c+12;var u=d;a=HEAP[j+20]==0?1:6;break;case 1:a=u==__Py_EllipsisObject?4:2;break;case 2:a=(HEAP[HEAP[d+4]+84]&67108864)==0?5:3;break;case 3:a=HEAP[d+8]==0?4:5;break;case 4:HEAP[c]+=1;h=c;a=28;break;case 5:_PyErr_SetString(HEAP[_PyExc_IndexError],__str202780);h=0;a=28;break;case 6:a=HEAP[HEAP[u+4]+48]==0?13:7;break;case 7:a=(HEAP[HEAP[d+ -4]+84]&131072)==0?13:8;break;case 8:a=HEAP[HEAP[HEAP[d+4]+48]+152]==0?13:9;break;case 9:k=_PyNumber_AsSsize_t(d,0);a=k==-1?10:12;break;case 10:a=_PyErr_Occurred()!=0?11:12;break;case 11:h=0;a=28;break;case 12:h=_memory_item(c,k);a=28;break;case 13:a=HEAP[d+4]==_PySlice_Type?14:27;break;case 14:a=_get_shape0(j);a=_PySlice_GetIndicesEx(d,a,l,m,n,o)<0?15:16;break;case 15:h=0;a=28;break;case 16:a=HEAP[n]==1?17:26;break;case 17:a=HEAP[j+20]==1?18:26;break;case 18:q=HEAP[j]+HEAP[l]*HEAP[j+12];a=HEAP[j+ -16]!=0?19:20;break;case 19:f=8;a=21;break;case 20:f=9;a=21;break;case 21:r=f;var s=j;a=HEAP[j+4]!=0?22:24;break;case 22:a=_PyObject_GetBuffer(HEAP[s+4],p,r)==-1?23:25;break;case 23:h=0;a=28;break;case 24:_llvm_memcpy_p0i8_p0i8_i32(p,s,52,4,0);a=25;break;case 25:HEAP[p]=q;HEAP[p+8]=HEAP[o]*HEAP[p+12];HEAP[p+24]=HEAP[j+24];HEAP[p+28]=p+40;HEAP[HEAP[p+28]]=HEAP[o];HEAP[p+32]=p+12;h=_PyMemoryView_FromBuffer(p);a=28;break;case 26:_PyErr_SetNone(HEAP[_PyExc_NotImplementedError]);h=0;a=28;break;case 27:_PyErr_Format(HEAP[_PyExc_TypeError], -__str222782,allocate([HEAP[HEAP[d+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=28;break;case 28:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _memory_ass_sub(g,e,b){var a=STACKTOP;STACKTOP+=68;_memset(a,0,68);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l=a,m=a+4,n,o=a+8,p,q,r=a+60,u=a+64;f=g;h=e;j=b;f+=12;c=HEAP[f+16]!=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str232783);k=-1;c=38;break;case 2:c=j==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str242784);k=-1;c=38;break;case 4:c=HEAP[f+20]!=1?5:6;break;case 5:_PyErr_SetNone(HEAP[_PyExc_NotImplementedError]);k=-1;c=38;break;case 6:c=HEAP[HEAP[h+ -4]+48]==0?20:7;break;case 7:c=(HEAP[HEAP[h+4]+84]&131072)==0?20:8;break;case 8:c=HEAP[HEAP[HEAP[h+4]+48]+152]==0?20:9;break;case 9:var s=_PyNumber_AsSsize_t(h,0);HEAP[l]=s;s=HEAP[l];s==-1?(d=9,c=10):(d=9,c=13);break;case 10:c=_PyErr_Occurred()!=0?11:12;break;case 11:k=-1;c=38;break;case 12:var t=HEAP[l],d=12;c=13;break;case 13:c=(d==12?t:s)<0?14:15;break;case 14:var v=_get_shape0(f),v=HEAP[l]+v;HEAP[l]=v;d=14;c=16;break;case 15:var w=HEAP[l],d=15;c=16;break;case 16:c=(d==15?w:v)<0?18:17;break;case 17:c= -_get_shape0(f)<=HEAP[l]?18:19;break;case 18:_PyErr_SetString(HEAP[_PyExc_IndexError],__str212781);k=-1;c=38;break;case 19:HEAP[m]=1;c=26;break;case 20:c=HEAP[h+4]==_PySlice_Type?21:25;break;case 21:c=_get_shape0(f);c=_PySlice_GetIndicesEx(h,c,l,r,u,m)<0?22:23;break;case 22:k=-1;c=38;break;case 23:c=HEAP[u]!=1?24:26;break;case 24:_PyErr_SetNone(HEAP[_PyExc_NotImplementedError]);k=-1;c=38;break;case 25:_PyErr_Format(HEAP[_PyExc_TypeError],__str222782,allocate([HEAP[HEAP[h+4]+12],0,0,0],["i8*",0,0,0], -ALLOC_STACK));k=-1;c=38;break;case 26:c=_PyObject_GetBuffer(j,o,8)==-1?27:28;break;case 27:k=-1;c=38;break;case 28:c=HEAP[o+12]!=HEAP[f+12]?29:30;break;case 29:_PyErr_Format(HEAP[_PyExc_TypeError],__str252785,allocate([HEAP[HEAP[HEAP[f+4]+4]+12],0,0,0,HEAP[HEAP[HEAP[o+4]+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=37;break;case 30:n=HEAP[m]*HEAP[f+12];c=HEAP[o+8]!=n?31:32;break;case 31:_PyErr_SetString(HEAP[_PyExc_ValueError],__str262786);c=37;break;case 32:q=HEAP[f]+HEAP[l]*HEAP[f+12]; -p=HEAP[o];c=q+n0?1:11;break;case 11:b=HEAP[c]!=d?1:12;break;case 12:f=h;b=13;break;case 13:return a=f;default:assert(0,"bad label: "+b)}} -function _do_mkdict(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r,u;f=g;h=e;j=125;k=b;l=a;p=0;c=k<0?1:2;break;case 1:m=0;c=29;break;case 2:n=_PyDict_New();c=n==0?3:4;break;case 3:m=0;c=29;break;case 4:o=0;c=19;break;case 5:q=_do_mkvalue(f,h,l);c=q==0?6:7;break;case 6:p=1;HEAP[__Py_NoneStruct]+=1;q=__Py_NoneStruct;c=7;break;case 7:r=c=_do_mkvalue(f,h,l);c=c==0?8:9;break;case 8:p=1;HEAP[__Py_NoneStruct]+=1;r=__Py_NoneStruct;c=9;break;case 9:u=_PyDict_SetItem(n,q,r);HEAP[q]-= -1;c=HEAP[q]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=11;break;case 11:HEAP[r]-=1;c=HEAP[r]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=13;break;case 13:c=u<0?15:14;break;case 14:c=p!=0?15:18;break;case 15:HEAP[n]-=1;c=HEAP[n]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=17;break;case 17:m=0;c=29;break;case 18:o+=2;c=19;break;case 19:c=o1?8:9;break; -case 8:_PySys_WriteStderr(__str82872,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=9;break;case 9:_PyDict_SetItem(f,HEAP[c],__Py_NoneStruct);b=3;break;case 10:HEAP[a]=0;b=_PyDict_Next(f,a,c,d)!=0?11:19;break;case 11:b=HEAP[d]!=__Py_NoneStruct?13:12;break;case 12:b=_PyDict_Next(f,a,c,d)!=0?11:19;break;case 13:b=(HEAP[HEAP[HEAP[c]+4]+84]&134217728)!=0?14:12;break;case 14:j=_PyString_AsString(HEAP[c]);b=HEAP[j]!=95?16:15;break;case 15:b=_strcmp(j,__str92873)!=0?16:12;break;case 16:b=HEAP[_Py_VerboseFlag]> -1?17:18;break;case 17:_PySys_WriteStderr(__str102874,allocate([j,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=18;break;case 18:_PyDict_SetItem(f,HEAP[c],__Py_NoneStruct);b=12;break;case 19:STACKTOP=e;return;default:assert(0,"bad label: "+b)}} -function _module_init(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l=a+4;d=g;c=e;f=b;HEAP[k]=__Py_NoneStruct;HEAP[l]=__Py_NoneStruct;c=_PyArg_ParseTupleAndKeywords(c,f,__str112875,_kwlist_8510,allocate([k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=-1;c=11;break;case 2:j=HEAP[d+8];c=j==0?3:6;break;case 3:j=_PyDict_New();c=j==0?4:5;break;case 4:h=-1;c=11;break;case 5:HEAP[d+ -8]=j;c=6;break;case 6:c=_PyDict_SetItemString(j,__str12865,HEAP[k])<0?7:8;break;case 7:h=-1;c=11;break;case 8:c=_PyDict_SetItemString(j,__str22866,HEAP[l])<0?9:10;break;case 9:h=-1;c=11;break;case 10:h=0;c=11;break;case 11:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _module_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_PyObject_GC_UnTrack(b);e=HEAP[b+8]!=0?1:3;break;case 1:__PyModule_Clear(b);e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);return;default:assert(0,"bad label: "+e)}} -function _module_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=_PyModule_GetName(b);e=c==0?1:2;break;case 1:_PyErr_Clear();c=__str142878;e=2;break;case 2:d=e=_PyModule_GetFilename(b);e=e==0?3:4;break;case 3:_PyErr_Clear();a=_PyString_FromFormat(__str152879,allocate([c,0,0,0],["i8*",0,0,0],ALLOC_STACK));e=5;break;case 4:a=_PyString_FromFormat(__str162880,allocate([c,0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _module_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+8],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=0;a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _my_fgets(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=1;break;case 1:a=HEAP[_PyOS_InputHook]!=0?2:3;break;case 2:FUNCTION_TABLE[HEAP[_PyOS_InputHook]]();a=3;break;case 3:a=___errno_location();HEAP[a]=0;a=_fgets(c,d,f)!=0?4:5;break;case 4:h=0;a=13;break;case 5:a=_feof(f)!=0?6:7;break;case 6:_clearerr(f);h=-1;a=13;break;case 7:a=___errno_location();a=HEAP[a]==4?8:10;break;case 8:a=_PyErr_CheckSignals();a=a<0?9:1;break;case 9:h=1;a=13;break;case 10:a=_PyOS_InterruptOccurred()!= -0?11:12;break;case 11:h=1;a=13;break;case 12:h=-2;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function _PyOS_StdioReadline(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;o=100;a=o>=0?1:4;break;case 1:a=o!=0?2:3;break;case 2:n=o;a=5;break;case 3:n=1;a=5;break;case 4:p=0;a=6;break;case 5:p=a=_malloc(n);a=a==0?6:7;break;case 6:m=0;a=33;break;case 7:_fflush(f);a=h!=0?8:9;break;case 8:_fputs(h,HEAP[_stderr]);a=9;break;case 9:_fflush(HEAP[_stderr]);a=_my_fgets(p,o,d);a=a==0?12:a==1?10:11;break;case 10:_free(p);m=0;a=33;break;case 11:HEAP[p]=0;a=12;break;case 12:var r= -_strlen(p);o=r;c=12;a=24;break;case 13:q=o+2;a=q+o>=0?14:17;break;case 14:a=q+o!=0?15:16;break;case 15:l=q+o;a=18;break;case 16:l=1;a=18;break;case 17:p=0;a=19;break;case 18:p=a=_realloc(p,l);a=a==0?19:20;break;case 19:m=0;a=33;break;case 20:a=q<0?21:22;break;case 21:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str2887);a=22;break;case 22:a=_my_fgets(p+o,q,d)!=0?26:23;break;case 23:var c=_strlen(p+o),u=o+c;o=u;c=23;a=24;break;case 24:a=(c==23?u:r)==0?26:25;break;case 25:a=HEAP[p+(o-1)]!=10?13:26; -break;case 26:a=o+1>=0?27:31;break;case 27:a=o!=-1?28:29;break;case 28:j=o+1;a=30;break;case 29:j=1;a=30;break;case 30:k=_realloc(p,j);a=32;break;case 31:k=0;a=32;break;case 32:m=k;a=33;break;case 33:return g=m;default:assert(0,"bad label: "+a)}} -function _PyOS_Readline(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[__PyOS_ReadlineTState]==HEAP[__PyThreadState_Current]?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str12889);h=0;a=9;break;case 2:a=HEAP[_PyOS_ReadlineFunctionPointer]==0?3:4;break;case 3:HEAP[_PyOS_ReadlineFunctionPointer]=90;a=4;break;case 4:HEAP[__PyOS_ReadlineTState]=HEAP[__PyThreadState_Current];a=_fileno(c);a=_isatty(a)==0?6:5;break;case 5:a=_fileno(d);a=_isatty(a)==0?6:7;break; -case 6:j=_PyOS_StdioReadline(c,d,f);a=8;break;case 7:j=FUNCTION_TABLE[HEAP[_PyOS_ReadlineFunctionPointer]](c,d,f);a=8;break;case 8:HEAP[__PyOS_ReadlineTState]=0;h=j;a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}}function _PyOS_snprintf(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);HEAP[a]=arguments[_PyOS_snprintf.length];var c=_PyOS_vsnprintf(g,e,b,HEAP[a]);STACKTOP=a;return c} -function _PyOS_vsnprintf(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;f=e;h=b;j=a;c=f>2147483646?1:2;break;case 1:k=-666;c=3;break;case 2:k=_vsnprintf(d,f,h,j);c=3;break;case 3:c=f!=0?4:5;break;case 4:HEAP[d+(f-1)]=0;c=5;break;case 5:return g=k;default:assert(0,"bad label: "+c)}} -function _PyOS_strtoul(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;j=0;a=2;break;case 1:c+=1;a=2;break;case 2:a=HEAP[c]==0?4:3;break;case 3:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[c]]&8192)!=0?1:4;break;case 4:a=f;a=a==0?5:a==2?29:a==8?37:a==16?45:53;break;case 5:a=HEAP[c]==48?6:28;break;case 6:c+=1;a=HEAP[c]==120?8:7;break;case 7:a=HEAP[c]==88?8:13;break;case 8:a=HEAP[__PyLong_DigitValue+HEAP[c+1]*4]>15?9:12;break;case 9:a=d!=0?10:11;break;case 10:HEAP[d]=c;a=11;break; -case 11:h=0;a=76;break;case 12:c+=1;f=16;a=53;break;case 13:a=HEAP[c]==111?15:14;break;case 14:a=HEAP[c]==79?15:20;break;case 15:a=HEAP[__PyLong_DigitValue+HEAP[c+1]*4]>7?16:19;break;case 16:a=d!=0?17:18;break;case 17:HEAP[d]=c;a=18;break;case 18:h=0;a=76;break;case 19:c+=1;f=8;a=53;break;case 20:a=HEAP[c]==98?22:21;break;case 21:a=HEAP[c]==66?22:27;break;case 22:a=HEAP[__PyLong_DigitValue+HEAP[c+1]*4]>1?23:26;break;case 23:a=d!=0?24:25;break;case 24:HEAP[d]=c;a=25;break;case 25:h=0;a=76;break;case 26:c+= -1;f=2;a=53;break;case 27:f=8;a=53;break;case 28:f=10;a=53;break;case 29:a=HEAP[c]==48?30:53;break;case 30:c+=1;a=HEAP[c]==98?32:31;break;case 31:a=HEAP[c]==66?32:53;break;case 32:a=HEAP[__PyLong_DigitValue+HEAP[c+1]*4]>1?33:36;break;case 33:a=d!=0?34:35;break;case 34:HEAP[d]=c;a=35;break;case 35:h=0;a=76;break;case 36:c+=1;a=53;break;case 37:a=HEAP[c]==48?38:53;break;case 38:c+=1;a=HEAP[c]==111?40:39;break;case 39:a=HEAP[c]==79?40:53;break;case 40:a=HEAP[__PyLong_DigitValue+HEAP[c+1]*4]>7?41:44;break; -case 41:a=d!=0?42:43;break;case 42:HEAP[d]=c;a=43;break;case 43:h=0;a=76;break;case 44:c+=1;a=53;break;case 45:a=HEAP[c]==48?46:53;break;case 46:c+=1;a=HEAP[c]==120?48:47;break;case 47:a=HEAP[c]==88?48:53;break;case 48:a=HEAP[__PyLong_DigitValue+HEAP[c+1]*4]>15?49:52;break;case 49:a=d!=0?50:51;break;case 50:HEAP[d]=c;a=51;break;case 51:h=0;a=76;break;case 52:c+=1;a=53;break;case 53:a=f<=1|f>36?55:54;break;case 54:a=HEAP[c]==48?58:59;break;case 55:a=d!=0?56:57;break;case 56:HEAP[d]=c;a=57;break;case 57:h= -0;a=76;break;case 58:c+=1;a=HEAP[c]==48?58:59;break;case 59:l=HEAP[_digitlimit+f*4];a=67;break;case 60:a=l>0?61:62;break;case 61:j=j*f+k;a=66;break;case 62:a=l<0?71:63;break;case 63:a=HEAP[_smallmax+f*4]>>0>>0?71:65;break;case 65:j=m;a=66;break;case 66:c+=1;l-=1;a=67;break;case 67:k=HEAP[__PyLong_DigitValue+HEAP[c]*4];a=k=0?7:9;break;case 7:h=j;a=k==45?8:13;break;case 8:h=0-h;a=13;break;case 9:a=k!=45?12:10;break;case 10:a=j!=-2147483648?12:11;break;case 11:h=-2147483648;a=13;break;case 12:h=___errno_location(); -HEAP[h]=34;h=2147483647;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}}function _PyNode_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=_malloc(24);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:HEAP[c]=b&65535;HEAP[c+4]=0;HEAP[c+8]=0;HEAP[c+16]=0;HEAP[c+20]=0;a=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _fancy_roundup(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=256;e=3;break;case 1:c=d<<1;e=c<=0?2:3;break;case 2:a=-1;e=5;break;case 3:var d=c;e=c1?3:7;break;case 3:var x=u;d=w<=128?4:5;break;case 4:p=x+3&-4;d=6;break;case 5:p=_fancy_roundup(x);d=6;break;case 6:q=p;d=8;break;case 7:q=w;d=8;break;case 8:s=q;var y=u+1;d=u+1<=1?9:10;break;case 9:o=y;d=14;break;case 10:var z=u;d=y<=128?11:12;break;case 11:n=z+4&-4;d=13;break;case 12:n=_fancy_roundup(z+ -1);d=13;break;case 13:o=n;d=14;break;case 14:t=o;d=s<0?16:15;break;case 15:d=t<0?16:17;break;case 16:r=19;d=29;break;case 17:d=s178956970?19:20;break;case 19:r=15;d=29;break;case 20:v=HEAP[f+20];d=t*24>=0?21:24;break;case 21:d=t*24!=0?22:23;break;case 22:m=t*24;d=25;break;case 23:m=1;d=25;break;case 24:v=0;d=26;break;case 25:v=d=_realloc(v,m);d=d==0?26:27;break;case 26:r=15;d=29;break;case 27:HEAP[f+20]=v;d=28;break;case 28:r=HEAP[f+16];v=HEAP[f+20]+24*r;HEAP[f+16]=r+1; -HEAP[v]=h&65535;HEAP[v+4]=j;HEAP[v+8]=k;HEAP[v+12]=l;HEAP[v+16]=0;r=HEAP[v+20]=0;d=29;break;case 29:return g=r;default:assert(0,"bad label: "+d)}}function _PyNode_Free(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b!=0?1:2;break;case 1:_freechildren(b);_free(b);e=2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _freechildren(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c;a=g;c=HEAP[a+16];c=e=c-1;var d=HEAP[a+20];e>=0?(b=-1,e=1):(b=-1,e=2);break;case 1:_freechildren((b==1?f:d)+24*c);c=e=c-1;var f=HEAP[a+20];e>=0?e=b=1:(b=1,e=2);break;case 2:e=(b==-1?d:f)!=0?3:4;break;case 3:_free(HEAP[a+20]);e=4;break;case 4:e=HEAP[a+4]!=0?5:6;break;case 5:_free(HEAP[a+4]);e=6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _Py_IncRef(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b!=0?1:2;break;case 1:HEAP[b]+=1;e=2;break;case 2:return;default:assert(0,"bad label: "+e)}}function _Py_DecRef(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b!=0?1:3;break;case 1:HEAP[b]-=1;e=HEAP[b]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);e=3;break;case 3:return;default:assert(0,"bad label: "+e)}} -function _PyObject_Init(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=a==0?1:2;break;case 1:d=_PyErr_NoMemory();b=3;break;case 2:HEAP[a+4]=c;HEAP[a]=1;d=a;b=3;break;case 3:return b=d;default:assert(0,"bad label: "+b)}}function _PyObject_InitVar(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=c==0?1:2;break;case 1:h=_PyErr_NoMemory();a=3;break;case 2:HEAP[c+8]=f;HEAP[c+4]=d;HEAP[c]=1;h=c;a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function __PyObject_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+16]>=0?1:4;break;case 1:e=HEAP[b+16]!=0?2:3;break;case 2:c=HEAP[b+16];e=5;break;case 3:c=1;e=5;break;case 4:d=0;e=6;break;case 5:d=e=_malloc(c);e=e==0?6:7;break;case 6:a=_PyErr_NoMemory();e=8;break;case 7:HEAP[d+4]=b;HEAP[d]=1;a=d;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function __PyObject_NewVar(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;j=HEAP[a+16]+3+c*HEAP[a+20]&-4;b=j>=0?1:4;break;case 1:b=j!=0?2:3;break;case 2:f=j;b=5;break;case 3:f=1;b=5;break;case 4:h=0;b=6;break;case 5:h=b=_malloc(f);b=b==0?6:7;break;case 6:d=_PyErr_NoMemory();b=8;break;case 7:HEAP[h+8]=c;HEAP[h+4]=a;HEAP[h]=1;d=h;b=8;break;case 8:return a=d;default:assert(0,"bad label: "+b)}}function __PyObject_Del(g){_free(g)} -function _internal_print(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;m=0;c=k>10?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str2894);l=-1;c=24;break;case 2:c=_PyErr_CheckSignals()!=0?3:4;break;case 3:l=-1;c=24;break;case 4:_clearerr(h);c=f==0?5:6;break;case 5:_fwrite(__str12895,1,5,h);c=19;break;case 6:var o=f;c=HEAP[f]<=0?7:8;break;case 7:_fprintf(h,__str22896,allocate([HEAP[o],0,0,0,f,0,0,0],["i32",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK)); -c=19;break;case 8:c=HEAP[HEAP[o+4]+28]==0?9:18;break;case 9:var p=f;c=(j&1)!=0?10:11;break;case 10:var q=_PyObject_Str(p);n=q;d=10;c=12;break;case 11:var r=_PyObject_Repr(p);n=r;d=11;c=12;break;case 12:c=(d==11?r:q)==0?13:14;break;case 13:m=-1;c=15;break;case 14:m=_internal_print(n,h,1,k+1);c=15;break;case 15:c=n!=0?16:19;break;case 16:HEAP[n]-=1;c=HEAP[n]==0?17:19;break;case 17:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=19;break;case 18:var u=FUNCTION_TABLE[HEAP[HEAP[f+4]+28]](f,h,j);m=u;d=18;c=20; -break;case 19:var s=m,d=19;c=20;break;case 20:c=(d==19?s:u)==0?21:23;break;case 21:c=_ferror(h)!=0?22:23;break;case 22:_PyErr_SetFromErrno(HEAP[_PyExc_IOError]);_clearerr(h);m=-1;c=23;break;case 23:l=m;c=24;break;case 24:return g=l;default:assert(0,"bad label: "+c)}}function _PyObject_Print(g,e,b){return _internal_print(g,e,b,0)} -function __PyObject_Dump(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;var c=HEAP[_stderr];e=b==0?1:2;break;case 1:_fwrite(__str32897,1,5,c);e=6;break;case 2:_fwrite(__str42898,1,10,c);_PyObject_Print(b,HEAP[_stderr],0);var d=HEAP[b];e=HEAP[b+4]!=0?3:4;break;case 3:a=HEAP[HEAP[b+4]+12];e=5;break;case 4:a=__str52899;e=5;break;case 5:_fprintf(HEAP[_stderr],__str62900,allocate([a,0,0,0,d,0,0,0,b,0,0,0],["i8*",0,0,0,"i32",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=6;break;case 6:return; -default:assert(0,"bad label: "+e)}} -function _PyObject_Repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=_PyErr_CheckSignals()!=0?1:2;break;case 1:a=0;e=19;break;case 2:e=b==0?3:4;break;case 3:a=_PyString_FromString(__str72901);e=19;break;case 4:var f=HEAP[b+4];e=HEAP[HEAP[b+4]+44]==0?5:6;break;case 5:a=_PyString_FromFormat(__str82902,allocate([HEAP[f+12],0,0,0,b,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=19;break;case 6:c=FUNCTION_TABLE[HEAP[f+44]](b);e=c==0?7:8;break;case 7:a=0;e=19;break;case 8:e= -(HEAP[HEAP[c+4]+84]&268435456)!=0?9:14;break;case 9:d=_PyUnicodeUCS2_AsEncodedString(c,0,0);HEAP[c]-=1;e=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=11;break;case 11:e=d!=0?12:13;break;case 12:c=d;e=14;break;case 13:a=0;e=19;break;case 14:var h=c;e=(HEAP[HEAP[c+4]+84]&134217728)==0?15:18;break;case 15:_PyErr_Format(HEAP[_PyExc_TypeError],__str92903,allocate([HEAP[HEAP[h+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[c]-=1;e=HEAP[c]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[c+ -4]+24]](c);e=17;break;case 17:a=0;e=19;break;case 18:a=h;e=19;break;case 19:return g=a;default:assert(0,"bad label: "+e)}} -function __PyObject_Str(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:a=_PyString_FromString(__str72901);e=19;break;case 2:var d=b;e=HEAP[b+4]==_PyString_Type?3:4;break;case 3:HEAP[b]=HEAP[d]+1;a=b;e=19;break;case 4:var f=b;e=HEAP[d+4]==_PyUnicode_Type?5:6;break;case 5:HEAP[b]=HEAP[f]+1;a=b;e=19;break;case 6:e=HEAP[HEAP[f+4]+68]==0?7:8;break;case 7:a=_PyObject_Repr(b);e=19;break;case 8:e=HEAP[__PyThreadState_Current];HEAP[e+12]+=1;e=HEAP[e+12]>HEAP[__Py_CheckRecursionLimit]? -9:11;break;case 9:e=__Py_CheckRecursiveCall(__str102904)!=0?10:11;break;case 10:a=0;e=19;break;case 11:c=FUNCTION_TABLE[HEAP[HEAP[b+4]+68]](b);HEAP[HEAP[__PyThreadState_Current]+12]-=1;e=c==0?12:13;break;case 12:a=0;e=19;break;case 13:e=(HEAP[HEAP[c+4]+84]&134217728)!=0;e=e!=0?18:14;break;case 14:e=(HEAP[HEAP[c+4]+84]&268435456)!=0?18:15;break;case 15:_PyErr_Format(HEAP[_PyExc_TypeError],__str112905,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[c]-=1;e=HEAP[c]==0?16:17;break; -case 16:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=17;break;case 17:a=0;e=19;break;case 18:a=c;e=19;break;case 19:return g=a;default:assert(0,"bad label: "+e)}} -function _PyObject_Str(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;a=__PyObject_Str(g);e=a==0?1:2;break;case 1:b=0;e=9;break;case 2:e=(HEAP[HEAP[a+4]+84]&268435456)!=0?3:8;break;case 3:c=_PyUnicodeUCS2_AsEncodedString(a,0,0);HEAP[a]-=1;e=HEAP[a]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=5;break;case 5:e=c!=0?6:7;break;case 6:a=c;e=8;break;case 7:b=0;e=9;break;case 8:b=a;e=9;break;case 9:return g=b;default:assert(0,"bad label: "+e)}} -function _PyObject_Unicode(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j;a=g;j=0;e=a==0?1:6;break;case 1:d=_PyString_FromString(__str72901);e=d==0?2:3;break;case 2:c=0;e=34;break;case 3:h=_PyUnicodeUCS2_FromEncodedObject(d,0,__str122906);HEAP[d]-=1;e=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=5;break;case 5:c=h;e=34;break;case 6:var k=a;e=HEAP[a+4]==_PyUnicode_Type?7:8;break;case 7:HEAP[a]=HEAP[k]+1;c=a;e=34;break;case 8:e=HEAP[k+4]==_PyInstance_Type?9:13;break; -case 9:f=_PyObject_GetAttr(a,HEAP[_unicodestr_8677]);e=f!=0?10:12;break;case 10:j=1;d=_PyObject_CallFunctionObjArgs(f,allocate(4,"i8*",ALLOC_STACK));HEAP[f]-=1;e=HEAP[f]==0?11:18;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=18;break;case 12:_PyErr_Clear();e=18;break;case 13:f=__PyObject_LookupSpecial(a,__str132907,_unicodestr_8677);e=f!=0?14:16;break;case 14:j=1;d=_PyObject_CallFunctionObjArgs(f,allocate(4,"i8*",ALLOC_STACK));HEAP[f]-=1;e=HEAP[f]==0?15:18;break;case 15:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);e=18;break;case 16:e=_PyErr_Occurred()!=0?17:18;break;case 17:c=0;e=34;break;case 18:e=j==0?19:26;break;case 19:var l=a;e=(HEAP[HEAP[a+4]+84]&268435456)!=0?20:21;break;case 20:c=_PyUnicodeUCS2_FromUnicode(HEAP[a+12],HEAP[l+8]);e=34;break;case 21:var m=a;e=HEAP[l+4]==_PyString_Type?22:23;break;case 22:HEAP[a]=HEAP[m]+1;var n=a;d=n;b=22;e=27;break;case 23:var o=a;e=HEAP[HEAP[m+4]+68]!=0?24:25;break;case 24:var p=FUNCTION_TABLE[HEAP[HEAP[o+4]+68]](a);d=p;b=24;e=27;break;case 25:var q=_PyObject_Repr(o); -d=q;b=25;e=27;break;case 26:var r=d,b=26;e=27;break;case 27:e=(b==26?r:b==25?q:b==24?p:n)==0?28:29;break;case 28:c=0;e=34;break;case 29:e=(HEAP[HEAP[d+4]+84]&268435456)==0?30:33;break;case 30:h=_PyUnicodeUCS2_FromEncodedObject(d,0,__str122906);HEAP[d]-=1;e=HEAP[d]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=32;break;case 32:d=h;e=33;break;case 33:c=d;e=34;break;case 34:return g=c;default:assert(0,"bad label: "+e)}} -function _adjust_tp_compare(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f=e,h=e+4,j=e+8;a=g;b=_PyErr_Occurred();var k=a;b=b!=0?1:14;break;case 1:b=k!=-1&a!=-2?2:13;break;case 2:_PyErr_Fetch(f,h,j);b=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str142908,1)<0?3:12;break;case 3:b=HEAP[f]!=0?4:6;break;case 4:b=HEAP[f];HEAP[b]-=1;b=HEAP[b]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);b=6;break;case 6:b=HEAP[h]!=0?7:9;break;case 7:b= -HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=9;break;case 9:b=HEAP[j]!=0?10:13;break;case 10:b=HEAP[j];HEAP[b]-=1;b=HEAP[b]==0?11:13;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);b=13;break;case 12:_PyErr_Restore(HEAP[f],HEAP[h],HEAP[j]);b=13;break;case 13:d=-2;b=22;break;case 14:b=k<-1|a>1?15:21;break;case 15:b=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str152909,1)<0?16:17;break;case 16:d=-2;b=22;break;case 17:b=a<-1?18: -19;break;case 18:c=-1;b=20;break;case 19:c=1;b=20;break;case 20:d=c;b=22;break;case 21:d=a;b=22;break;case 22:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _try_rich_compare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=HEAP[c+4]!=HEAP[d+4]?1:9;break;case 1:a=_PyType_IsSubtype(HEAP[d+4],HEAP[c+4])!=0?2:9;break;case 2:a=(HEAP[HEAP[d+4]+84]&32)!=0?4:3;break;case 3:j=0;a=9;break;case 4:j=HEAP[HEAP[d+4]+100];a=HEAP[HEAP[d+4]+100]!=0?5:9;break;case 5:var l=k=FUNCTION_TABLE[j](d,c,HEAP[__Py_SwappedOp+f*4]);a=k!=__Py_NotImplementedStruct?6:7;break;case 6:h=l;a=21;break;case 7:HEAP[k]=HEAP[l]-1;a=HEAP[k]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);a=9;break;case 9:a=(HEAP[HEAP[c+4]+84]&32)!=0?11:10;break;case 10:j=0;a=16;break;case 11:j=HEAP[HEAP[c+4]+100];a=HEAP[HEAP[c+4]+100]!=0?12:16;break;case 12:var m=k=FUNCTION_TABLE[j](c,d,f);a=k!=__Py_NotImplementedStruct?13:14;break;case 13:h=m;a=21;break;case 14:HEAP[k]=HEAP[m]-1;a=HEAP[k]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=16;break;case 16:a=(HEAP[HEAP[d+4]+84]&32)!=0?18:17;break;case 17:j=0;a=20;break;case 18:j=HEAP[HEAP[d+4]+100];a=HEAP[HEAP[d+4]+100]!=0? -19:20;break;case 19:h=FUNCTION_TABLE[j](d,c,HEAP[__Py_SwappedOp+f*4]);a=21;break;case 20:k=__Py_NotImplementedStruct;HEAP[k]+=1;h=k;a=21;break;case 21:return g=h;default:assert(0,"bad label: "+a)}} -function _try_rich_compare_bool(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&32)==0?2:1;break;case 1:a=HEAP[HEAP[c+4]+100]==0?2:5;break;case 2:a=(HEAP[HEAP[d+4]+84]&32)==0?4:3;break;case 3:a=HEAP[HEAP[d+4]+100]==0?4:5;break;case 4:h=2;a=14;break;case 5:j=a=_try_rich_compare(c,d,f);a=a==0?6:7;break;case 6:h=-1;a=14;break;case 7:var l=j;a=j==__Py_NotImplementedStruct?8:11;break;case 8:HEAP[j]=HEAP[l]-1;a=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+ -4]+24]](j);a=10;break;case 10:h=2;a=14;break;case 11:k=_PyObject_IsTrue(l);HEAP[j]-=1;a=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=13;break;case 13:h=k;a=14;break;case 14:return g=h;default:assert(0,"bad label: "+a)}} -function _try_rich_to_3way_compare(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h;c=g;d=e;b=(HEAP[HEAP[c+4]+84]&32)==0?2:1;break;case 1:b=HEAP[HEAP[c+4]+100]==0?2:5;break;case 2:b=(HEAP[HEAP[d+4]+84]&32)==0?4:3;break;case 3:b=HEAP[HEAP[d+4]+100]==0?4:5;break;case 4:f=2;b=12;break;case 5:h=0;a=5;b=10;break;case 6:b=_try_rich_compare_bool(c,d,HEAP[_tries_8972+h*8]);b=b==-1?7:b==1?8:9;break;case 7:f=-2;b=12;break;case 8:f=HEAP[_tries_8972+h*8+4];b=12;break;case 9:var j=h+1;h=j;a=9;b=10;break; -case 10:b=(a==9?j:0)<=2?6:11;break;case 11:f=2;b=12;break;case 12:return a=f;default:assert(0,"bad label: "+b)}} -function _try_3way_compare(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c=b,d=b+4,f,h,j;HEAP[c]=g;HEAP[d]=e;j=HEAP[HEAP[HEAP[c]+4]+40];var k=HEAP[d];a=HEAP[HEAP[c]+4]==_PyInstance_Type?1:2;break;case 1:f=FUNCTION_TABLE[j](HEAP[c],k);a=26;break;case 2:a=HEAP[k+4]==_PyInstance_Type?3:4;break;case 3:f=FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+40]](HEAP[c],HEAP[d]);a=26;break;case 4:a=j!=0?5:8;break;case 5:var l=j;a=HEAP[HEAP[HEAP[d]+4]+40]==l?6:7;break;case 6:h=FUNCTION_TABLE[j](HEAP[c], -HEAP[d]);f=_adjust_tp_compare(h);a=26;break;case 7:a=l==92?9:8;break;case 8:a=HEAP[HEAP[HEAP[d]+4]+40]==92?9:10;break;case 9:f=__PyObject_SlotCompare(HEAP[c],HEAP[d]);a=26;break;case 10:h=_PyNumber_CoerceEx(c,d);a=h<0?11:12;break;case 11:f=-2;a=26;break;case 12:a=h>0?13:14;break;case 13:f=2;a=26;break;case 14:j=HEAP[HEAP[HEAP[c]+4]+40];a=j!=0?15:21;break;case 15:a=HEAP[HEAP[HEAP[d]+4]+40]==j?16:21;break;case 16:h=FUNCTION_TABLE[j](HEAP[c],HEAP[d]);a=HEAP[c];HEAP[a]-=1;a=HEAP[a]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[c]+ -4]+24]](HEAP[c]);a=18;break;case 18:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=20;break;case 20:f=_adjust_tp_compare(h);a=26;break;case 21:a=HEAP[c];HEAP[a]-=1;a=HEAP[a]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[HEAP[c]+4]+24]](HEAP[c]);a=23;break;case 23:a=HEAP[d];HEAP[a]-=1;a=HEAP[a]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);a=25;break;case 25:f=2;a=26;break;case 26:return c=f,STACKTOP=b,c;default:assert(0, -"bad label: "+a)}} -function _default_3way_compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;var o=a;b=HEAP[a+4]==HEAP[c+4]?1:5;break;case 1:m=o;n=c;b=m>=n?2:3;break;case 2:f=m>n;b=4;break;case 3:f=-1;b=4;break;case 4:h=f;b=23;break;case 5:b=o==__Py_NoneStruct?6:7;break;case 6:h=-1;b=23;break;case 7:b=c==__Py_NoneStruct?8:9;break;case 8:h=1;b=23;break;case 9:b=_PyNumber_Check(a)!=0?10:11;break;case 10:k=__str162913;b=12;break;case 11:k=HEAP[HEAP[a+4]+12];b=12;break;case 12:b=_PyNumber_Check(c)!= -0?13:14;break;case 13:l=__str162913;b=15;break;case 14:l=HEAP[HEAP[c+4]+12];b=15;break;case 15:j=b=_strcmp(k,l);b=b<0?16:17;break;case 16:h=-1;b=23;break;case 17:b=j>0?18:19;break;case 18:h=1;b=23;break;case 19:b=HEAP[a+4]HEAP[__Py_CheckRecursionLimit]?6:8;break;case 6:b=__Py_CheckRecursiveCall(__str182915)!=0?7:8;break;case 7:d=-1;b=9;break;case 8:d=_do_cmp(a,c);HEAP[HEAP[__PyThreadState_Current]+12]-=1;d=d>=-1?d:-1;b= -9;break;case 9:return a=d;default:assert(0,"bad label: "+b)}} -function _convert_3way_to_object(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d;b=g;c=e;b==0?(a=-1,b=1):b==1?(a=-1,b=2):b==2?(a=-1,b=3):b==3?(a=-1,b=4):b==4?(a=-1,b=5):b==5?(a=-1,b=6):(a=-1,b=7);break;case 1:var f=c<0;c=f;a=1;b=7;break;case 2:var h=c<=0;c=h;a=2;b=7;break;case 3:var j=c==0;c=j;a=3;b=7;break;case 4:var k=c!=0;c=k;a=4;b=7;break;case 5:var l=c>0;c=l;a=5;b=7;break;case 6:var m=c>=0;c=m;a=6;b=7;break;case 7:b=(a==6?m:a==5?l:a==4?k:a==3?j:a==2?h:a==1?f:e)!=0?8:9;break;case 8:d=__Py_TrueStruct; -b=10;break;case 9:d=__Py_ZeroStruct;b=10;break;case 10:return c=d,HEAP[c]+=1,c;default:assert(0,"bad label: "+b)}} -function _try_3way_to_rich_compare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k;d=g;f=e;h=b;var l=k=_try_3way_compare(d,f);l>1?(c=-1,a=1):(c=-1,a=7);break;case 1:a=HEAP[_Py_Py3kWarningFlag]!=0?2:6;break;case 2:a=HEAP[d+4]!=HEAP[f+4]?3:6;break;case 3:a=h!=2&h!=3?4:6;break;case 4:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str192917,1)<0?5:6;break;case 5:j=0;a=10;break;case 6:var m=_default_3way_compare(d,f);k=m;c=6;a=7;break;case 7:a=(c==6?m:l)<=-2?8:9;break;case 8:j=0;a=10; -break;case 9:j=_convert_3way_to_object(h,k);a=10;break;case 10:return g=j;default:assert(0,"bad label: "+a)}} -function _do_richcmp(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;var k=j=_try_rich_compare(c,d,f);a=j!=__Py_NotImplementedStruct?1:2;break;case 1:h=k;a=5;break;case 2:HEAP[j]=HEAP[k]-1;a=HEAP[j]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=4;break;case 4:h=_try_3way_to_rich_compare(c,d,f);a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}} -function _PyObject_RichCompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;a=HEAP[__PyThreadState_Current];HEAP[a+12]+=1;a=HEAP[a+12]>HEAP[__Py_CheckRecursionLimit]?1:3;break;case 1:a=__Py_CheckRecursiveCall(__str182915)!=0?2:3;break;case 2:h=0;a=17;break;case 3:a=HEAP[c+4]==HEAP[d+4]?4:15;break;case 4:a=HEAP[c+4]!=_PyInstance_Type?5:15;break;case 5:a=(HEAP[HEAP[c+4]+84]&32)!=0?7:6;break;case 6:l=0;a=11;break;case 7:l=HEAP[HEAP[c+4]+100];a=HEAP[HEAP[c+4]+100]!=0?8:11; -break;case 8:j=FUNCTION_TABLE[l](c,d,f);a=j!=__Py_NotImplementedStruct?16:9;break;case 9:HEAP[j]-=1;a=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=11;break;case 11:k=HEAP[HEAP[c+4]+40];a=HEAP[HEAP[c+4]+40]!=0?12:15;break;case 12:m=FUNCTION_TABLE[k](c,d);m=_adjust_tp_compare(m);a=m==-2?13:14;break;case 13:j=0;a=16;break;case 14:j=_convert_3way_to_object(f,m);a=16;break;case 15:j=_do_richcmp(c,d,f);a=16;break;case 16:HEAP[HEAP[__PyThreadState_Current]+12]-=1;h=j;a=17;break; -case 17:return g=h;default:assert(0,"bad label: "+a)}} -function _PyObject_RichCompareBool(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=c==d?1:5;break;case 1:a=f==2?2:3;break;case 2:h=1;a=13;break;case 3:a=f==3?4:5;break;case 4:h=0;a=13;break;case 5:j=a=_PyObject_RichCompare(c,d,f);a=a==0?6:7;break;case 6:h=-1;a=13;break;case 7:var l=j;a=HEAP[j+4]==_PyBool_Type?8:9;break;case 8:k=l==__Py_TrueStruct;a=10;break;case 9:k=_PyObject_IsTrue(l);a=10;break;case 10:HEAP[j]-=1;a=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+ -4]+24]](j);a=12;break;case 12:h=k;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function __Py_HashDouble(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f=e,h=e+8,j,k;a=g;b=___finite(a);var l=a;b=b==0?1:7;break;case 1:b=___isinf(l)!=0?2:6;break;case 2:b=a<0?3:4;break;case 3:c=-271828;b=5;break;case 4:c=314159;b=5;break;case 5:d=c;b=20;break;case 6:d=0;b=20;break;case 7:b=_modf(l,f);b=b==0?8:17;break;case 8:b=HEAP[f]>1073741823|HEAP[f]<-1073741823?9:14;break;case 9:k=_PyLong_FromDouble(a);b=k==0?10:11;break;case 10:d=-1;b=20;break;case 11:j= -_PyObject_Hash(k);HEAP[k]-=1;b=HEAP[k]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=13;break;case 13:d=j;b=20;break;case 14:j=HEAP[f]|0;b=j==-1?15:16;break;case 15:j=-2;b=16;break;case 16:d=j;b=20;break;case 17:a=_frexp(a,h);a*=2147483648;j=a|0;a=(a-j)*2147483648;j=((a|0)+j&4294967295)+HEAP[h]*32768&4294967295;b=j==-1?18:19;break;case 18:j=-2;b=19;break;case 19:d=j;b=20;break;case 20:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function __Py_HashPointer(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;b=e=e>>>4|e<<28;e=b==-1?1:2;break;case 1:b=-2;e=2;break;case 2:return g=b;default:assert(0,"bad label: "+e)}}function _PyObject_HashNotImplemented(g){_PyErr_Format(HEAP[_PyExc_TypeError],__str202918,allocate([HEAP[HEAP[g+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));return-1} -function _PyObject_Hash(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;var d=c=HEAP[b+4];e=HEAP[c+60]!=0?1:2;break;case 1:a=FUNCTION_TABLE[HEAP[d+60]](b);e=12;break;case 2:e=HEAP[d+132]==0?3:7;break;case 3:e=_PyType_Ready(c)<0?4:5;break;case 4:a=-1;e=12;break;case 5:e=HEAP[c+60]!=0?6:7;break;case 6:a=FUNCTION_TABLE[HEAP[c+60]](b);e=12;break;case 7:e=HEAP[c+40]==0?8:11;break;case 8:e=(HEAP[c+84]&32)==0?10:9;break;case 9:e=HEAP[c+100]==0?10:11;break;case 10:a=__Py_HashPointer(b);e=12;break;case 11:a= -_PyObject_HashNotImplemented(b);e=12;break;case 12:return g=a;default:assert(0,"bad label: "+e)}} -function _PyObject_GetAttrString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[HEAP[a+4]+32]!=0?1:2;break;case 1:d=FUNCTION_TABLE[HEAP[HEAP[a+4]+32]](a,c);b=8;break;case 2:f=_PyString_InternFromString(c);b=f==0?3:4;break;case 3:d=0;b=8;break;case 4:h=_PyObject_GetAttr(a,f);b=f!=0?5:7;break;case 5:HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:d=h;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_HasAttrString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyObject_GetAttrString(g,e);b=c!=0?1:4;break;case 1:HEAP[c]-=1;b=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=3;break;case 3:a=1;b=5;break;case 4:_PyErr_Clear();a=0;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _PyObject_SetAttrString(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=HEAP[HEAP[c+4]+36]!=0?1:2;break;case 1:h=FUNCTION_TABLE[HEAP[HEAP[c+4]+36]](c,d,f);a=8;break;case 2:j=_PyString_InternFromString(d);a=j==0?3:4;break;case 3:h=-1;a=8;break;case 4:k=_PyObject_SetAttr(c,j,f);a=j!=0?5:7;break;case 5:HEAP[j]-=1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:h=k;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _PyObject_GetAttr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=HEAP[a+4];b=(HEAP[HEAP[c+4]+84]&134217728)==0?1:5;break;case 1:var h=c;b=(HEAP[HEAP[c+4]+84]&268435456)!=0?2:4;break;case 2:c=__PyUnicodeUCS2_AsDefaultEncodedString(h,0);b=c==0?3:5;break;case 3:d=0;b=10;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str212919,allocate([HEAP[HEAP[h+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;b=10;break;case 5:var j=f;b=HEAP[f+72]!=0?6:7;break;case 6:d=FUNCTION_TABLE[HEAP[j+ -72]](a,c);b=10;break;case 7:b=HEAP[j+32]!=0?8:9;break;case 8:d=FUNCTION_TABLE[HEAP[f+32]](a,c+20);b=10;break;case 9:_PyErr_Format(HEAP[_PyExc_AttributeError],__str222920,allocate([HEAP[f+12],0,0,0,c+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=0;b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _PyObject_HasAttr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyObject_GetAttr(g,e);b=c!=0?1:4;break;case 1:HEAP[c]-=1;b=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=3;break;case 3:a=1;b=5;break;case 4:_PyErr_Clear();a=0;b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _PyObject_SetAttr(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f=a,h,j,k,l,m,n;d=g;HEAP[f]=e;h=b;m=HEAP[d+4];var o=HEAP[f];c=(HEAP[HEAP[HEAP[f]+4]+84]&134217728)==0?1:5;break;case 1:var p=HEAP[f];c=(HEAP[HEAP[o+4]+84]&268435456)!=0?2:4;break;case 2:c=_PyUnicodeUCS2_AsEncodedString(p,0,0);HEAP[f]=c;c=HEAP[f]==0?3:6;break;case 3:l=-1;c=27;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str212919,allocate([HEAP[HEAP[p+4]+12],0,0,0],["i8*",0,0, -0],ALLOC_STACK));l=-1;c=27;break;case 5:HEAP[o]+=1;c=6;break;case 6:_PyString_InternInPlace(f);var q=m;c=HEAP[m+76]!=0?7:10;break;case 7:n=FUNCTION_TABLE[HEAP[q+76]](d,HEAP[f],h);c=HEAP[f];HEAP[c]-=1;c=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);c=9;break;case 9:l=n;c=27;break;case 10:c=HEAP[q+36]!=0?11:14;break;case 11:n=FUNCTION_TABLE[HEAP[m+36]](d,HEAP[f]+20,h);c=HEAP[f];HEAP[c]-=1;c=HEAP[c]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]); -c=13;break;case 13:l=n;c=27;break;case 14:c=HEAP[f];HEAP[c]-=1;c=HEAP[c]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);c=16;break;case 16:c=HEAP[m+32]!=0?22:17;break;case 17:c=HEAP[m+72]!=0?22:18;break;case 18:var r=HEAP[f]+20;c=h==0?19:20;break;case 19:k=__str232921;c=21;break;case 20:k=__str242922;c=21;break;case 21:_PyErr_Format(HEAP[_PyExc_TypeError],__str252923,allocate([HEAP[m+12],0,0,0,k,0,0,0,r,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=26;break; -case 22:var u=HEAP[f]+20;c=h==0?23:24;break;case 23:j=__str232921;c=25;break;case 24:j=__str242922;c=25;break;case 25:_PyErr_Format(HEAP[_PyExc_TypeError],__str262924,allocate([HEAP[m+12],0,0,0,j,0,0,0,u,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=26;break;case 26:l=-1;c=27;break;case 27:return g=l,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function __PyObject_GetDictPtr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;d=HEAP[b+4];e=(HEAP[d+84]&256)==0?1:2;break;case 1:a=0;e=9;break;case 2:c=HEAP[d+144];e=c==0?3:4;break;case 3:a=0;e=9;break;case 4:e=c<0?5:8;break;case 5:f=HEAP[b+8];e=f<0?6:7;break;case 6:f=0-f;e=7;break;case 7:e=HEAP[d+16]+3+f*HEAP[d+20]&-4;c+=e;e=8;break;case 8:a=b+c;e=9;break;case 9:return g=a;default:assert(0,"bad label: "+e)}}function _PyObject_SelfIter(g){HEAP[g]+=1;return g} -function __PyObject_NextNotImplemented(g){_PyErr_Format(HEAP[_PyExc_TypeError],__str93,allocate([HEAP[HEAP[g+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));return 0} -function __PyObject_GenericGetAttrWithDict(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;k=HEAP[d+4];m=l=0;var q=f;a=(HEAP[HEAP[f+4]+84]&134217728)==0?1:5;break;case 1:var r=f;a=(HEAP[HEAP[q+4]+84]&268435456)!=0?2:4;break;case 2:f=_PyUnicodeUCS2_AsEncodedString(r,0,0);a=f==0?3:6;break;case 3:j=0;a=42;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str212919,allocate([HEAP[HEAP[r+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));j=0;a=42;break;case 5:HEAP[f]=HEAP[q]+ -1;a=6;break;case 6:a=HEAP[k+132]==0?7:8;break;case 7:a=_PyType_Ready(k)<0?39:8;break;case 8:l=a=__PyType_Lookup(k,f);a=a!=0?10:9;break;case 9:n=0;a=16;break;case 10:HEAP[l]+=1;n=0;a=l!=0?11:16;break;case 11:a=(HEAP[HEAP[l+4]+84]&256)!=0?12:16;break;case 12:n=HEAP[HEAP[l+4]+136];a=n!=0?13:16;break;case 13:a=HEAP[HEAP[l+4]+140]!=0?14:16;break;case 14:m=FUNCTION_TABLE[n](l,d,HEAP[d+4]);HEAP[l]-=1;a=HEAP[l]==0?15:39;break;case 15:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=39;break;case 16:a=h==0?17:25;break; -case 17:o=HEAP[k+144];a=o!=0?18:23;break;case 18:a=o<0?19:22;break;case 19:p=HEAP[d+8];a=p<0?20:21;break;case 20:p=0-p;a=21;break;case 21:a=HEAP[k+16]+3+p*HEAP[k+20]&-4;o+=a;a=22;break;case 22:var c=d+o,u=HEAP[c];h=u;c=22;a=24;break;case 23:var s=h,c=23;a=24;break;case 24:a=(c==23?s:u)!=0?25:33;break;case 25:HEAP[h]+=1;m=a=_PyDict_GetItem(h,f);a=a!=0?26:31;break;case 26:HEAP[m]+=1;a=l!=0?27:29;break;case 27:HEAP[l]-=1;a=HEAP[l]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=29;break; -case 29:HEAP[h]-=1;a=HEAP[h]==0?30:39;break;case 30:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=39;break;case 31:HEAP[h]-=1;a=HEAP[h]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=33;break;case 33:a=n!=0?34:36;break;case 34:m=FUNCTION_TABLE[n](l,d,HEAP[d+4]);HEAP[l]-=1;a=HEAP[l]==0?35:39;break;case 35:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=39;break;case 36:a=l!=0?37:38;break;case 37:m=l;a=39;break;case 38:_PyErr_Format(HEAP[_PyExc_AttributeError],__str222920,allocate([HEAP[k+12],0,0, -0,f+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=39;break;case 39:HEAP[f]-=1;a=HEAP[f]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=41;break;case 41:j=m;a=42;break;case 42:return g=j;default:assert(0,"bad label: "+a)}}function _PyObject_GenericGetAttr(g,e){return __PyObject_GenericGetAttrWithDict(g,e,0)} -function __PyObject_GenericSetAttrWithDict(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q;f=g;h=e;j=b;k=a;m=HEAP[f+4];q=-1;var r=h;c=(HEAP[HEAP[h+4]+84]&134217728)==0?1:5;break;case 1:var u=h;c=(HEAP[HEAP[r+4]+84]&268435456)!=0?2:4;break;case 2:h=_PyUnicodeUCS2_AsEncodedString(u,0,0);c=h==0?3:6;break;case 3:l=-1;c=36;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str212919,allocate([HEAP[HEAP[u+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));l=-1;c=36;break;case 5:HEAP[h]= -HEAP[r]+1;c=6;break;case 6:c=HEAP[m+132]==0?7:8;break;case 7:c=_PyType_Ready(m)<0?33:8;break;case 8:n=c=__PyType_Lookup(m,h);o=0;c=c!=0?9:13;break;case 9:c=(HEAP[HEAP[n+4]+84]&256)!=0?10:13;break;case 10:o=HEAP[HEAP[n+4]+140];c=o!=0?11:13;break;case 11:c=HEAP[HEAP[n+4]+140]!=0?12:13;break;case 12:q=FUNCTION_TABLE[o](n,f,j);c=33;break;case 13:c=k==0?14:20;break;case 14:p=__PyObject_GetDictPtr(f);c=p!=0?15:19;break;case 15:k=HEAP[p];c=k==0?16:20;break;case 16:c=j!=0?17:19;break;case 17:k=_PyDict_New(); -c=k==0?33:18;break;case 18:HEAP[p]=k;c=19;break;case 19:c=k!=0?20:28;break;case 20:HEAP[k]+=1;var s=k,t=h;c=j==0?21:22;break;case 21:var v=_PyDict_DelItem(s,t);q=v;d=21;c=23;break;case 22:var w=_PyDict_SetItem(s,t,j);q=w;d=22;c=23;break;case 23:c=(d==22?w:v)<0?24:26;break;case 24:c=_PyErr_ExceptionMatches(HEAP[_PyExc_KeyError])!=0?25:26;break;case 25:_PyErr_SetObject(HEAP[_PyExc_AttributeError],h);c=26;break;case 26:HEAP[k]-=1;c=HEAP[k]==0?27:33;break;case 27:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k); -c=33;break;case 28:c=o!=0?29:30;break;case 29:q=FUNCTION_TABLE[o](n,f,j);c=33;break;case 30:var x=h+20,y=HEAP[m+12],z=HEAP[_PyExc_AttributeError];c=n==0?31:32;break;case 31:_PyErr_Format(z,__str282926,allocate([y,0,0,0,x,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=33;break;case 32:_PyErr_Format(z,__str292927,allocate([y,0,0,0,x,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));c=33;break;case 33:HEAP[h]-=1;c=HEAP[h]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);c=35;break;case 35:l= -q;c=36;break;case 36:return g=l;default:assert(0,"bad label: "+c)}}function _PyObject_GenericSetAttr(g,e,b){return __PyObject_GenericSetAttrWithDict(g,e,b,0)} -function _PyObject_IsTrue(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==__Py_TrueStruct?1:2;break;case 1:a=1;e=17;break;case 2:e=b==__Py_ZeroStruct?3:4;break;case 3:a=0;e=17;break;case 4:e=b==__Py_NoneStruct?5:6;break;case 5:a=0;e=17;break;case 6:e=HEAP[HEAP[b+4]+48]==0?9:7;break;case 7:e=HEAP[HEAP[HEAP[b+4]+48]+40]==0?9:8;break;case 8:c=FUNCTION_TABLE[HEAP[HEAP[HEAP[b+4]+48]+40]](b);e=16;break;case 9:e=HEAP[HEAP[b+4]+56]==0?12:10;break;case 10:e=HEAP[HEAP[HEAP[b+4]+56]]==0?12:11;break; -case 11:c=FUNCTION_TABLE[HEAP[HEAP[HEAP[b+4]+56]]](b);e=16;break;case 12:e=HEAP[HEAP[b+4]+52]==0?15:13;break;case 13:e=HEAP[HEAP[HEAP[b+4]+52]]==0?15:14;break;case 14:c=FUNCTION_TABLE[HEAP[HEAP[HEAP[b+4]+52]]](b);e=16;break;case 15:a=1;e=17;break;case 16:a=c<=1?c:1;e=17;break;case 17:return g=a;default:assert(0,"bad label: "+e)}} -function _PyObject_Not(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=_PyObject_IsTrue(g);e=e<0?1:2;break;case 1:b=a;e=3;break;case 2:b=a==0;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _PyNumber_CoerceEx(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=HEAP[a];h=HEAP[c];b=HEAP[f+4]==HEAP[h+4]?1:3;break;case 1:b=(HEAP[HEAP[f+4]+84]&16)==0?2:3;break;case 2:HEAP[f]+=1;HEAP[h]+=1;d=0;b=12;break;case 3:b=HEAP[HEAP[f+4]+48]!=0?4:7;break;case 4:b=HEAP[HEAP[HEAP[f+4]+48]+68]!=0?5:7;break;case 5:j=FUNCTION_TABLE[HEAP[HEAP[HEAP[f+4]+48]+68]](a,c);b=j<=0?6:7;break;case 6:d=j;b=12;break;case 7:b=HEAP[HEAP[h+4]+48]!=0?8:11;break;case 8:b=HEAP[HEAP[HEAP[h+4]+48]+68]!= -0?9:11;break;case 9:j=FUNCTION_TABLE[HEAP[HEAP[HEAP[h+4]+48]+68]](c,a);b=j<=0?10:11;break;case 10:d=j;b=12;break;case 11:d=1;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}}function _PyNumber_Coerce(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyNumber_CoerceEx(g,e);b=c<=0?1:2;break;case 1:a=c;b=3;break;case 2:_PyErr_SetString(HEAP[_PyExc_TypeError],__str302928);a=-1;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _PyCallable_Check(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b==0?1:2;break;case 1:a=0;e=9;break;case 2:var d=b;e=HEAP[b+4]==_PyInstance_Type?3:8;break;case 3:c=_PyObject_GetAttrString(d,__str312929);e=c==0?4:5;break;case 4:_PyErr_Clear();a=0;e=9;break;case 5:HEAP[c]-=1;e=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:a=1;e=9;break;case 8:a=HEAP[HEAP[d+4]+64]!=0;e=9;break;case 9:return g=a;default:assert(0,"bad label: "+e)}} -function _merge_class_dict(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;c=e;f=_PyObject_GetAttrString(c,__str322930);b=f==0?1:2;break;case 1:_PyErr_Clear();b=6;break;case 2:j=_PyDict_Update(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:b=j<0?5:6;break;case 5:d=-1;b=26;break;case 6:h=b=_PyObject_GetAttrString(c,__str332931);b=b==0?7:8;break;case 7:_PyErr_Clear();b=25;break;case 8:l=_PySequence_Size(h);b=l<0?9:10;break;case 9:_PyErr_Clear(); -b=23;break;case 10:k=0;b=22;break;case 11:n=_PySequence_GetItem(h,k);b=n==0?12:15;break;case 12:HEAP[h]-=1;b=HEAP[h]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=14;break;case 14:d=-1;b=26;break;case 15:m=_merge_class_dict(a,n);HEAP[n]-=1;b=HEAP[n]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=17;break;case 17:b=m<0?18:21;break;case 18:HEAP[h]-=1;b=HEAP[h]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=20;break;case 20:d=-1;b=26;break;case 21:k+= -1;b=22;break;case 22:b=kk?4:8;break;case 8:a=HEAP[_Py_Py3kWarningFlag]!=0?9:16;break;case 9:a= -_strcmp(d,__str342932)==0?11:10;break;case 10:a=_strcmp(d,__str352933)==0?11:16;break;case 11:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str362934,1)<0?12:16;break;case 12:a=h!=0?13:15;break;case 13:HEAP[h]-=1;a=HEAP[h]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=15;break;case 15:f=-1;a=20;break;case 16:a=h!=0?17:19;break;case 17:HEAP[h]-=1;a=HEAP[h]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=19;break;case 19:f=j;a=20;break;case 20:return g=f;default:assert(0, -"bad label: "+a)}} -function __dir_locals(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;a=_PyEval_GetLocals();g=a==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str372935);e=0;g=9;break;case 2:b=_PyObject_CallMethod(a,__str382936,0,allocate(1,"i32",ALLOC_STACK));g=b==0?3:4;break;case 3:e=0;g=9;break;case 4:var c=b;g=(HEAP[HEAP[b+4]+84]&33554432)==0?5:8;break;case 5:_PyErr_Format(HEAP[_PyExc_TypeError],__str392937,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[b]-=1;g=HEAP[b]== -0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=7;break;case 7:e=0;g=9;break;case 8:e=c;g=9;break;case 9:return g=e;default:assert(0,"bad label: "+g)}} -function __specialized_dir_type(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=0;c=_PyDict_New();e=c!=0?1:6;break;case 1:e=_merge_class_dict(c,b)==0?2:3;break;case 2:a=_PyDict_Keys(c);e=3;break;case 3:e=c!=0?4:6;break;case 4:HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function __specialized_dir_module(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;a=0;c=_PyObject_GetAttrString(b,__str322930);e=c!=0?1:8;break;case 1:e=(HEAP[HEAP[c+4]+84]&536870912)!=0?2:3;break;case 2:a=_PyDict_Keys(c);e=5;break;case 3:d=_PyModule_GetName(b);e=d!=0?4:5;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str402938,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));e=5;break;case 5:e=c!=0?6:8;break;case 6:HEAP[c]-=1;e=HEAP[c]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c); -e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function __generic_dir(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h;a=g;f=c=0;d=_PyObject_GetAttrString(a,__str322930);e=d==0?1:2;break;case 1:_PyErr_Clear();var j=_PyDict_New();d=j;b=1;e=9;break;case 2:var k=d;e=(HEAP[HEAP[d+4]+84]&536870912)==0?3:6;break;case 3:HEAP[d]=HEAP[k]-1;e=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=5;break;case 5:var l=_PyDict_New();d=l;b=5;e=9;break;case 6:h=_PyDict_Copy(k);HEAP[d]-=1;e=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=8;break;case 8:var m=h;d=m;b=8;e=9;break;case 9:e=(b==8?m:b==5?l:j)==0?16:10;break;case 10:e=_merge_list_attr(d,a,__str342932)<0?16:11;break;case 11:e=_merge_list_attr(d,a,__str352933)<0?16:12;break;case 12:f=_PyObject_GetAttrString(a,__str412939);e=f==0?13:14;break;case 13:_PyErr_Clear();e=15;break;case 14:e=_merge_class_dict(d,f)!=0?16:15;break;case 15:c=_PyDict_Keys(d);e=16;break;case 16:e=f!=0?17:19;break;case 17:HEAP[f]-=1;e=HEAP[f]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);e=19;break;case 19:e=d!=0?20:22;break;case 20:HEAP[d]-=1;e=HEAP[d]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=22;break;case 22:return g=c;default:assert(0,"bad label: "+e)}} -function __dir_object(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=0;var f=b;e=HEAP[b+4]==_PyInstance_Type?1:5;break;case 1:d=_PyObject_GetAttrString(f,__str422940);e=d==0?2:15;break;case 2:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?3:4;break;case 3:_PyErr_Clear();e=7;break;case 4:a=0;e=24;break;case 5:d=__PyObject_LookupSpecial(f,__str422940,_dir_str_10462);e=_PyErr_Occurred()!=0?6:7;break;case 6:a=0;e=24;break;case 7:e=d==0?8:15;break;case 8:e=HEAP[b+4]==_PyModule_Type? -10:9;break;case 9:e=_PyType_IsSubtype(HEAP[b+4],_PyModule_Type)!=0?10:11;break;case 10:c=__specialized_dir_module(b);e=23;break;case 11:e=HEAP[HEAP[b+4]+84]<0?13:12;break;case 12:e=HEAP[b+4]==_PyClass_Type?13:14;break;case 13:c=__specialized_dir_type(b);e=23;break;case 14:c=__generic_dir(b);e=23;break;case 15:c=_PyObject_CallFunctionObjArgs(d,allocate(4,"i8*",ALLOC_STACK));HEAP[d]-=1;e=HEAP[d]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=17;break;case 17:e=c==0?18:19;break;case 18:a= -0;e=24;break;case 19:e=(HEAP[HEAP[c+4]+84]&33554432)==0?20:23;break;case 20:_PyErr_Format(HEAP[_PyExc_TypeError],__str432941,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[c]-=1;e=HEAP[c]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=22;break;case 22:c=0;e=23;break;case 23:a=c;e=24;break;case 24:return g=a;default:assert(0,"bad label: "+e)}} -function _PyObject_Dir(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c;a=g;e=a==0?1:2;break;case 1:var d=__dir_locals();c=d;b=1;e=3;break;case 2:var f=__dir_object(a);c=f;b=2;e=3;break;case 3:e=(b==2?f:d)!=0?4:8;break;case 4:e=_PyList_Sort(c)!=0?5:8;break;case 5:HEAP[c]-=1;e=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:c=0;e=8;break;case 8:return g=c;default:assert(0,"bad label: "+e)}}function _none_repr(){return _PyString_FromString(__str442942)} -function _none_dealloc(){_Py_FatalError(__str452943);throw"Reached an unreachable!";}function _NotImplemented_repr(){return _PyString_FromString(__str472945)} -function __Py_ReadyTypes(){var g;for(g=-1;;)switch(g){case -1:g=_PyType_Ready(_PyType_Type)<0?1:2;break;case 1:throw _Py_FatalError(__str492947),"Reached an unreachable!";case 2:g=_PyType_Ready(__PyWeakref_RefType)<0?3:4;break;case 3:throw _Py_FatalError(__str502948),"Reached an unreachable!";case 4:g=_PyType_Ready(__PyWeakref_CallableProxyType)<0?5:6;break;case 5:throw _Py_FatalError(__str512949),"Reached an unreachable!";case 6:g=_PyType_Ready(__PyWeakref_ProxyType)<0?7:8;break;case 7:throw _Py_FatalError(__str522950), -"Reached an unreachable!";case 8:g=_PyType_Ready(_PyBool_Type)<0?9:10;break;case 9:throw _Py_FatalError(__str532951),"Reached an unreachable!";case 10:g=_PyType_Ready(_PyString_Type)<0?11:12;break;case 11:throw _Py_FatalError(__str542952),"Reached an unreachable!";case 12:g=_PyType_Ready(_PyByteArray_Type)<0?13:14;break;case 13:throw _Py_FatalError(__str552953),"Reached an unreachable!";case 14:g=_PyType_Ready(_PyList_Type)<0?15:16;break;case 15:throw _Py_FatalError(__str562954),"Reached an unreachable!"; -case 16:g=_PyType_Ready(_PyNone_Type)<0?17:18;break;case 17:throw _Py_FatalError(__str572955),"Reached an unreachable!";case 18:g=_PyType_Ready(_PyNotImplemented_Type)<0?19:20;break;case 19:throw _Py_FatalError(__str582956),"Reached an unreachable!";case 20:g=_PyType_Ready(_PyTraceBack_Type)<0?21:22;break;case 21:throw _Py_FatalError(__str592957),"Reached an unreachable!";case 22:g=_PyType_Ready(_PySuper_Type)<0?23:24;break;case 23:throw _Py_FatalError(__str602958),"Reached an unreachable!";case 24:g= -_PyType_Ready(_PyBaseObject_Type)<0?25:26;break;case 25:throw _Py_FatalError(__str612959),"Reached an unreachable!";case 26:g=_PyType_Ready(_PyRange_Type)<0?27:28;break;case 27:throw _Py_FatalError(__str622960),"Reached an unreachable!";case 28:g=_PyType_Ready(_PyDict_Type)<0?29:30;break;case 29:throw _Py_FatalError(__str632961),"Reached an unreachable!";case 30:g=_PyType_Ready(_PySet_Type)<0?31:32;break;case 31:throw _Py_FatalError(__str642962),"Reached an unreachable!";case 32:g=_PyType_Ready(_PyUnicode_Type)< -0?33:34;break;case 33:throw _Py_FatalError(__str652963),"Reached an unreachable!";case 34:g=_PyType_Ready(_PySlice_Type)<0?35:36;break;case 35:throw _Py_FatalError(__str662964),"Reached an unreachable!";case 36:g=_PyType_Ready(_PyStaticMethod_Type)<0?37:38;break;case 37:throw _Py_FatalError(__str672965),"Reached an unreachable!";case 38:g=_PyType_Ready(_PyComplex_Type)<0?39:40;break;case 39:throw _Py_FatalError(__str682966),"Reached an unreachable!";case 40:g=_PyType_Ready(_PyFloat_Type)<0?41:42; -break;case 41:throw _Py_FatalError(__str692967),"Reached an unreachable!";case 42:g=_PyType_Ready(_PyBuffer_Type)<0?43:44;break;case 43:throw _Py_FatalError(__str702968),"Reached an unreachable!";case 44:g=_PyType_Ready(_PyLong_Type)<0?45:46;break;case 45:throw _Py_FatalError(__str712969),"Reached an unreachable!";case 46:g=_PyType_Ready(_PyInt_Type)<0?47:48;break;case 47:throw _Py_FatalError(__str722970),"Reached an unreachable!";case 48:g=_PyType_Ready(_PyFrozenSet_Type)<0?49:50;break;case 49:throw _Py_FatalError(__str732971), -"Reached an unreachable!";case 50:g=_PyType_Ready(_PyProperty_Type)<0?51:52;break;case 51:throw _Py_FatalError(__str742972),"Reached an unreachable!";case 52:g=_PyType_Ready(_PyMemoryView_Type)<0?53:54;break;case 53:throw _Py_FatalError(__str752973),"Reached an unreachable!";case 54:g=_PyType_Ready(_PyTuple_Type)<0?55:56;break;case 55:throw _Py_FatalError(__str762974),"Reached an unreachable!";case 56:g=_PyType_Ready(_PyEnum_Type)<0?57:58;break;case 57:throw _Py_FatalError(__str772975),"Reached an unreachable!"; -case 58:g=_PyType_Ready(_PyReversed_Type)<0?59:60;break;case 59:throw _Py_FatalError(__str782976),"Reached an unreachable!";case 60:g=_PyType_Ready(_PyCode_Type)<0?61:62;break;case 61:throw _Py_FatalError(__str792977),"Reached an unreachable!";case 62:g=_PyType_Ready(_PyFrame_Type)<0?63:64;break;case 63:throw _Py_FatalError(__str802978),"Reached an unreachable!";case 64:g=_PyType_Ready(_PyCFunction_Type)<0?65:66;break;case 65:throw _Py_FatalError(__str812979),"Reached an unreachable!";case 66:g=_PyType_Ready(_PyMethod_Type)< -0?67:68;break;case 67:throw _Py_FatalError(__str822980),"Reached an unreachable!";case 68:g=_PyType_Ready(_PyFunction_Type)<0?69:70;break;case 69:throw _Py_FatalError(__str832981),"Reached an unreachable!";case 70:g=_PyType_Ready(_PyClass_Type)<0?71:72;break;case 71:throw _Py_FatalError(__str842982),"Reached an unreachable!";case 72:g=_PyType_Ready(_PyDictProxy_Type)<0?73:74;break;case 73:throw _Py_FatalError(__str852983),"Reached an unreachable!";case 74:g=_PyType_Ready(_PyGen_Type)<0?75:76;break; -case 75:throw _Py_FatalError(__str862984),"Reached an unreachable!";case 76:g=_PyType_Ready(_PyGetSetDescr_Type)<0?77:78;break;case 77:throw _Py_FatalError(__str872985),"Reached an unreachable!";case 78:g=_PyType_Ready(_PyWrapperDescr_Type)<0?79:80;break;case 79:throw _Py_FatalError(__str882986),"Reached an unreachable!";case 80:g=_PyType_Ready(_PyInstance_Type)<0?81:82;break;case 81:throw _Py_FatalError(__str892987),"Reached an unreachable!";case 82:g=_PyType_Ready(_PyEllipsis_Type)<0?83:84;break; -case 83:throw _Py_FatalError(__str902988),"Reached an unreachable!";case 84:g=_PyType_Ready(_PyMemberDescr_Type)<0?85:86;break;case 85:throw _Py_FatalError(__str912989),"Reached an unreachable!";case 86:g=_PyType_Ready(_PyFile_Type)<0?87:88;break;case 87:throw _Py_FatalError(__str922990),"Reached an unreachable!";case 88:return;default:assert(0,"bad label: "+g)}} -function _PyMem_Malloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b>=0?1:5;break;case 1:e=b!=0?2:3;break;case 2:a=b;e=4;break;case 3:a=1;e=4;break;case 4:c=_malloc(a);e=6;break;case 5:c=0;e=6;break;case 6:return g=c;default:assert(0,"bad label: "+e)}} -function _PyMem_Realloc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=c>=0?1:5;break;case 1:b=c!=0?2:3;break;case 2:d=c;b=4;break;case 3:d=1;b=4;break;case 4:f=_realloc(a,d);b=6;break;case 5:f=0;b=6;break;case 6:return b=f;default:assert(0,"bad label: "+b)}}function _PyMem_Free(g){_free(g)} -function _Py_ReprEnter(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=_PyThreadState_GetDict();e=c==0?1:2;break;case 1:a=0;e=14;break;case 2:d=_PyDict_GetItemString(c,__str932991);e=d==0?3:9;break;case 3:d=_PyList_New(0);e=d==0?4:5;break;case 4:a=-1;e=14;break;case 5:e=_PyDict_SetItemString(c,__str932991,d)<0?6:7;break;case 6:a=-1;e=14;break;case 7:HEAP[d]-=1;e=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=9;break;case 9:f=HEAP[d+8];e=12;break;case 10:e=HEAP[HEAP[h+ -12]+4*f]==b?11:12;break;case 11:a=1;e=14;break;case 12:f=e=f-1;var h=d;e=e>=0?10:13;break;case 13:_PyList_Append(h,b);a=0;e=14;break;case 14:return g=a;default:assert(0,"bad label: "+e)}} -function _Py_ReprLeave(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;a=_PyThreadState_GetDict();e=a==0?7:1;break;case 1:c=_PyDict_GetItemString(a,__str932991);e=c==0?7:2;break;case 2:e=(HEAP[HEAP[c+4]+84]&33554432)==0?7:3;break;case 3:d=HEAP[c+8];e=6;break;case 4:e=HEAP[HEAP[c+12]+4*d]==b?5:6;break;case 5:_PyList_SetSlice(c,d,d+1,0);e=7;break;case 6:d=e=d-1;e=e>=0?4:7;break;case 7:return;default:assert(0,"bad label: "+e)}} -function __PyTrash_deposit_object(g){HEAP[g+-12+4]=HEAP[__PyTrash_delete_later];HEAP[__PyTrash_delete_later]=g} -function __PyTrash_destroy_chain(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[__PyTrash_delete_later]!=0?1:2;break;case 1:g=HEAP[__PyTrash_delete_later];e=HEAP[HEAP[g+4]+24];HEAP[__PyTrash_delete_later]=HEAP[g+-12+4];HEAP[__PyTrash_delete_nesting]+=1;FUNCTION_TABLE[e](g);HEAP[__PyTrash_delete_nesting]-=1;g=HEAP[__PyTrash_delete_later]!=0?1:2;break;case 2:return;default:assert(0,"bad label: "+g)}} -function _PyObject_Malloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=b>=0?1:5;break;case 1:e=b!=0?2:3;break;case 2:a=b;e=4;break;case 3:a=1;e=4;break;case 4:c=_malloc(a);e=6;break;case 5:c=0;e=6;break;case 6:return g=c;default:assert(0,"bad label: "+e)}} -function _PyObject_Realloc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=c>=0?1:5;break;case 1:b=c!=0?2:3;break;case 2:d=c;b=4;break;case 3:d=1;b=4;break;case 4:f=_realloc(a,d);b=6;break;case 5:f=0;b=6;break;case 6:return b=f;default:assert(0,"bad label: "+b)}}function _PyObject_Free(g){_free(g)}function _s_reset(g){HEAP[g]=g+4+18E3} -function _s_push(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=HEAP[c]==c+4?1:2;break;case 1:_fwrite(__str3035,1,30,HEAP[_stderr]);h=15;a=3;break;case 2:HEAP[c]+=-12;a=HEAP[c];HEAP[a+4]=d;HEAP[a+8]=f;h=HEAP[a]=0;a=3;break;case 3:return g=h;default:assert(0,"bad label: "+a)}} -function _PyParser_New(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[a+20]==0?1:2;break;case 1:_PyGrammar_AddAccelerators(a);b=2;break;case 2:f=b=_malloc(18016);b=b==0?3:4;break;case 3:d=0;b=7;break;case 4:HEAP[f+18004]=a;HEAP[f+18012]=0;var h=_PyNode_New(c);HEAP[f+18008]=h;h=f;b=HEAP[f+18008]==0?5:6;break;case 5:_free(h);d=0;b=7;break;case 6:_s_reset(h);d=HEAP[f+18008];b=_PyGrammar_FindDFA(a,c);_s_push(f,b,d);d=f;b=7;break;case 7:return a=d;default:assert(0,"bad label: "+b)}} -function _PyParser_Delete(g){_PyNode_Free(HEAP[g+18008]);_free(g)}function _shift(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l;h=g;f=e;j=b;k=a;j=_PyNode_AddChild(HEAP[HEAP[h]+8],f,j,c,d);f=j!=0?1:2;break;case 1:l=j;f=3;break;case 2:HEAP[HEAP[h]]=k;l=0;f=3;break;case 3:return g=l;default:assert(0,"bad label: "+f)}} -function _push(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o;h=g;f=e;j=b;k=a;l=c;m=d;o=HEAP[HEAP[h]+8];l=_PyNode_AddChild(o,f,0,l,m);f=l!=0?1:2;break;case 1:n=l;f=3;break;case 2:HEAP[HEAP[h]]=k;n=_s_push(h,j,HEAP[o+20]+24*(HEAP[o+16]-1));f=3;break;case 3:return g=n;default:assert(0,"bad label: "+f)}} -function _classify(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;k=HEAP[d+18004];l=HEAP[k+8];a=f==1?1:12;break;case 1:m=h;n=HEAP[k+8+4];var r=l;o=r;c=1;a=11;break;case 2:a=HEAP[n]!=1?10:3;break;case 3:a=HEAP[n+4]==0?10:4;break;case 4:a=HEAP[HEAP[n+4]]!=HEAP[m]?10:5;break;case 5:a=_strcmp(HEAP[n+4],m)!=0?10:6;break;case 6:a=(HEAP[d+18012]&65536)!=0?7:9;break;case 7:a=HEAP[m]==112?8:9;break;case 8:a=_strcmp(m,__str13036)==0?12:9;break;case 9:j=l-o;a=19;break; -case 10:var u=o-1;o=u;n+=8;c=10;a=11;break;case 11:a=(c==10?u:r)>0?2:12;break;case 12:p=HEAP[k+8+4];var s=l;q=s;c=12;a=17;break;case 13:a=HEAP[p]==f?14:16;break;case 14:a=HEAP[p+4]==0?15:16;break;case 15:j=l-q;a=19;break;case 16:var t=q-1;q=t;p+=8;c=16;a=17;break;case 17:a=(c==16?t:s)>0?13:18;break;case 18:j=-1;a=19;break;case 19:return g=j;default:assert(0,"bad label: "+a)}} -function _future_hack(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;a=HEAP[HEAP[b]+8];a=HEAP[a+20];e=HEAP[a+16]<=3?19:1;break;case 1:c=HEAP[a+20];e=HEAP[c+4]==0?19:2;break;case 2:e=_strcmp(HEAP[c+4],__str23037)!=0?19:3;break;case 3:c=HEAP[a+20]+24;e=HEAP[c+16]==1?4:6;break;case 4:e=HEAP[HEAP[c+20]+4]!=0?5:6;break;case 5:e=_strcmp(HEAP[HEAP[c+20]+4],__str33038)!=0?19:6;break;case 6:c=HEAP[a+20]+72;e=HEAP[c]==16?19:7;break;case 7:e=HEAP[c]==7?8:9;break;case 8:c=HEAP[a+20]+96;e=9;break;case 9:f= -0;e=HEAP[c+16]>f?10:19;break;case 10:d=HEAP[c+20]+24*f;e=HEAP[d+16]>0?11:18;break;case 11:e=HEAP[HEAP[d+20]]==1?12:18;break;case 12:h=HEAP[HEAP[d+20]+4];e=_strcmp(h,__str43039)==0?13:14;break;case 13:HEAP[b+18012]|=32768;e=18;break;case 14:e=_strcmp(h,__str53040)==0?15:16;break;case 15:HEAP[b+18012]|=65536;e=18;break;case 16:e=_strcmp(h,__str63041)==0?17:18;break;case 17:HEAP[b+18012]|=131072;e=18;break;case 18:f+=2;e=HEAP[c+16]>f?10:19;break;case 19:return;default:assert(0,"bad label: "+e)}} -function _PyParser_AddToken(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t;h=g;j=e;k=b;l=a;m=c;n=d;p=_classify(h,j,k);f=p<0?1:2;break;case 1:o=14;f=30;break;case 2:r=HEAP[HEAP[h]+4];u=HEAP[r+16]+24*HEAP[HEAP[h]];f=HEAP[u+8]<=p?3:19;break;case 3:f=HEAP[u+12]>p?4:19;break;case 4:s=HEAP[HEAP[u+16]+4*(p-HEAP[u+8])];f=s!=-1?5:19;break;case 5:f=(s&128)!=0?6:8;break;case 6:f=(s>>8)+256;q=s&127;t=_PyGrammar_FindDFA(HEAP[h+18004],f);q=_push(h,f,t,q,l,m);f=q>0?7:2;break;case 7:o= -q;f=30;break;case 8:q=_shift(h,j,k,s,l,m);f=q>0?9:16;break;case 9:o=q;f=30;break;case 10:f=HEAP[HEAP[r+4]]==105?11:13;break;case 11:f=_strcmp(HEAP[r+4],__str73042)==0?12:13;break;case 12:_future_hack(h);f=13;break;case 13:HEAP[h]+=12;f=HEAP[h]==h+4+18E3?14:15;break;case 14:o=16;f=30;break;case 15:r=HEAP[HEAP[h]+4];f=16;break;case 16:u=HEAP[r+16]+24*HEAP[HEAP[h]];f=HEAP[u+20]==0?18:17;break;case 17:f=HEAP[u]!=1?18:10;break;case 18:o=10;f=30;break;case 19:f=HEAP[u+20]!=0?20:25;break;case 20:f=HEAP[HEAP[r+ -4]]==105?21:23;break;case 21:f=_strcmp(HEAP[r+4],__str73042)==0?22:23;break;case 22:_future_hack(h);f=23;break;case 23:HEAP[h]+=12;f=HEAP[h]==h+4+18E3?24:2;break;case 24:o=14;f=30;break;case 25:f=n!=0?26:29;break;case 26:f=HEAP[u+8]==HEAP[u+12]-1?27:28;break;case 27:HEAP[n]=HEAP[HEAP[HEAP[h+18004]+8+4]+8*HEAP[u+8]];f=29;break;case 28:HEAP[n]=-1;f=29;break;case 29:o=14;f=30;break;case 30:return g=o;default:assert(0,"bad label: "+f)}} -function _PyParser_ParseString(g,e,b,a){return _PyParser_ParseStringFlagsFilename(g,0,e,b,a,0)}function _PyParser_ParseStringFlags(g,e,b,a,c){return _PyParser_ParseStringFlagsFilename(g,0,e,b,a,c)}function _PyParser_ParseStringFlagsFilename(g,e,b,a,c,d){var f=STACKTOP;STACKTOP+=4;_memset(f,0,4);HEAP[f]=d;g=_PyParser_ParseStringFlagsFilenameEx(g,e,b,a,c,f);STACKTOP=f;return g} -function _PyParser_ParseStringFlagsFilenameEx(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q;f=g;h=e;j=b;k=a;l=c;m=d;_initerr(l,h);q=_PyTokenizer_FromString(f,k==257);f=q==0?1:5;break;case 1:f=_PyErr_Occurred()!=0?2:3;break;case 2:p=22;f=4;break;case 3:p=15;f=4;break;case 4:HEAP[l]=p;o=0;f=12;break;case 5:f=h!=0?6:7;break;case 6:n=h;f=8;break;case 7:n=__str3043;f=8;break;case 8:HEAP[q+460]=n;f=HEAP[_Py_TabcheckFlag]!=0|HEAP[_Py_VerboseFlag]!=0?9:11;break;case 9:HEAP[q+464]= -HEAP[q+460]!=0;f=HEAP[_Py_TabcheckFlag]>1?10:11;break;case 10:HEAP[q+468]+=1;f=11;break;case 11:o=_parsetok(q,j,k,l,m);f=12;break;case 12:return g=o;default:assert(0,"bad label: "+f)}}function _PyParser_ParseFile(g,e,b,a,c,d,f){return _PyParser_ParseFileFlags(g,e,b,a,c,d,f,0)}function _PyParser_ParseFileFlags(g,e,b,a,c,d,f,h){var j=STACKTOP;STACKTOP+=4;_memset(j,0,4);HEAP[j]=h;g=_PyParser_ParseFileFlagsEx(g,e,b,a,c,d,f,j);STACKTOP=j;return g} -function _PyParser_ParseFileFlagsEx(g,e,b,a,c,d,f,h){var j;for(j=-1;;)switch(j){case -1:var k,l,m,n,o,p,q,r;j=g;k=e;l=b;m=a;n=c;o=d;p=f;q=h;_initerr(p,k);n=_PyTokenizer_FromFile(j,n,o);j=n==0?1:2;break;case 1:HEAP[p]=15;r=0;j=6;break;case 2:HEAP[n+460]=k;j=HEAP[_Py_TabcheckFlag]!=0|HEAP[_Py_VerboseFlag]!=0?3:5;break;case 3:HEAP[n+464]=k!=0;j=HEAP[_Py_TabcheckFlag]>1?4:5;break;case 4:HEAP[n+468]+=1;j=5;break;case 5:r=_parsetok(n,l,m,p,q);j=6;break;case 6:return g=r;default:assert(0,"bad label: "+j)}} -function _parsetok(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s=d,t=d+4,v,w,x,y,z,C,A;h=g;j=e;f=b;k=a;l=c;u=0;j=_PyParser_New(j,f);f=j==0?1:2;break;case 1:_fwrite(__str13044,1,22,HEAP[_stderr]);HEAP[k]=15;_PyTokenizer_Free(h);q=0;f=63;break;case 2:f=(HEAP[l]&4)!=0?3:4;break;case 3:HEAP[j+18012]|=65536;f=4;break;case 4:f=(HEAP[l]&8)!=0?5:6;break;case 5:HEAP[j+18012]|=131072;f=6;break;case 6:v=f=_PyTokenizer_Get(h,s,t);f=f==52?7: -8;break;case 7:HEAP[k]=HEAP[h+20];f=29;break;case 8:f=v!=0?13:9;break;case 9:f=u==0?13:10;break;case 10:v=4;u=0;f=HEAP[h+32]!=0?11:14;break;case 11:f=(HEAP[l]&2)==0?12:14;break;case 12:HEAP[h+440]=0-HEAP[h+32];HEAP[h+32]=0;f=14;break;case 13:u=1;f=14;break;case 14:w=HEAP[t]-HEAP[s];f=w+1>=0?15:18;break;case 15:f=w!=-1?16:17;break;case 16:p=w+1;f=19;break;case 17:p=1;f=19;break;case 18:x=0;f=20;break;case 19:x=f=_malloc(p);f=f==0?20:21;break;case 20:_fwrite(__str23045,1,22,HEAP[_stderr]);HEAP[k]=15; -f=29;break;case 21:f=w!=0?22:23;break;case 22:_strncpy(x,HEAP[s],w);f=23;break;case 23:HEAP[x+w]=0;f=HEAP[h+896]<=HEAP[s]?24:25;break;case 24:y=HEAP[s]-HEAP[h+896];f=26;break;case 25:y=-1;f=26;break;case 26:f=_PyParser_AddToken(j,v,x,HEAP[h+452],y,k+24);HEAP[k]=f;f=HEAP[k]!=10?27:6;break;case 27:f=HEAP[k]!=16?28:29;break;case 28:_free(x);HEAP[k+20]=v;f=29;break;case 29:f=HEAP[k]==16?30:31;break;case 30:r=HEAP[j+18008];HEAP[j+18008]=0;f=32;break;case 31:r=0;f=32;break;case 32:HEAP[l]=HEAP[j+18012]; -_PyParser_Delete(j);var G=h;f=r==0?33:48;break;case 33:f=HEAP[G+452]<=1?34:36;break;case 34:f=HEAP[h+20]==11?35:36;break;case 35:HEAP[k]=11;f=36;break;case 36:HEAP[k+8]=HEAP[h+452];f=HEAP[h]!=0?37:62;break;case 37:HEAP[k+12]=HEAP[h+4]-HEAP[h];C=HEAP[h+8]-HEAP[h];z=_PyTokenizer_RestoreEncoding(h,C,k+12);f=z==0?38:47;break;case 38:f=C+1>=0?39:42;break;case 39:f=C!=-1?40:41;break;case 40:o=C+1;f=43;break;case 41:o=1;f=43;break;case 42:z=0;f=47;break;case 43:z=f=_malloc(o);f=f!=0?44:47;break;case 44:f= -C!=0?45:46;break;case 45:_strncpy(z,HEAP[h],C);f=46;break;case 46:HEAP[z+C]=0;f=47;break;case 47:HEAP[k+16]=z;f=62;break;case 48:f=HEAP[G+888]!=0?49:62;break;case 49:A=_PyNode_New(339);f=A!=0?50:58;break;case 50:f=_strlen(HEAP[h+888])+1>=0?51:55;break;case 51:f=_strlen(HEAP[h+888])!=-1?52:53;break;case 52:m=_strlen(HEAP[h+888])+1;f=54;break;case 53:m=1;f=54;break;case 54:n=_malloc(m);f=56;break;case 55:n=0;f=56;break;case 56:HEAP[A+4]=n;f=A==0?58:57;break;case 57:f=HEAP[A+4]==0?58:61;break;case 58:HEAP[k]= -15;f=A!=0?59:60;break;case 59:_free(A);f=60;break;case 60:r=0;f=62;break;case 61:_strcpy(HEAP[A+4],HEAP[h+888]);_free(HEAP[h+888]);HEAP[h+888]=0;HEAP[A+16]=1;HEAP[A+20]=r;r=A;f=62;break;case 62:_PyTokenizer_Free(h);q=r;f=63;break;case 63:return g=q,STACKTOP=d,g;default:assert(0,"bad label: "+f)}}function _initerr(g,e){HEAP[g]=10;HEAP[g+4]=e;HEAP[g+8]=0;HEAP[g+12]=0;HEAP[g+16]=0;HEAP[g+20]=-1;HEAP[g+24]=-1} -function _tuple_of_constants(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=0;a=k>8&255;HEAP[c+(d*3+1)]=l&255;h=1;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function _fold_binops_on_constants(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;j=HEAP[HEAP[d+12]+4*(HEAP[c+1]+HEAP[c+2]*256)];k=HEAP[HEAP[d+12]+4*(HEAP[c+4]+HEAP[c+5]*256)];b=n=HEAP[c+6];b=b==19?1:b==20?2:b==21?3:b==22?6:b==23?7:b==24?8:b==25?9:b==26?5:b==27?4:b==62?16:b==63?17:b==64?18:b==65?19:b==66?20:21;break;case 1:var o=_PyNumber_Power(j,k,__Py_NoneStruct);h=o;a=1;b=23;break;case 2:var p=_PyNumber_Multiply(j,k);h=p;a=2;b=23;break;case 3:f=0;b=38;break;case 4:var q= -_PyNumber_TrueDivide(j,k);h=q;a=4;b=23;break;case 5:var r=_PyNumber_FloorDivide(j,k);h=r;a=5;b=23;break;case 6:var u=_PyNumber_Remainder(j,k);h=u;a=6;b=23;break;case 7:var s=_PyNumber_Add(j,k);h=s;a=7;b=23;break;case 8:var t=_PyNumber_Subtract(j,k);h=t;a=8;b=23;break;case 9:h=_PyObject_GetItem(j,k);b=h!=0?10:24;break;case 10:b=(HEAP[HEAP[j+4]+84]&268435456)!=0?11:22;break;case 11:b=(HEAP[HEAP[h+4]+84]&268435456)!=0?12:22;break;case 12:b=HEAP[HEAP[h+12]];b=b>55295&b<=57343?13:22;break;case 13:HEAP[h]-= -1;b=HEAP[h]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=15;break;case 15:f=0;b=38;break;case 16:var v=_PyNumber_Lshift(j,k);h=v;a=16;b=23;break;case 17:var w=_PyNumber_Rshift(j,k);h=w;a=17;b=23;break;case 18:var x=_PyNumber_And(j,k);h=x;a=18;b=23;break;case 19:var y=_PyNumber_Xor(j,k);h=y;a=19;b=23;break;case 20:var z=_PyNumber_Or(j,k);h=z;a=20;b=23;break;case 21:_PyErr_Format(HEAP[_PyExc_SystemError],__str3046,allocate([n,0,0,0],["i32",0,0,0],ALLOC_STACK));f=0;b=38;break;case 22:var C= -h,a=22;b=23;break;case 23:b=(a==22?C:a==20?z:a==19?y:a==18?x:a==17?w:a==16?v:a==8?t:a==7?s:a==6?u:a==5?r:a==4?q:a==2?p:o)==0?24:25;break;case 24:_PyErr_Clear();f=0;b=38;break;case 25:m=_PyObject_Size(h);b=m==-1?26:27;break;case 26:_PyErr_Clear();b=31;break;case 27:b=m>20?28:31;break;case 28:HEAP[h]-=1;b=HEAP[h]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=30;break;case 30:f=0;b=38;break;case 31:l=HEAP[d+8];b=_PyList_Append(d,h)!=0;HEAP[h]-=1;var A=HEAP[h]==0;b=b?32:35;break;case 32:b= -A?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=34;break;case 34:f=0;b=38;break;case 35:b=A?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=37;break;case 37:_llvm_memset_p0i8_i32(c,9,4,1,0);HEAP[c+4]=100;HEAP[c+6]=l>>8&255;HEAP[c+5]=l&255;f=1;b=38;break;case 38:return a=f;default:assert(0,"bad label: "+b)}} -function _fold_unaryops_on_constants(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;h=0;j=HEAP[HEAP[d+12]+4*(HEAP[c+1]+HEAP[c+2]*256)];b=l=HEAP[c+3];b=b==11?1:b==13?3:b==15?4:5;break;case 1:b=_PyObject_IsTrue(j)==1?2:6;break;case 2:var m=_PyNumber_Negative(j);h=m;a=2;b=7;break;case 3:var n=_PyObject_Repr(j);h=n;a=3;b=7;break;case 4:var o=_PyNumber_Invert(j);h=o;a=4;b=7;break;case 5:_PyErr_Format(HEAP[_PyExc_SystemError],__str13047,allocate([l,0,0,0],["i32",0,0,0],ALLOC_STACK)); -f=0;b=16;break;case 6:var p=h,a=6;b=7;break;case 7:b=(a==6?p:a==2?m:a==4?o:n)==0?8:9;break;case 8:_PyErr_Clear();f=0;b=16;break;case 9:k=HEAP[d+8];b=_PyList_Append(d,h)!=0;HEAP[h]-=1;var q=HEAP[h]==0;b=b?10:13;break;case 10:b=q?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=12;break;case 12:f=0;b=16;break;case 13:b=q?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=15;break;case 15:HEAP[c]=9;HEAP[c+1]=100;HEAP[c+3]=k>>8&255;HEAP[c+2]=k&255;f=1;b=16;break;case 16:return a=f; -default:assert(0,"bad label: "+b)}} -function _markblocks(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;k=_PyMem_Malloc(d*4);n=0;b=k==0?1:2;break;case 1:_PyErr_NoMemory();j=0;b=20;break;case 2:_llvm_memset_p0i8_i32(k,0,d*4,1,0);l=0;b=l89?14:15;break;case 14:f=3;b=16;break;case 15:f=1;b=16;break;case 16:l+=f;b=l32700?151:3;break;case 3:D=_PyMem_Malloc(x);c=D==0?150:4;break;case 4:_llvm_memcpy_p0i8_p0i8_i32(D,f+20,x,1,0);c=HEAP[D+(x-1)]!=83?151:5;break;case 5:M=_PyMem_Malloc(x*4);c=M==0?150:6;break;case 6:Q=_markblocks(D, -x);c=Q==0?150:7;break;case 7:v=0;c=127;break;case 8:E=c=HEAP[D+v];var K=F;V=K;F=0;c=c==11?54:c==12?9:c==13?54:c==15?54:c==19?50:c==20?50:c==22?50:c==23?50:c==24?50:c==25?50:c==26?50:c==27?50:c==62?50:c==63?50:c==64?50:c==65?50:c==66?50:c==83?115:c==93?87:c==100?25:c==101?16:c==102?29:c==103?29:c==107?12:c==110?87:c==111?58:c==112?58:c==113?87:c==114?87:c==115?87:c==116?16:c==119?87:c==120?87:c==121?87:c==122?87:c==143?87:c==145?151:123;break;case 9:c=reSign(HEAP[D+(v+1)],8,1)!=114?123:10;break;case 10:c= -(HEAP[Q+4*v]|0)!=(HEAP[Q+4*(v+3)]|0)?123:11;break;case 11:w=HEAP[D+(v+2)]+HEAP[D+(v+3)]*256;HEAP[D+v]=115;HEAP[D+(v+2)]=w>>8&255;HEAP[D+(v+1)]=w&255;HEAP[D+(v+3)]=9;c=8;break;case 12:w=HEAP[D+(v+1)]+HEAP[D+(v+2)]*256;c=w<=5|w>9?123:13;break;case 13:c=HEAP[D+(v+3)]!=12?123:14;break;case 14:c=HEAP[Q+4*v]!=HEAP[Q+4*(v+3)]?123:15;break;case 15:HEAP[D+(v+2)]=(w^1)>>8&255;HEAP[D+(v+1)]=w&255^1;HEAP[D+(v+3)]=9;c=123;break;case 16:w=HEAP[D+(v+1)]+HEAP[D+(v+2)]*256;Z=c=_PyString_AsString(HEAP[j+12+w*4]);c= -c==0?123:17;break;case 17:c=_strcmp(Z,__str23048)!=0?123:18;break;case 18:w=0;c=21;break;case 19:c=HEAP[HEAP[h+12]+4*w]==__Py_NoneStruct?22:20;break;case 20:w+=1;c=21;break;case 21:c=HEAP[h+8]>w?19:22;break;case 22:c=HEAP[h+8]==w?23:24;break;case 23:c=_PyList_Append(h,__Py_NoneStruct)==-1?150:24;break;case 24:HEAP[D+v]=100;HEAP[D+(v+2)]=w>>8&255;HEAP[D+(v+1)]=w&255;F=V+1;c=123;break;case 25:F=V+1;w=HEAP[D+(v+1)]+HEAP[D+(v+2)]*256;c=reSign(HEAP[D+(v+3)],8,1)!=114?123:26;break;case 26:c=(HEAP[Q+4*v]| -0)!=(HEAP[Q+4*(v+5)]|0)?123:27;break;case 27:c=(_PyObject_IsTrue(HEAP[HEAP[h+12]+4*w])|0)==0?123:28;break;case 28:_llvm_memset_p0i8_i32(D+v,9,6,1,0);F=0;c=123;break;case 29:w=HEAP[D+(v+1)]+HEAP[D+(v+2)]*256;z=v-w*3;c=(v-w*3|0)>=0?30:41;break;case 30:c=(w|0)<=(V|0)?31:41;break;case 31:var N=E;(N|0)!=102?(d=31,c=34):(d=31,c=32);break;case 32:c=(HEAP[Q+4*z]|0)==(HEAP[Q+4*(z+-1+(w+1)*3)]|0)?39:33;break;case 33:var H=E,d=33;c=34;break;case 34:c=((d==33?H:N)|0)!=103?41:35;break;case 35:c=reSign(HEAP[D+ -(v+3)],8,1)!=107?41:36;break;case 36:c=(HEAP[Q+4*z]|0)!=(HEAP[Q+4*(z+5+w*3)]|0)?41:37;break;case 37:c=unSign(HEAP[D+(v+5)],8,1)*256;c=(unSign(HEAP[D+(v+4)],8,1)+c|0)==6?39:38;break;case 38:c=unSign(HEAP[D+(v+5)],8,1)*256;c=(unSign(HEAP[D+(v+4)],8,1)+c|0)==7?39:41;break;case 39:c=(_tuple_of_constants(D+z,w,h)|0)!=0?40:41;break;case 40:F=1;c=123;break;case 41:c=reSign(HEAP[D+(v+3)],8,1)!=92?123:42;break;case 42:c=(HEAP[Q+4*v]|0)!=(HEAP[Q+4*(v+5)]|0)?123:43;break;case 43:c=unSign(HEAP[D+(v+5)],8,1)* -256;c=(unSign(HEAP[D+(v+4)],8,1)+c|0)!=(w|0)?123:44;break;case 44:c=w==1?45:46;break;case 45:_llvm_memset_p0i8_i32(D+v,9,6,1,0);c=123;break;case 46:c=w==2?47:48;break;case 47:HEAP[D+v]=2;_llvm_memset_p0i8_i32(D+v+1,9,5,1,0);c=123;break;case 48:c=w==3?49:123;break;case 49:HEAP[D+v]=3;HEAP[D+(v+1)]=2;_llvm_memset_p0i8_i32(D+v+2,9,4,1,0);c=123;break;case 50:c=K>1?51:123;break;case 51:c=HEAP[Q+4*(v-6)]==HEAP[Q+4*v]?52:123;break;case 52:c=_fold_binops_on_constants(D+(v-6),h)!=0?53:123;break;case 53:v-= -2;F=1;c=123;break;case 54:c=K>0?55:123;break;case 55:c=HEAP[Q+4*(v-3)]==HEAP[Q+4*v]?56:123;break;case 56:c=_fold_unaryops_on_constants(D+(v-3),h)!=0?57:123;break;case 57:v-=2;F=1;c=123;break;case 58:var ba=HEAP[D+(v+2)]*256,W=HEAP[D+(v+1)];c=HEAP[D+v]==113?65:59;break;case 59:c=HEAP[D+v]==119?65:60;break;case 60:c=HEAP[D+v]==114?65:61;break;case 61:c=HEAP[D+v]==115?65:62;break;case 62:c=HEAP[D+v]==111?65:63;break;case 63:c=HEAP[D+v]==112?65:64;break;case 64:t=v+3;c=66;break;case 65:t=0;c=66;break; -case 66:A=W+ba+t;w=HEAP[D+A];c=w==114|w==115|w==111|w==112?67:87;break;case 67:c=w==115|w==112?68:69;break;case 68:s=1;c=70;break;case 69:s=0;c=70;break;case 70:var B=(s&255)!=0^1;c=E==115|E==112?71:72;break;case 71:u=1;c=73;break;case 72:u=0;c=73;break;case 73:c=(B!=0^(u&255)!=0)!=0?74:83;break;case 74:var Y=HEAP[D+(A+2)]*256,fa=HEAP[D+(A+1)];c=HEAP[D+A]==113?81:75;break;case 75:c=HEAP[D+A]==119?81:76;break;case 76:c=HEAP[D+A]==114?81:77;break;case 77:c=HEAP[D+A]==115?81:78;break;case 78:c=HEAP[D+ -A]==111?81:79;break;case 79:c=HEAP[D+A]==112?81:80;break;case 80:r=A+3;c=82;break;case 81:r=0;c=82;break;case 82:G=fa+Y+r;HEAP[D+v]=w&255;HEAP[D+(v+2)]=G>>8&255;HEAP[D+(v+1)]=G&255;c=8;break;case 83:var ha=D+v;c=E==115|E==112?84:85;break;case 84:HEAP[ha]=115;c=86;break;case 85:HEAP[ha]=114;c=86;break;case 86:HEAP[D+(v+2&4294967295)&4294967295]=(A+3&4294967295|0)>>8&255;HEAP[D+(v+1&4294967295)&4294967295]=(A&255)+3&255;c=8;break;case 87:var la=HEAP[D+(v+2)]*256,ra=HEAP[D+(v+1)];c=HEAP[D+v]==113?94: -88;break;case 88:c=HEAP[D+v]==119?94:89;break;case 89:c=HEAP[D+v]==114?94:90;break;case 90:c=HEAP[D+v]==115?94:91;break;case 91:c=HEAP[D+v]==111?94:92;break;case 92:c=HEAP[D+v]==112?94:93;break;case 93:q=v+3;c=95;break;case 94:q=0;c=95;break;case 95:A=ra+la+q;c=E==113|E==110?96:98;break;case 96:c=HEAP[D+A]==83?97:98;break;case 97:HEAP[D+v]=83;_llvm_memset_p0i8_i32(D+v+1,9,2,1,0);c=123;break;case 98:c=reSign(HEAP[D+A],8,1)!=113?99:100;break;case 99:c=reSign(HEAP[D+A],8,1)!=110?123:100;break;case 100:var ya= -HEAP[D+(A+2)]*256,Da=HEAP[D+(A+1)];c=HEAP[D+A]==113?107:101;break;case 101:c=HEAP[D+A]==119?107:102;break;case 102:c=HEAP[D+A]==114?107:103;break;case 103:c=HEAP[D+A]==115?107:104;break;case 104:c=HEAP[D+A]==111?107:105;break;case 105:c=HEAP[D+A]==112?107:106;break;case 106:p=A+3;c=108;break;case 107:p=0;c=108;break;case 108:G=Da+ya+p;c=E==110?109:110;break;case 109:E=113;c=110;break;case 110:c=E!=113&E!=119&E!=114&E!=115&E!=111&E!=112?111:112;break;case 111:var Ua=0-v+-3+G;G=Ua;d=111;c=113;break; -case 112:var Na=G,d=112;c=113;break;case 113:c=(d==112?Na:Ua)<0?123:114;break;case 114:HEAP[D+v]=E&255;HEAP[D+(v+2)]=G>>8&255;HEAP[D+(v+1)]=G&255;c=123;break;case 115:c=v+4>=x?123:116;break;case 116:c=reSign(HEAP[D+(v+4)],8,1)!=83?119:117;break;case 117:c=(HEAP[Q+4*v]|0)!=(HEAP[Q+4*(v+4)]|0)?119:118;break;case 118:_llvm_memset_p0i8_i32(D+v+1,9,4,1,0);c=123;break;case 119:c=HEAP[D+(v+1)]==113?121:120;break;case 120:c=HEAP[D+(v+1)]==110?121:123;break;case 121:c=HEAP[Q+4*v]==HEAP[Q+4*(v+3)]?122:123; -break;case 122:_llvm_memset_p0i8_i32(D+v+1,9,3,1,0);c=123;break;case 123:c=HEAP[D+v]>89?124:125;break;case 124:o=3;c=126;break;case 125:o=1;c=126;break;case 126:v+=o;c=127;break;case 127:c=v89?132:133;break;case 132:n=3;c=134;break;case 133:n=1;c=134;break;case 134:v+=n;c=v>8&255;HEAP[D+(v+1)]=w&255;c=143;break;case 142:w=HEAP[M+4*(HEAP[D+(v+2)]*256+3+v+HEAP[D+(v+1)])]+-3+(0-HEAP[M+4*v]);HEAP[D+(v+2)]=w>>8&255;HEAP[D+(v+1)]=w&255;c=143;break;case 143:var Ha=E,d=143;c=144;break;case 144:c=(d==143?Ha:wa)>89?145:146;break;case 145:m=3;c=147;break;case 146:m=1;c=147;break;case 147:C=m;C=c=C-1;c=c!=-1?148:140;break;case 148:HEAP[D+ -z]=HEAP[D+v];z+=1;v+=1;C=c=C-1;c=c!=-1?148:140;break;case 149:f=_PyString_FromStringAndSize(d==137?Pa:Ya,z);_PyMem_Free(M);_PyMem_Free(D);_PyMem_Free(Q);l=f;c=160;break;case 150:f=0;c=151;break;case 151:c=Q!=0?152:153;break;case 152:_PyMem_Free(Q);c=153;break;case 153:c=M!=0?154:155;break;case 154:_PyMem_Free(M);c=155;break;case 155:c=D!=0?156:157;break;case 156:_PyMem_Free(D);c=157;break;case 157:c=f!=0?158:159;break;case 158:HEAP[f]+=1;c=159;break;case 159:l=f;c=160;break;case 160:return g=l;default:assert(0, -"bad label: "+c)}} -function _addnfastate(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=(HEAP[b+8]+1)*8>=0?1:5;break;case 1:e=(HEAP[b+8]+1)*8!=0?2:3;break;case 2:a=(HEAP[b+8]+1)*8;e=4;break;case 3:a=1;e=4;break;case 4:c=_realloc(HEAP[b+12],a);e=6;break;case 5:c=0;e=6;break;case 6:HEAP[b+12]=c;e=HEAP[b+12]==0?7:8;break;case 7:throw _Py_FatalError(__str3050),"Reached an unreachable!";case 8:return e=HEAP[b+8],g=HEAP[b+12]+8*e,HEAP[b+8]=e+1,HEAP[g]=0,HEAP[g+4]=0,b=(g-HEAP[b+12])/8|0;default:assert(0,"bad label: "+ -e)}} -function _addnfaarc(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;c=e;f=b;h=a;d=HEAP[d+12]+8*c;c=(HEAP[d]+1)*8>=0?1:5;break;case 1:c=(HEAP[d]+1)*8!=0?2:3;break;case 2:j=(HEAP[d]+1)*8;c=4;break;case 3:j=1;c=4;break;case 4:k=_realloc(HEAP[d+4],j);c=6;break;case 5:k=0;c=6;break;case 6:HEAP[d+4]=k;c=HEAP[d+4]==0?7:8;break;case 7:throw _Py_FatalError(__str3050),"Reached an unreachable!";case 8:e=HEAP[d];g=HEAP[d+4]+8*e;HEAP[d]=e+1;HEAP[g]=h;HEAP[g+4]=f;return;default:assert(0,"bad label: "+c)}} -function _newnfa(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=_malloc(24);e=a==0?1:2;break;case 1:throw _Py_FatalError(__str13051),"Reached an unreachable!";case 2:return g=HEAP[_type_8534],HEAP[a]=g,HEAP[_type_8534]=g+1,HEAP[a+4]=b,HEAP[a+8]=0,HEAP[a+12]=0,HEAP[a+20]=-1,HEAP[a+16]=HEAP[a+20],b=a;default:assert(0,"bad label: "+e)}} -function _newnfagrammar(){var g;for(g=-1;;)switch(g){case -1:var e;e=_malloc(16);g=e==0?1:2;break;case 1:throw _Py_FatalError(__str23052),"Reached an unreachable!";case 2:return HEAP[e]=0,HEAP[e+4]=0,HEAP[e+8]=0,HEAP[e+8+4]=0,__Py_addlabel(e+8,0,__str33053),g=e;default:assert(0,"bad label: "+g)}} -function _addnfa(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_newnfa(e);b=(HEAP[a]+1)*4>=0?1:5;break;case 1:b=(HEAP[a]+1)*4!=0?2:3;break;case 2:c=(HEAP[a]+1)*4;b=4;break;case 3:c=1;b=4;break;case 4:d=_realloc(HEAP[a+4],c);b=6;break;case 5:d=0;b=6;break;case 6:HEAP[a+4]=d;b=HEAP[a+4]==0?7:8;break;case 7:throw _Py_FatalError(__str3050),"Reached an unreachable!";case 8:return b=HEAP[a],HEAP[HEAP[a+4]+4*b]=f,HEAP[a]=b+1,__Py_addlabel(a+8,1,HEAP[f+4]),a=f;default:assert(0,"bad label: "+b)}} -function _metacompile(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[_Py_DebugFlag]!=0?1:2;break;case 1:_puts(__str43054);e=2;break;case 2:a=_newnfagrammar();c=HEAP[b+16]-1;b=HEAP[b+20];c=e=c-1;e=e>=0?3:6;break;case 3:e=HEAP[b]!=4?4:5;break;case 4:_compile_rule(a,b);e=5;break;case 5:b+=24;c=e=c-1;e=e>=0?3:6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}}function _compile_rule(g,e){var b,a;b=HEAP[e+20];a=_addnfa(g,HEAP[b+4]);b+=24;b+=24;_compile_rhs(g+8,a,b,a+16,a+20)} -function _compile_rhs(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p=d+4;h=g;j=e;k=b;l=a;m=c;n=HEAP[k+16];k=HEAP[k+20];_compile_alt(h,j,k,l,m);n-=1;f=n<=0?3:1;break;case 1:k+=24;HEAP[o]=HEAP[l];HEAP[p]=HEAP[m];f=_addnfastate(j);HEAP[l]=f;f=_addnfastate(j);HEAP[m]=f;_addnfaarc(j,HEAP[l],HEAP[o],0);_addnfaarc(j,HEAP[p],HEAP[m],0);n=f=n-1;f=f>=0?2:3;break;case 2:n-=1;k+=24;_compile_alt(h,j,k,o,p);_addnfaarc(j,HEAP[l],HEAP[o],0);_addnfaarc(j, -HEAP[p],HEAP[m],0);k+=24;n=f=n-1;f=f>=0?2:3;break;case 3:STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function _compile_alt(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o=d+4;h=g;j=e;k=b;f=a;l=c;m=HEAP[k+16];k=HEAP[k+20];_compile_item(h,j,k,f,l);m-=1;k+=24;m=f=m-1;f=f>=0?1:2;break;case 1:_compile_item(h,j,k,n,o);_addnfaarc(j,HEAP[l],HEAP[n],0);HEAP[l]=HEAP[o];k+=24;m=f=m-1;f=f>=0?1:2;break;case 2:STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function _compile_item(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p=d+4;h=g;j=e;k=b;l=a;m=c;n=HEAP[k+16];k=HEAP[k+20];f=HEAP[k]==9?1:2;break;case 1:k+=24;f=_addnfastate(j);HEAP[l]=f;f=_addnfastate(j);HEAP[m]=f;_addnfaarc(j,HEAP[l],HEAP[m],0);_compile_rhs(h,j,k,o,p);_addnfaarc(j,HEAP[l],HEAP[o],0);_addnfaarc(j,HEAP[p],HEAP[m],0);k+=24;f=5;break;case 2:_compile_atom(h,j,k,l,m);n-=1;f=n<=0?5:3;break;case 3:k+=24;_addnfaarc(j,HEAP[m],HEAP[l], -0);f=HEAP[k]==16?4:5;break;case 4:HEAP[m]=HEAP[l];f=5;break;case 5:STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function _compile_atom(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l;f=g;h=e;j=b;k=a;l=c;var m=j=HEAP[j+20];d=HEAP[j]==7?1:2;break;case 1:j=m+24;_compile_rhs(f,h,j,k,l);j+=24;d=5;break;case 2:d=HEAP[m]==1?4:3;break;case 3:d=HEAP[j]==3?4:5;break;case 4:d=_addnfastate(h);HEAP[k]=d;d=_addnfastate(h);HEAP[l]=d;d=__Py_addlabel(f,HEAP[j],HEAP[j+4]);_addnfaarc(h,HEAP[k],HEAP[l],d);d=5;break;case 5:return;default:assert(0,"bad label: "+d)}} -function _dumpstate(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;a=HEAP[f+20]==h?1:2;break;case 1:k=46;a=3;break;case 2:k=32;a=3;break;case 3:a=HEAP[f+16]==h?4:5;break;case 4:j=42;a=6;break;case 5:j=32;a=6;break;case 6:_printf(__str53055,allocate([j,0,0,0,h,0,0,0,k,0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));l=HEAP[f+12]+8*h;n=HEAP[l+4];var o=m=0;HEAP[l]>o?(c=6,a=7):(c=6,a=10);break;case 7:a=(c==6?o:p)>0?8:9;break;case 8:_printf(__str63056,allocate(1, -"i32",ALLOC_STACK));a=9;break;case 9:a=_PyGrammar_LabelRepr(HEAP[d+4]+8*HEAP[n]);_printf(__str73057,allocate([HEAP[n+4],0,0,0,a,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));n+=8;m+=1;var p=m;HEAP[l]>p?(c=9,a=7):(c=9,a=10);break;case 10:_putchar(10);return;default:assert(0,"bad label: "+a)}} -function _dumpnfa(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;_printf(__str83058,allocate([HEAP[c+4],0,0,0,HEAP[c+8],0,0,0,HEAP[c+16],0,0,0,HEAP[c+20],0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));d=0;b=HEAP[c+8]>d?1:2;break;case 1:_dumpstate(a,c,d);d+=1;b=HEAP[c+8]>d?1:2;break;case 2:return;default:assert(0,"bad label: "+b)}} -function _addclosure(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=__Py_addbit(c,f)!=0?1:5;break;case 1:h=HEAP[d+12]+8*f;j=HEAP[h+4];h=HEAP[h];h=a=h-1;a=a>=0?2:5;break;case 2:a=HEAP[j]==0?3:4;break;case 3:_addclosure(c,d,HEAP[j+4]);a=4;break;case 4:j+=8;h=a=h-1;a=a>=0?2:5;break;case 5:return;default:assert(0,"bad label: "+a)}} -function _makedfa(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y;c=g;d=e;f=b;l=HEAP[d+8];m=__Py_newbitset(l);_addclosure(m,d,HEAP[d+16]);o=_malloc(24);a=o==0?1:2;break;case 1:throw _Py_FatalError(__str93059),"Reached an unreachable!";case 2:n=1;p=o;HEAP[p]=m;HEAP[p+4]=0;HEAP[p+8]=0;HEAP[p+12]=0;HEAP[p+16]=HEAP[m+Math.floor(HEAP[d+20]/8)]>>(HEAP[d+20]&7)&1;a=HEAP[p+16]!=0?3:4;break;case 3:_printf(__str103060,allocate([HEAP[d+4],0,0,0],["i8*",0,0,0],ALLOC_STACK)); -a=4;break;case 4:r=0;a=44;break;case 5:p=o+24*r;m=HEAP[p];v=0;a=26;break;case 6:a=(HEAP[m+Math.floor(v/8)]>>(v&7)&1)==0?25:7;break;case 7:w=HEAP[d+12]+8*v;s=0;a=24;break;case 8:x=HEAP[w+4]+8*s;a=HEAP[x]==0?23:9;break;case 9:t=0;a=12;break;case 10:q=HEAP[z+8]+12*t;a=HEAP[x]==HEAP[q+8]?22:11;break;case 11:t+=1;a=12;break;case 12:var z=p;a=HEAP[p+4]>t?10:13;break;case 13:y=(HEAP[z+4]+1)*12;a=y>=0?14:18;break;case 14:a=y!=0?15:16;break;case 15:j=y;a=17;break;case 16:j=1;a=17;break;case 17:k=_realloc(HEAP[p+ -8],j);a=19;break;case 18:k=0;a=19;break;case 19:HEAP[p+8]=k;a=HEAP[p+8]==0?20:21;break;case 20:throw _Py_FatalError(__str3050),"Reached an unreachable!";case 21:a=HEAP[p+4];q=HEAP[p+8]+12*a;HEAP[p+4]=a+1;HEAP[q+8]=HEAP[x];a=__Py_newbitset(l);HEAP[q]=a;HEAP[q+4]=-1;a=22;break;case 22:_addclosure(HEAP[q],d,HEAP[x+4]);a=23;break;case 23:s+=1;a=24;break;case 24:a=HEAP[w]>s?8:25;break;case 25:v+=1;a=26;break;case 26:a=HEAP[d+8]>v?6:27;break;case 27:t=0;a=42;break;case 28:q=HEAP[o+24*r+8]+12*t;u=0;a=32; -break;case 29:a=__Py_samebitset(HEAP[q],HEAP[o+24*u],l)!=0?30:31;break;case 30:HEAP[q+4]=u;a=41;break;case 31:u+=1;a=32;break;case 32:a=u=0?34:37;break;case 34:a=y!=0?35:36;break;case 35:h=y;a=38;break;case 36:h=1;a=38;break;case 37:o=0;a=39;break;case 38:o=a=_realloc(o,h);a=a==0?39:40;break;case 39:throw _Py_FatalError(__str3050),"Reached an unreachable!";case 40:HEAP[q+4]=n;p=o+24*n;n+=1;HEAP[p]=HEAP[q];HEAP[p+4]=0;HEAP[p+8]=0;HEAP[p+12]=0;HEAP[p+16]=HEAP[HEAP[p]+ -Math.floor(HEAP[d+20]/8)]>>(HEAP[d+20]&7)&1;a=41;break;case 41:t+=1;a=42;break;case 42:a=HEAP[o+24*r+4]>t?28:43;break;case 43:r+=1;a=44;break;case 44:a=r>(m&7)&1)!=0?6:7;break;case 6:_printf(__str173067,allocate([m,0,0,0],["i32",0,0,0],ALLOC_STACK));d=7;break;case 7:m+=1;d=mn?9:10;break;case 9:d=HEAP[o+8]+12*n;var p=_PyGrammar_LabelRepr(HEAP[k+4]+8*HEAP[d+8]);_printf(__str193069,allocate([HEAP[d+4],0,0,0,p,0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));n+=1;d=HEAP[o+4]>n?9:10;break;case 10:l+=1;d=lf?4:9;break;case 9:d=1;b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _renamestates(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;j=a;c=HEAP[_Py_DebugFlag]!=0?1:2;break;case 1:_printf(__str203070,allocate([h,0,0,0,j,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));c=2;break;case 2:k=0;c=kl?5:8;break;case 5:c=HEAP[HEAP[f+24*k+8]+12*l+4]==h?6:7;break;case 6:HEAP[HEAP[f+24*k+8]+12*l+4]=j;c=7;break;case 7:l+=1;c=HEAP[f+24*k+4]>l?5:8;break;case 8:k+=1;c=kk?(c=6,a=7):(c=6,a=8);break;case 7:c=HEAP[(c==7?n:m)+8]+12*k;__Py_addarc(d,HEAP[l+20],HEAP[h+24*HEAP[c+4]+20],HEAP[c+8]);k+=1;var n=l;HEAP[l+4]>k?a=c=7:(c=7,a=8);break; -case 8:a=HEAP[(c==6?m:n)+16]!=0?9:10;break;case 9:__Py_addarc(d,HEAP[l+20],HEAP[l+20],0);a=10;break;case 10:j+=1;a=jf?3:6;break;case 3:h=HEAP[HEAP[a+4]+4*f];b=HEAP[_Py_DebugFlag]!=0?4:5;break;case 4:_printf(__str213071,allocate([HEAP[h+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));_dumpnfa(a+8,h);_printf(__str223072, -allocate([HEAP[h+4],0,0,0],["i8*",0,0,0],ALLOC_STACK));b=5;break;case 5:b=__Py_adddfa(j,HEAP[h],HEAP[h+4]);_makedfa(a,HEAP[HEAP[a+4]+4*f],b);f+=1;b=HEAP[a]>f?3:6;break;case 6:d=j;b=7;break;case 7:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}}function __Py_pgen(g){var e,g=_metacompile(g);e=_maketables(g);__Py_translatelabels(e);__Py_addfirstsets(e);_free(g);return e}function _Py_pgen(g){return __Py_pgen(g)} -function _convertenviron(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;b=_PyDict_New();g=b==0?1:2;break;case 1:e=0;g=20;break;case 2:g=HEAP[_environ]==0?3:4;break;case 3:e=b;g=20;break;case 4:a=HEAP[_environ];g=HEAP[a]!=0?5:19;break;case 5:f=g=_strchr(HEAP[a],61);g=g==0?18:6;break;case 6:c=_PyString_FromStringAndSize(HEAP[a],f-HEAP[a]);g=c==0?7:8;break;case 7:_PyErr_Clear();g=18;break;case 8:d=_PyString_FromString(f+1);g=d==0?9:11;break;case 9:_PyErr_Clear();HEAP[c]-=1;g=HEAP[c]==0?10:18;break; -case 10:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=18;break;case 11:g=_PyDict_GetItem(b,c)==0?12:14;break;case 12:g=_PyDict_SetItem(b,c,d)!=0?13:14;break;case 13:_PyErr_Clear();g=14;break;case 14:HEAP[c]-=1;g=HEAP[c]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=16;break;case 16:HEAP[d]-=1;g=HEAP[d]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);g=18;break;case 18:a+=4;g=HEAP[a]!=0?5:19;break;case 19:e=b;g=20;break;case 20:return e;default:assert(0,"bad label: "+g)}} -function _posix_error(){return _PyErr_SetFromErrno(HEAP[_PyExc_OSError])}function _posix_error_with_filename(g){return _PyErr_SetFromErrnoWithFilename(HEAP[_PyExc_OSError],g)}function _posix_error_with_allocated_filename(g){var e;e=_PyErr_SetFromErrnoWithFilename(HEAP[_PyExc_OSError],g);_PyMem_Free(g);return e} -function _posix_fildes(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;a=_PyObject_AsFileDescriptor(a);b=a<0?1:2;break;case 1:d=0;b=5;break;case 2:b=FUNCTION_TABLE[c](a);b=b<0?3:4;break;case 3:d=_posix_error();b=5;break;case 4:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=5;break;case 5:return c=d;default:assert(0,"bad label: "+b)}} -function _posix_1str(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a;c=g;d=e;f=b;HEAP[j]=0;c=__PyArg_ParseTuple_SizeT(c,d,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,j,0,0,0],["i8*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=5;break;case 2:c=FUNCTION_TABLE[f](HEAP[j]);var k=HEAP[j];c=c<0?3:4;break;case 3:h=_posix_error_with_allocated_filename(k);c=5;break;case 4:_PyMem_Free(k);HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct;c=5; -break;case 5:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _posix_2str(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;c=g;d=e;f=b;HEAP[j]=0;HEAP[k]=0;c=__PyArg_ParseTuple_SizeT(c,d,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,j,0,0,0,HEAP[_Py_FileSystemDefaultEncoding],0,0,0,k,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i8*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=5;break;case 2:c=FUNCTION_TABLE[f](HEAP[j],HEAP[k]);_PyMem_Free(HEAP[j]);_PyMem_Free(HEAP[k]);c=c!=0?3:4;break; -case 3:h=_posix_error();c=5;break;case 4:HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct;c=5;break;case 5:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _statresult_new(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;d=FUNCTION_TABLE[HEAP[_structseq_new]](g,e,b);a=d==0?1:2;break;case 1:c=0;a=9;break;case 2:f=7;a=3;break;case 3:a=HEAP[d+12+(f+3)*4]==__Py_NoneStruct?4:7;break;case 4:HEAP[__Py_NoneStruct]-=1;a=HEAP[__Py_NoneStruct]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[__Py_NoneStruct+4]+24]](__Py_NoneStruct);a=6;break;case 6:HEAP[HEAP[d+12+f*4]]+=1;HEAP[d+12+(f+3)*4]=HEAP[d+12+f*4];a=7;break;case 7:f=a=f+1;a=a<=9?3:8;break;case 8:c= -d;a=9;break;case 9:return g=c;default:assert(0,"bad label: "+a)}} -function _stat_float_times(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=e;HEAP[d]=-1;a=__PyArg_ParseTuple_SizeT(a,__str413114,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=HEAP[d]==-1?3:4;break;case 3:c=_PyBool_FromLong(HEAP[__stat_float_times]);a=5;break;case 4:HEAP[__stat_float_times]=HEAP[d];HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+ -a)}}function _fill_time(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;j=a;l=_PyInt_FromLong(h);c=l==0?5:1;break;case 1:c=HEAP[__stat_float_times]!=0?2:3;break;case 2:k=_PyFloat_FromDouble(h+j*1.0E-9);c=4;break;case 3:k=l;HEAP[k]+=1;c=4;break;case 4:HEAP[d+12+f*4]=l;HEAP[d+12+(f+3)*4]=k;c=5;break;case 5:return;default:assert(0,"bad label: "+c)}} -function __pystat_fromstructstat(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;f=_PyStructSequence_New(_StatResultType);e=f==0?1:2;break;case 1:a=0;e=7;break;case 2:c=f;e=_PyInt_FromLong(HEAP[b+16]);HEAP[c+12]=e;c=f;e=_PyLong_FromLongLong(HEAP[b+88]);HEAP[c+12+4]=e;c=f;e=_PyLong_FromLongLong(HEAP[b]);HEAP[c+12+8]=e;c=f;e=_PyInt_FromLong(HEAP[b+20]);HEAP[c+12+12]=e;c=f;e=_PyInt_FromLong(HEAP[b+24]);HEAP[c+12+16]=e;c=f;e=_PyInt_FromLong(HEAP[b+28]);HEAP[c+12+20]=e;c=f;e=_PyLong_FromLongLong(HEAP[b+ -44]);HEAP[c+12+24]=e;c=HEAP[b+64+4];e=HEAP[b+72+4];d=HEAP[b+80+4];_fill_time(f,7,HEAP[b+64],c);_fill_time(f,8,HEAP[b+72],e);_fill_time(f,9,HEAP[b+80],d);c=f;e=_PyInt_FromLong(HEAP[b+52]);HEAP[c+12+52]=e;c=f;e=_PyInt_FromLong(HEAP[b+56]&4294967295);HEAP[c+12+56]=e;c=f;e=_PyInt_FromLong(HEAP[b+32]&4294967295);HEAP[c+12+60]=e;e=_PyErr_Occurred();c=f;e=e!=0?3:6;break;case 3:HEAP[f]=HEAP[c]-1;e=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=5;break;case 5:a=0;e=7;break;case 6:a=c; -e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _posix_do_stat(g,e,b,a){g=STACKTOP;STACKTOP+=100;_memset(g,0,100);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=g,k=g+96,l,m;c=e;d=b;f=a;l=HEAP[k]=0;c=__PyArg_ParseTuple_SizeT(c,d,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,k,0,0,0],["i8*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=6;break;case 2:l=HEAP[k];c=FUNCTION_TABLE[f](HEAP[k],j);c=c!=0?3:4;break;case 3:m=_posix_error_with_filename(l);c=5;break;case 4:m=__pystat_fromstructstat(j);c=5;break;case 5:_PyMem_Free(l); -h=m;c=6;break;case 6:return e=h,STACKTOP=g,e;default:assert(0,"bad label: "+c)}} -function _posix_access(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str423115,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,c,0,0,0,f,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_access(HEAP[c],HEAP[f]);_PyMem_Free(HEAP[c]);d=_PyBool_FromLong(a==0);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_ttyname(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;a=__PyArg_ParseTuple_SizeT(e,__str433116,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:f=_ttyname(HEAP[d]);a=f==0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:c=_PyString_FromString(f);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _posix_ctermid(){var g=STACKTOP;STACKTOP+=9;_memset(g,0,9);var e;for(e=-1;;)switch(e){case -1:var b,a=g;e=_ctermid(a)==0?1:2;break;case 1:b=_posix_error();e=3;break;case 2:b=_PyString_FromString(a);e=3;break;case 3:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}}function _posix_chdir(g,e){return _posix_1str(e,__str443117,94)}function _posix_fchdir(g,e){return _posix_fildes(e,96)} -function _posix_chmod(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=e;HEAP[d]=0;a=__PyArg_ParseTuple_SizeT(a,__str453118,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,d,0,0,0,f,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_chmod(HEAP[d],HEAP[f]);var h=HEAP[d];a=a<0?3:4;break;case 3:c=_posix_error_with_allocated_filename(h);a=5;break;case 4:_PyMem_Free(h);HEAP[__Py_NoneStruct]+=1; -c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_fchmod(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str463119,allocate([d,0,0,0,f,0,0,0],["i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_fchmod(HEAP[d],HEAP[f]);a=a<0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_chroot(g,e){return _posix_1str(e,__str473120,98)}function _posix_fsync(g,e){return _posix_fildes(e,100)}function _posix_fdatasync(g,e){return _posix_fildes(e,102)} -function _posix_chown(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=e;HEAP[d]=0;a=__PyArg_ParseTuple_SizeT(a,__str483121,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,d,0,0,0,f,0,0,0,h,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_chown(HEAP[d],HEAP[f],HEAP[h]);var j=HEAP[d];a=a<0?3:4;break;case 3:c=_posix_error_with_allocated_filename(j);a=5;break;case 4:_PyMem_Free(j); -HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_fchown(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=__PyArg_ParseTuple_SizeT(e,__str493122,allocate([d,0,0,0,f,0,0,0,h,0,0,0],["i32*",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_fchown(HEAP[d],HEAP[f],HEAP[h]);a=a<0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+ -a)}} -function _posix_lchown(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=e;HEAP[d]=0;a=__PyArg_ParseTuple_SizeT(a,__str503123,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,d,0,0,0,f,0,0,0,h,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_lchown(HEAP[d],HEAP[f],HEAP[h]);var j=HEAP[d];a=a<0?3:4;break;case 3:c=_posix_error_with_allocated_filename(j);a=5;break;case 4:_PyMem_Free(j);HEAP[__Py_NoneStruct]+= -1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_getcwd(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d;e=1024;d=c=a=0;g=1;break;case 1:a=e+a;c=g=_malloc(a);g=g==0?5:2;break;case 2:d=_getcwd(c,a);g=d==0?3:7;break;case 3:_free(c);g=d!=0?7:4;break;case 4:g=___errno_location();g=HEAP[g]==34?1:5;break;case 5:g=d==0?6:7;break;case 6:b=_posix_error();g=8;break;case 7:b=_PyString_FromString(c);_free(c);g=8;break;case 8:return e=b;default:assert(0,"bad label: "+g)}} -function _posix_getcwdu(){var g=STACKTOP;STACKTOP+=1026;_memset(g,0,1026);var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=_getcwd(b,1026)==0?1:2;break;case 1:a=_posix_error();e=3;break;case 2:e=HEAP[_Py_FileSystemDefaultEncoding];a=_strlen(b);a=_PyUnicodeUCS2_Decode(b,a,e,__str513124);e=3;break;case 3:return b=a,STACKTOP=g,b;default:assert(0,"bad label: "+e)}}function _posix_link(g,e){return _posix_2str(e,__str523125,104)} -function _posix_listdir(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j=b+4,k,l,m,n;c=e;HEAP[f]=0;m=1;a=___errno_location();HEAP[a]=0;a=__PyArg_ParseTuple_SizeT(c,__str533126,allocate([j,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:m=0;_PyErr_Clear();a=2;break;case 2:a=__PyArg_ParseTuple_SizeT(c,__str543127,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,f,0,0,0],["i8*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?3:4;break; -case 3:d=0;a=36;break;case 4:k=_opendir(HEAP[f]);a=k==0?5:6;break;case 5:d=_posix_error_with_allocated_filename(HEAP[f]);a=36;break;case 6:h=_PyList_New(0);a=h==0?7:8;break;case 7:_closedir(k);_PyMem_Free(HEAP[f]);d=0;a=36;break;case 8:l=___errno_location();HEAP[l]=0;l=a=___01readdir64_(k);a=a==0?9:13;break;case 9:a=___errno_location();a=HEAP[a]==0?35:10;break;case 10:_closedir(k);HEAP[h]-=1;a=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=12;break;case 12:d=_posix_error_with_allocated_filename(HEAP[f]); -a=36;break;case 13:a=HEAP[l+19]==46?14:17;break;case 14:a=_strlen(l+19)==1?8:15;break;case 15:a=HEAP[l+19+1]!=46?17:16;break;case 16:a=_strlen(l+19)==2?8:17;break;case 17:a=_strlen(l+19);a=_PyString_FromStringAndSize(l+19,a);HEAP[j]=a;a=a==0?18:21;break;case 18:HEAP[h]-=1;a=HEAP[h]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=20;break;case 20:h=0;a=35;break;case 21:a=m!=0?22:27;break;case 22:n=_PyUnicodeUCS2_FromEncodedObject(HEAP[j],HEAP[_Py_FileSystemDefaultEncoding],__str513124); -a=n!=0?23:26;break;case 23:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=25;break;case 25:HEAP[j]=n;a=27;break;case 26:_PyErr_Clear();a=27;break;case 27:a=_PyList_Append(h,HEAP[j])!=0;var o=HEAP[j];HEAP[o]-=1;o=HEAP[o]==0;a=a?28:33;break;case 28:a=o?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=30;break;case 30:HEAP[h]-=1;a=HEAP[h]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=32;break;case 32:h= -0;a=35;break;case 33:a=o?34:8;break;case 34:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=8;break;case 35:_closedir(k);_PyMem_Free(HEAP[f]);d=h;a=36;break;case 36:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_mkdir(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=e;HEAP[d]=0;HEAP[f]=511;a=__PyArg_ParseTuple_SizeT(a,__str553128,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,d,0,0,0,f,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_mkdir(HEAP[d],HEAP[f]);var h=HEAP[d];a=a<0?3:4;break;case 3:c=_posix_error_with_allocated_filename(h);a=5;break;case 4:_PyMem_Free(h);HEAP[__Py_NoneStruct]+= -1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_nice(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;a=__PyArg_ParseTuple_SizeT(e,__str563129,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=6;break;case 2:f=___errno_location();HEAP[f]=0;f=_nice(HEAP[d]);a=f==-1?3:5;break;case 3:a=___errno_location();a=HEAP[a]!=0?4:5;break;case 4:c=_posix_error();a=6;break;case 5:c=_PyInt_FromLong(f);a=6;break;case 6:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_rename(g,e){return _posix_2str(e,__str573130,106)}function _posix_rmdir(g,e){return _posix_1str(e,__str583131,108)}function _posix_stat(g,e){return _posix_do_stat(g,e,__str593132,110)} -function _posix_system(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=__PyArg_ParseTuple_SizeT(e,__str603133,allocate([c,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_system(HEAP[c]);d=_PyInt_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_umask(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=__PyArg_ParseTuple_SizeT(e,__str613134,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_umask(HEAP[d]);HEAP[d]=a;a=HEAP[d]<0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:c=_PyInt_FromLong(HEAP[d]);a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _posix_unlink(g,e){return _posix_1str(e,__str623135,112)} -function _posix_uname(){var g=STACKTOP;STACKTOP+=390;_memset(g,0,390);var e;for(e=-1;;)switch(e){case -1:var b,a=g;e=_uname(a)<0?1:2;break;case 1:b=_posix_error();e=3;break;case 2:b=__Py_BuildValue_SizeT(__str633136,allocate([a,0,0,0,a+65,0,0,0,a+130,0,0,0,a+195,0,0,0,a+260,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=3;break;case 3:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}} -function _extract_time(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;a=HEAP[c+4]==_PyFloat_Type?2:1;break;case 1:a=_PyType_IsSubtype(HEAP[c+4],_PyFloat_Type)!=0?2:12;break;case 2:k=_PyFloat_AsDouble(c);l=a=_PyNumber_Long(c);a=a==0?3:4;break;case 3:h=-1;a=16;break;case 4:j=_PyInt_AsLong(l);HEAP[l]-=1;a=HEAP[l]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=6;break;case 6:a=j==-1?7:9;break;case 7:a=_PyErr_Occurred()!=0?8:9;break;case 8:h=-1;a=16;break;case 9:HEAP[d]= -j;HEAP[f]=(k-j)*1E6|0;a=HEAP[f]<0?10:11;break;case 10:HEAP[f]=0;a=11;break;case 11:h=0;a=16;break;case 12:j=_PyInt_AsLong(c);a=j==-1?13:15;break;case 13:a=_PyErr_Occurred()!=0?14:15;break;case 14:h=-1;a=16;break;case 15:HEAP[d]=j;h=HEAP[f]=0;a=16;break;case 16:return g=h;default:assert(0,"bad label: "+a)}} -function _posix_utime(g,e){var b=STACKTOP;STACKTOP+=40;_memset(b,0,40);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f=b,h=b+4,j=b+8,k=b+12,l=b+16,m=b+20,n=b+24;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str643137,allocate([HEAP[_Py_FileSystemDefaultEncoding],0,0,0,f,0,0,0,m,0,0,0],["i8*",0,0,0,"i8**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=15;break;case 2:a=HEAP[m]==__Py_NoneStruct?3:4;break;case 3:var o=_utime(HEAP[f],0),c=3;a=12;break;case 4:a=(HEAP[HEAP[HEAP[m]+ -4]+84]&67108864)==0?6:5;break;case 5:a=_PyTuple_Size(HEAP[m])!=2?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str653138);_PyMem_Free(HEAP[f]);d=0;a=15;break;case 7:a=_extract_time(HEAP[HEAP[m]+12],h,k)==-1?8:9;break;case 8:_PyMem_Free(HEAP[f]);d=0;a=15;break;case 9:a=_extract_time(HEAP[HEAP[m]+12+4],j,l)==-1?10:11;break;case 10:_PyMem_Free(HEAP[f]);d=0;a=15;break;case 11:HEAP[n]=HEAP[h];HEAP[n+8]=HEAP[j];HEAP[n+4]=HEAP[k];HEAP[n+8+4]=HEAP[l];var p=_utimes(HEAP[f],n),c=11;a=12;break; -case 12:var q=HEAP[f];a=(c==11?p:o)<0?13:14;break;case 13:d=_posix_error_with_allocated_filename(q);a=15;break;case 14:_PyMem_Free(q);HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=15;break;case 15:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix__exit(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c=b;a=__PyArg_ParseTuple_SizeT(e,__str663139,allocate([c,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:return STACKTOP=b,0;case 2:throw __exit(HEAP[c]),"Reached an unreachable!";default:assert(0,"bad label: "+a)}} -function _free_string_array(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f;c=g;d=e;f=0;var h=c;f=0?11:14;break;case 11:a=(m+1)*4!=0?12:13;break;case 12:d=(m+1)*4;a=16;break;case 13:d=1;a=16;break;case 14:k=0;a=17;break;case 15:k= -0;a=17;break;case 16:k=a=_malloc(d);a=a==0?17:18;break;case 17:_PyMem_Free(HEAP[h]);f=_PyErr_NoMemory();a=24;break;case 18:l=0;a=22;break;case 19:a=s+4*l;var r=HEAP[_Py_FileSystemDefaultEncoding],u=FUNCTION_TABLE[n](HEAP[j],l);a=__PyArg_Parse_SizeT(u,__str703143,allocate([r,0,0,0,a,0,0,0],["i8*",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?20:21;break;case 20:_free_string_array(k,l);_PyErr_SetString(HEAP[_PyExc_TypeError],__str713144);_PyMem_Free(HEAP[h]);f=0;a=24;break;case 21:l+=1;a=22;break;case 22:var s= -k;a=l=0?11:14;break;case 11:a=(v+1)*4!=0?12:13;break;case 12:h=(v+1)*4;a=16;break;case 13:h=1;a=16; -break;case 14:n=0;a=17;break;case 15:n=0;a=17;break;case 16:n=a=_malloc(h);a=a==0?17:18;break;case 17:_PyErr_NoMemory();a=64;break;case 18:s=0;a=22;break;case 19:var D=n+4*s;a=HEAP[_Py_FileSystemDefaultEncoding];var R=FUNCTION_TABLE[x](HEAP[l],s);a=__PyArg_Parse_SizeT(R,__str753148,allocate([a,0,0,0,D,0,0,0],["i8*",0,0,0,"i8**",0,0,0],ALLOC_STACK));D=s;a=a==0?20:21;break;case 20:y=D;a=58;break;case 21:s=D+1;a=22;break;case 22:a=s=0?26:29;break;case 26:a=(s+1)*4!=0?27:28;break;case 27:f=(s+1)*4;a=31;break;case 28:f=1;a=31;break;case 29:o=0;a=32;break;case 30:o=0;a=32;break;case 31:o=a=_malloc(f);a=a==0?32:33;break;case 32:_PyErr_NoMemory();a=58;break;case 33:w=0;r=__PyObject_CallMethod_SizeT(HEAP[m],__str763149,0,allocate(1,"i32",ALLOC_STACK));u=__PyObject_CallMethod_SizeT(HEAP[m],__str773150,0,allocate(1,"i32",ALLOC_STACK));a=r==0?56:34;break;case 34:a= -u==0?56:35;break;case 35:a=(HEAP[HEAP[r+4]+84]&33554432)==0?37:36;break;case 36:a=(HEAP[HEAP[u+4]+84]&33554432)==0?37:38;break;case 37:_PyErr_SetString(HEAP[_PyExc_TypeError],__str783151);a=56;break;case 38:t=0;a=53;break;case 39:p=_PyList_GetItem(r,t);q=_PyList_GetItem(u,t);a=p==0?56:40;break;case 40:a=q==0?56:41;break;case 41:a=__PyArg_Parse_SizeT(p,__str793152,allocate([C,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?56:42;break;case 42:a=__PyArg_Parse_SizeT(q,__str803153,allocate([A,0,0,0],["i8**",0, -0,0],ALLOC_STACK))==0?56:43;break;case 43:G=_PyString_Size(p);a=_PyString_Size(q);G=G+2+a;a=G>=0?44:49;break;case 44:a=G>=0?45:48;break;case 45:a=G!=0?46:47;break;case 46:d=G;a=50;break;case 47:d=1;a=50;break;case 48:z=0;a=51;break;case 49:z=0;a=51;break;case 50:z=a=_malloc(d);a=a==0?51:52;break;case 51:_PyErr_NoMemory();a=56;break;case 52:_PyOS_snprintf(z,G,__str813154,allocate([HEAP[C],0,0,0,HEAP[A],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[o+4*w]=z;w+=1;t+=1;a=53;break;case 53:a=t=0?a=c=55:(c=55,a=57);break;case 56:w=c=w-1;var L=o;c>=0?(c=56,a=55):(c=56,a=57);break;case 57:_free(c==56?L:M);a=58;break;case 58:_free_string_array(n,y);a=u!=0?59:61;break;case 59:HEAP[u]-=1;a=HEAP[u]==0?60:61;break;case 60:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);a=61;break;case 61:a=r!=0?62:64;break;case 62:HEAP[r]-=1;a=HEAP[r]==0?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[r+ -4]+24]](r);a=64;break;case 64:_PyMem_Free(HEAP[k]);j=0;a=65;break;case 65:return d=j,STACKTOP=b,d;default:assert(0,"bad label: "+a)}} -function _posix_fork(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;a=0;b=_fork();g=b==0?2:1;break;case 1:a=1;g=2;break;case 2:g=b==-1?3:4;break;case 3:e=_posix_error();g=7;break;case 4:g=a<0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str823155);e=0;g=7;break;case 6:e=_PyInt_FromLong(b);g=7;break;case 7:return g=e;default:assert(0,"bad label: "+g)}} -function _posix_openpty(){var g=STACKTOP;STACKTOP+=8;_memset(g,0,8);var e;for(e=-1;;)switch(e){case -1:var b,a=g,c=g+4;e=_openpty(a,c,0,0,0)!=0?1:2;break;case 1:b=_posix_error();e=3;break;case 2:b=__Py_BuildValue_SizeT(__str833156,allocate([HEAP[a],0,0,0,HEAP[c],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));e=3;break;case 3:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}} -function _posix_forkpty(){var g=STACKTOP;STACKTOP+=4;_memset(g,0,4);var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;var c,d;HEAP[b]=-1;c=0;d=_forkpty(b,0,0,0);e=d==0?2:1;break;case 1:c=1;e=2;break;case 2:e=d==-1?3:4;break;case 3:a=_posix_error();e=7;break;case 4:e=c<0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str823155);a=0;e=7;break;case 6:e=HEAP[b];a=_PyInt_FromLong(d);a=__Py_BuildValue_SizeT(__str843157,allocate([a,0,0,0,e,0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0],ALLOC_STACK)); -e=7;break;case 7:return b=a,STACKTOP=g,b;default:assert(0,"bad label: "+e)}}function _posix_getegid(){var g=_getegid();return _PyInt_FromLong(g)}function _posix_geteuid(){var g=_geteuid();return _PyInt_FromLong(g)}function _posix_getgid(){var g=_getgid();return _PyInt_FromLong(g)}function _posix_getpid(){var g=_getpid();return _PyInt_FromLong(g)} -function _posix_getgroups(){var g=STACKTOP;STACKTOP+=262144;_memset(g,0,262144);var e;for(e=-1;;)switch(e){case -1:var b,a,c=g,d,f,h,j;b=0;d=c;f=_getgroups(65536,c);e=f<0?1:11;break;case 1:e=___errno_location();e=HEAP[e]==22?2:10;break;case 2:f=_getgroups(0,0);e=f==-1?3:4;break;case 3:a=_posix_error();e=22;break;case 4:e=f==0?5:6;break;case 5:d=c;e=11;break;case 6:d=_PyMem_Malloc(f*4);e=d==0?7:8;break;case 7:a=___errno_location();HEAP[a]=22;a=_posix_error();e=22;break;case 8:f=_getgroups(f,d);e=f== --1?9:11;break;case 9:_PyMem_Free(d);a=_posix_error();e=22;break;case 10:a=_posix_error();e=22;break;case 11:b=e=_PyList_New(f);e=e!=0?12:19;break;case 12:h=0;e=18;break;case 13:j=_PyInt_FromLong(HEAP[d+4*h]);var k=b;e=j==0?14:17;break;case 14:HEAP[b]=HEAP[k]-1;e=HEAP[b]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);e=16;break;case 16:b=0;e=19;break;case 17:HEAP[HEAP[k+12]+4*h]=j;h+=1;e=18;break;case 18:e=h65536?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1043177);d=0;a=31;break;case 4:f=0;a=27;break;case 5:k=_PySequence_GetItem(c,f);a=k==0?6:7;break;case 6:d=0;a=31;break;case 7:var m=k;a=(HEAP[HEAP[k+ -4]+84]&8388608)==0?8:20;break;case 8:a=(HEAP[HEAP[m+4]+84]&16777216)==0?9:12;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1053178);HEAP[k]-=1;a=HEAP[k]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=11;break;case 11:d=0;a=31;break;case 12:l=_PyLong_AsUnsignedLong(k);a=_PyErr_Occurred()!=0?13:16;break;case 13:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1003173);HEAP[k]-=1;a=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=15;break;case 15:d=0;a=31; -break;case 16:HEAP[j+f*4]=l;a=HEAP[j+f*4]!=l?17:24;break;case 17:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1003173);HEAP[k]-=1;a=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=19;break;case 19:d=0;a=31;break;case 20:a=_PyInt_AsLong(m);HEAP[j+f*4]=a;a=HEAP[j+f*4]!=a?21:24;break;case 21:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1003173);HEAP[k]-=1;a=HEAP[k]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=23;break;case 23:d=0;a=31;break;case 24:HEAP[k]-=1; -a=HEAP[k]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=26;break;case 26:f+=1;a=27;break;case 27:a=f=0?3:6;break;case 3:a=_strlen(HEAP[h])!=-3?4:5;break;case 4:c=_strlen(HEAP[h])+3;a=7;break;case 5:c=1;a=7;break;case 6:m=0;a=8;break; -case 7:m=a=_malloc(c);a=a==0?8:9;break;case 8:_PyErr_NoMemory();d=0;a=23;break;case 9:_strcpy(m,HEAP[h]);a=__PyFile_SanitizeMode(m);var o=m;a=a!=0?10:11;break;case 10:_free(o);d=0;a=23;break;case 11:var p=HEAP[f];a=HEAP[o]==97?12:17;break;case 12:n=_fcntl(p,3,allocate(1,"i32",ALLOC_STACK));a=n!=-1?13:14;break;case 13:_fcntl(HEAP[f],4,allocate([n|1024,0,0,0],["i32",0,0,0],ALLOC_STACK));a=14;break;case 14:k=a=_fdopen(HEAP[f],m);a=a==0?15:18;break;case 15:a=n!=-1?16:18;break;case 16:_fcntl(HEAP[f],4, -allocate([n,0,0,0],["i32",0,0,0],ALLOC_STACK));a=18;break;case 17:k=_fdopen(p,m);a=18;break;case 18:_free(m);a=k==0?19:20;break;case 19:d=_posix_error();a=23;break;case 20:l=_PyFile_FromFile(k,__str1313204,HEAP[h],68);a=l!=0?21:22;break;case 21:_PyFile_SetBufSize(l,HEAP[j]);a=22;break;case 22:d=l;a=23;break;case 23:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_isatty(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=__PyArg_ParseTuple_SizeT(e,__str1323205,allocate([c,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_isatty(HEAP[c]);d=_PyBool_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_pipe(){var g=STACKTOP;STACKTOP+=8;_memset(g,0,8);var e;for(e=-1;;)switch(e){case -1:var b,a=g;e=_pipe(a)!=0?1:2;break;case 1:b=_posix_error();e=3;break;case 2:b=__Py_BuildValue_SizeT(__str833156,allocate([HEAP[a],0,0,0,HEAP[a+4],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));e=3;break;case 3:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}} -function _posix_mkfifo(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=e;HEAP[f]=438;a=__PyArg_ParseTuple_SizeT(a,__str1333206,allocate([d,0,0,0,f,0,0,0],["i8**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_mkfifo(HEAP[d],HEAP[f]);a=a<0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_mknod(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=e;HEAP[f]=384;HEAP[h]=0;a=__PyArg_ParseTuple_SizeT(a,__str1343207,allocate([d,0,0,0,f,0,0,0,h,0,0,0],["i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_mknod(HEAP[d],HEAP[f],HEAP[h]);a=a<0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0, -"bad label: "+a)}}function _posix_major(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=__PyArg_ParseTuple_SizeT(e,__str1353208,allocate([c,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_gnu_dev_major(HEAP[c]);d=_PyInt_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_minor(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=__PyArg_ParseTuple_SizeT(e,__str1363209,allocate([c,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_gnu_dev_minor(HEAP[c]);d=_PyInt_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_makedev(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str1373210,allocate([c,0,0,0,f,0,0,0],["i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_gnu_dev_makedev(HEAP[c],HEAP[f])&4294967295;d=_PyInt_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_ftruncate(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j=b+4;a=__PyArg_ParseTuple_SizeT(e,__str1383211,allocate([f,0,0,0,j,0,0,0],["i32*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=10;break;case 2:var k=HEAP[j];a=(HEAP[HEAP[HEAP[j]+4]+84]&16777216)!=0?3:4;break;case 3:c=_PyLong_AsLongLong(k);a=5;break;case 4:c=_PyInt_AsLong(k);a=5;break;case 5:h=c;a=_PyErr_Occurred()!=0?6:7;break;case 6:d=0;a=10; -break;case 7:a=___01ftruncate64_(HEAP[f],h);a=a<0?8:9;break;case 8:d=_posix_error();a=10;break;case 9:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_putenv(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j,k;c=e;a=__PyArg_ParseTuple_SizeT(c,__str1393212,allocate([f,0,0,0,h,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=13;break;case 2:j=_strlen(HEAP[f]);k=_strlen(HEAP[h]);k=j+2+k;j=_PyString_FromStringAndSize(0,k-1);a=j==0?3:4;break;case 3:d=_PyErr_NoMemory();a=13;break;case 4:a=j+20;_PyOS_snprintf(a,k,__str813154,allocate([HEAP[f],0,0,0,HEAP[h],0, -0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=_putenv(a)!=0?5:8;break;case 5:HEAP[j]-=1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:_posix_error();d=0;a=13;break;case 8:a=_PyDict_SetItem(HEAP[_posix_putenv_garbage],HEAP[c+12],j)!=0?9:10;break;case 9:_PyErr_Clear();a=12;break;case 10:HEAP[j]-=1;a=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=12;break;case 12:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=13;break;case 13:return c=d,STACKTOP= -b,c;default:assert(0,"bad label: "+a)}} -function _posix_unsetenv(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b;c=e;a=__PyArg_ParseTuple_SizeT(c,__str1403213,allocate([f,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=5;break;case 2:_unsetenv(HEAP[f]);a=_PyDict_DelItem(HEAP[_posix_putenv_garbage],HEAP[c+12])!=0?3:4;break;case 3:_PyErr_Clear();a=4;break;case 4:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=5;break;case 5:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _posix_strerror(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;a=__PyArg_ParseTuple_SizeT(e,__str1413214,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:f=_strerror(HEAP[d]);a=f==0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1423215);c=0;a=5;break;case 4:c=_PyString_FromString(f);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _posix_WCOREDUMP(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1433216,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=_PyBool_FromLong(HEAP[c]&128);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WIFCONTINUED(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1443217,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=_PyBool_FromLong(HEAP[c]==65535);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WIFSTOPPED(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1453218,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=_PyBool_FromLong((HEAP[c]&255)==127);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WIFSIGNALED(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1463219,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=_PyBool_FromLong((HEAP[c]&127)+1>>1>0);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WIFEXITED(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1473220,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=_PyBool_FromLong((HEAP[c]&127)==0);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WEXITSTATUS(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1483221,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=__Py_BuildValue_SizeT(__str1493222,allocate([(HEAP[c]&65280)>>8,0,0,0],["i32",0,0,0],ALLOC_STACK));a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WTERMSIG(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1503223,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=__Py_BuildValue_SizeT(__str1493222,allocate([HEAP[c]&127,0,0,0],["i32",0,0,0],ALLOC_STACK));a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_WSTOPSIG(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c;c=b;var d,f=b+4;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1513224,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:HEAP[c]=HEAP[f];d=__Py_BuildValue_SizeT(__str1493222,allocate([(HEAP[c]&65280)>>8,0,0,0],["i32",0,0,0],ALLOC_STACK));a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __pystatvfs_fromstructstatvfs(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=_PyStructSequence_New(_StatVFSResultType);e=a==0?1:2;break;case 1:b=0;e=3;break;case 2:e=a;b=_PyInt_FromLong(HEAP[g]);HEAP[e+12]=b;e=a;b=_PyInt_FromLong(HEAP[g+4]);HEAP[e+12+4]=b;e=a;b=_PyLong_FromLongLong(HEAP[g+8]);HEAP[e+12+8]=b;e=a;b=_PyLong_FromLongLong(HEAP[g+16]);HEAP[e+12+12]=b;e=a;b=_PyLong_FromLongLong(HEAP[g+24]);HEAP[e+12+16]=b;e=a;b=_PyLong_FromLongLong(HEAP[g+32]);HEAP[e+12+20]=b;e=a;b=_PyLong_FromLongLong(HEAP[g+ -40]);HEAP[e+12+24]=b;e=a;b=_PyLong_FromLongLong(HEAP[g+48]);HEAP[e+12+28]=b;e=a;b=_PyInt_FromLong(HEAP[g+64]);HEAP[e+12+32]=b;e=a;b=_PyInt_FromLong(HEAP[g+68]);HEAP[e+12+36]=b;b=a;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _posix_fstatvfs(g,e){var b=STACKTOP;STACKTOP+=100;_memset(b,0,100);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str1523225,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=___01fstatvfs64_(HEAP[d],f);a=a!=0?3:4;break;case 3:c=_posix_error();a=5;break;case 4:c=__pystatvfs_fromstructstatvfs(f);a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_statvfs(g,e){var b=STACKTOP;STACKTOP+=100;_memset(b,0,100);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str1533226,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=___01statvfs64_(HEAP[d],f);a=a!=0?3:4;break;case 3:c=_posix_error_with_filename(HEAP[d]);a=5;break;case 4:c=__pystatvfs_fromstructstatvfs(f);a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_tempnam(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h;a=e;HEAP[c]=0;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1543227,allocate([c,0,0,0,f,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=10;break;case 2:a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str1553228,1)<0?3:4;break;case 3:d=0;a=10;break;case 4:a=HEAP[_Py_Py3kWarningFlag]!=0?5:7;break;case 5:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning], -__str1563229,1)<0?6:7;break;case 6:d=0;a=10;break;case 7:h=a=_tempnam(HEAP[c],HEAP[f]);a=a==0?8:9;break;case 8:d=_PyErr_NoMemory();a=10;break;case 9:d=_PyString_FromString(h);_free(h);a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _posix_tmpfile(){var g;for(g=-1;;)switch(g){case -1:var e,b;g=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:g=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str1573230,1)<0?2:3;break;case 2:e=0;g=6;break;case 3:b=g=___01tmpfile64_();g=g==0?4:5;break;case 4:e=_posix_error();g=6;break;case 5:e=_PyFile_FromFile(b,__str1583231,__str1593232,68);g=6;break;case 6:return e;default:assert(0,"bad label: "+g)}} -function _posix_tmpnam(){var g=STACKTOP;STACKTOP+=20;_memset(g,0,20);var e;for(e=-1;;)switch(e){case -1:var b,a=g,c;e=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str1603233,1)<0?1:2;break;case 1:b=0;e=11;break;case 2:e=HEAP[_Py_Py3kWarningFlag]!=0?3:5;break;case 3:e=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str1613234,1)<0?4:5;break;case 4:b=0;e=11;break;case 5:e=_tmpnam(a)==0?6:10;break;case 6:c=__Py_BuildValue_SizeT(__str1623235,allocate([0,0,0,0,__str1633236,0,0,0],["i32",0,0,0,"i8*",0,0, -0],ALLOC_STACK));_PyErr_SetObject(HEAP[_PyExc_OSError],c);e=c!=0?7:9;break;case 7:HEAP[c]-=1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=9;break;case 9:b=0;e=11;break;case 10:b=_PyString_FromString(a);e=11;break;case 11:return e=b,STACKTOP=g,e;default:assert(0,"bad label: "+e)}} -function _conv_confname(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;j=a;var q=d;c=(HEAP[HEAP[d+4]+84]&8388608)!=0?1:2;break;case 1:HEAP[f]=HEAP[q+8];k=1;c=13;break;case 2:c=(HEAP[HEAP[q+4]+84]&134217728)!=0?3:11;break;case 3:l=0;n=j;p=d+20;c=9;break;case 4:m=Math.floor((n+l)/2);o=_strcmp(p,HEAP[h+8*m]);c=o<0?5:6;break;case 5:n=m;c=9;break;case 6:c=o>0?7:8;break;case 7:l=m+1;c=9;break;case 8:HEAP[f]=HEAP[h+8*m+4];k=1;c=13;break;case 9:c=l255?6:8;break;case 6:c=_PyString_FromStringAndSize(0,j);a=c!=0?7:9;break;case 7:_confstr(HEAP[d],c+20,h);a=9;break;case 8:c=_PyString_FromStringAndSize(f,j);a=9;break;case 9:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _conv_sysconf_confname(g,e){return _conv_confname(g,e,_posix_constants_sysconf,134)} -function _posix_sysconf(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;a=e;c=0;a=__PyArg_ParseTuple_SizeT(a,__str342,allocate([128,0,0,0,d,0,0,0],["i32 (%struct.NullImporter*, i32*)*",0,0,0,"i32*",0,0,0],ALLOC_STACK))!=0?1:5;break;case 1:f=___errno_location();HEAP[f]=0;f=_sysconf(HEAP[d]);a=f!=-1?4:2;break;case 2:a=___errno_location();a=HEAP[a]==0?4:3;break;case 3:_posix_error();a=5;break;case 4:c=_PyInt_FromLong(f);a=5;break;case 5:return STACKTOP=b, -c;default:assert(0,"bad label: "+a)}}function _cmp_constdefs(g,e){return _strcmp(HEAP[g],HEAP[e])} -function _setup_confname_table(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;j=a;_qsort(d,f,8,130);l=_PyDict_New();c=l==0?1:2;break;case 1:k=-1;c=16;break;case 2:m=0;c=14;break;case 3:n=_PyInt_FromLong(HEAP[d+8*m+4]);c=n==0?8:4;break;case 4:c=_PyDict_SetItemString(l,HEAP[d+8*m],n)==-1;var o=n;c=c?5:11;break;case 5:c=o!=0?6:8;break;case 6:HEAP[n]-=1;c=HEAP[n]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=8;break;case 8:HEAP[l]-=1;c=HEAP[l]==0?9:10;break; -case 9:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=10;break;case 10:k=-1;c=16;break;case 11:HEAP[n]=HEAP[o]-1;c=HEAP[n]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=13;break;case 13:m+=1;c=14;break;case 14:c=mHEAP[a]?1:4;break;case 1:f=_block_new(c>=8192?c:8192);b=f==0?2:3;break;case 2:d=0;b=5;break;case 3:a=HEAP[a+8]=f;b=4;break;case 4:b=HEAP[a+12]+HEAP[a+4];HEAP[a+4]=c+HEAP[a+4];d=b;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _PyArena_New(){var g;for(g=-1;;)switch(g){case -1:var e,b;b=_malloc(12);g=b==0?1:2;break;case 1:e=_PyErr_NoMemory();g=7;break;case 2:g=_block_new(8192);HEAP[b]=g;HEAP[b+4]=HEAP[b];g=HEAP[b]==0?3:4;break;case 3:_free(b);e=_PyErr_NoMemory();g=7;break;case 4:var a=_PyList_New(0);HEAP[b+8]=a;a=b;g=HEAP[b+8]==0?5:6;break;case 5:_block_free(HEAP[a]);_free(b);e=_PyErr_NoMemory();g=7;break;case 6:e=a;g=7;break;case 7:return e;default:assert(0,"bad label: "+g)}} -function _PyArena_Free(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_block_free(HEAP[b]);_PyList_SetSlice(HEAP[b+8],0,HEAP[HEAP[b+8]+8],0);e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=2;break;case 2:_free(b);return;default:assert(0,"bad label: "+e)}} -function _PyArena_Malloc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=_block_alloc(HEAP[a+4],e);b=d==0?1:2;break;case 1:c=_PyErr_NoMemory();b=5;break;case 2:b=HEAP[HEAP[a+4]+8]!=0?3:4;break;case 3:HEAP[a+4]=HEAP[HEAP[a+4]+8];b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}} -function _PyArena_AddPyObject(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;b=g;a=e;c=_PyList_Append(HEAP[b+8],a);b=c>=0?1:3;break;case 1:HEAP[a]-=1;b=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=3;break;case 3:return a=c;default:assert(0,"bad label: "+b)}}function _PyFPE_dummy(){return 1}function __Py_force_double(g){return g} -function _PyInterpreterState_New(){var g;for(g=-1;;)switch(g){case -1:var e;e=_malloc(40);g=e!=0?1:2;break;case 1:HEAP[e+8]=0;HEAP[e+20]=0;HEAP[e+12]=0;HEAP[e+16]=0;HEAP[e+4]=0;HEAP[e+24]=0;HEAP[e+28]=0;HEAP[e+32]=0;HEAP[e+36]=2;HEAP[e]=HEAP[_interp_head];HEAP[_interp_head]=e;g=2;break;case 2:return g=e;default:assert(0,"bad label: "+g)}} -function _PyInterpreterState_Clear(g){var m;var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l;b=g;a=HEAP[b+4];e=HEAP[b+4]!=0?1:2;break;case 1:_PyThreadState_Clear(a);m=e=HEAP[a],a=m;e=e!=0?1:2;break;case 2:e=HEAP[b+24]!=0?3:5;break;case 3:c=HEAP[b+24];HEAP[b+24]=0;HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:e=HEAP[b+28]!=0?6:8;break;case 6:d=HEAP[b+28];HEAP[b+28]=0;HEAP[d]-=1;e=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d); -e=8;break;case 8:e=HEAP[b+32]!=0?9:11;break;case 9:f=HEAP[b+32];HEAP[b+32]=0;HEAP[f]-=1;e=HEAP[f]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=11;break;case 11:e=HEAP[b+8]!=0?12:14;break;case 12:h=HEAP[b+8];HEAP[b+8]=0;HEAP[h]-=1;e=HEAP[h]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=14;break;case 14:e=HEAP[b+20]!=0?15:17;break;case 15:j=HEAP[b+20];HEAP[b+20]=0;HEAP[j]-=1;e=HEAP[j]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=17;break;case 17:e= -HEAP[b+12]!=0?18:20;break;case 18:k=HEAP[b+12];HEAP[b+12]=0;HEAP[k]-=1;e=HEAP[k]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=20;break;case 20:e=HEAP[b+16]!=0?21:23;break;case 21:l=HEAP[b+16];HEAP[b+16]=0;HEAP[l]-=1;e=HEAP[l]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=23;break;case 23:return;default:assert(0,"bad label: "+e)}} -function _zapthreads(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[b+4];e=HEAP[b+4]!=0?1:2;break;case 1:_PyThreadState_Delete(a);a=HEAP[b+4];e=HEAP[b+4]!=0?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _PyInterpreterState_Delete(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;_zapthreads(b);a=_interp_head;e=1;break;case 1:e=HEAP[a]==0?2:3;break;case 2:throw _Py_FatalError(__str3341),"Reached an unreachable!";case 3:e=HEAP[a]==b?5:4;break;case 4:a=HEAP[a];e=1;break;case 5:e=HEAP[b+4]!=0?6:7;break;case 6:throw _Py_FatalError(__str13342),"Reached an unreachable!";case 7:HEAP[a]=HEAP[b];_free(b);return;default:assert(0,"bad label: "+e)}} -function _threadstate_getframe(g){return HEAP[g+8]} -function _new_threadstate(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f;c=g;d=e;var h=_malloc(84);f=h;HEAP[__PyThreadState_GetFrame]==0?(a=-1,b=1):(a=-1,b=2);break;case 1:HEAP[__PyThreadState_GetFrame]=134;var j=f,a=1;b=2;break;case 2:b=(a==1?j:h)!=0?3:6;break;case 3:HEAP[f+4]=c;HEAP[f+8]=0;HEAP[f+12]=0;HEAP[f+16]=0;HEAP[f+20]=0;HEAP[f+68]=0;HEAP[f+72]=0;HEAP[f+76]=0;HEAP[f+80]=0;HEAP[f+64]=0;HEAP[f+40]=0;HEAP[f+44]=0;HEAP[f+48]=0;HEAP[f+52]=0;HEAP[f+56]=0;HEAP[f+60]=0;HEAP[f+24]=0;HEAP[f+ -28]=0;HEAP[f+32]=0;HEAP[f+36]=0;b=d!=0?4:5;break;case 4:__PyThreadState_Init(f);b=5;break;case 5:HEAP[f]=HEAP[c+4];HEAP[c+4]=f;b=6;break;case 6:return b=f;default:assert(0,"bad label: "+b)}}function _PyThreadState_New(g){return _new_threadstate(g,1)}function __PyThreadState_Prealloc(g){return _new_threadstate(g,0)}function __PyThreadState_Init(){} -function _PyThreadState_Clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m,n,o;b=g;e=HEAP[_Py_VerboseFlag]!=0?1:3;break;case 1:e=HEAP[b+8]!=0?2:3;break;case 2:_fwrite(__str23344,1,55,HEAP[_stderr]);e=3;break;case 3:e=HEAP[b+8]!=0?4:6;break;case 4:a=HEAP[b+8];HEAP[b+8]=0;HEAP[a]-=1;e=HEAP[a]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=6;break;case 6:e=HEAP[b+64]!=0?7:9;break;case 7:c=HEAP[b+64];HEAP[b+64]=0;HEAP[c]-=1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+ -4]+24]](c);e=9;break;case 9:e=HEAP[b+76]!=0?10:12;break;case 10:d=HEAP[b+76];HEAP[b+76]=0;HEAP[d]-=1;e=HEAP[d]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=12;break;case 12:e=HEAP[b+40]!=0?13:15;break;case 13:f=HEAP[b+40];HEAP[b+40]=0;HEAP[f]-=1;e=HEAP[f]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=15;break;case 15:e=HEAP[b+44]!=0?16:18;break;case 16:h=HEAP[b+44];HEAP[b+44]=0;HEAP[h]-=1;e=HEAP[h]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=18; -break;case 18:e=HEAP[b+48]!=0?19:21;break;case 19:j=HEAP[b+48];HEAP[b+48]=0;HEAP[j]-=1;e=HEAP[j]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=21;break;case 21:e=HEAP[b+52]!=0?22:24;break;case 22:k=HEAP[b+52];HEAP[b+52]=0;HEAP[k]-=1;e=HEAP[k]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=24;break;case 24:e=HEAP[b+56]!=0?25:27;break;case 25:l=HEAP[b+56];HEAP[b+56]=0;HEAP[l]-=1;e=HEAP[l]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=27;break;case 27:e= -HEAP[b+60]!=0?28:30;break;case 28:m=HEAP[b+60];HEAP[b+60]=0;HEAP[m]-=1;e=HEAP[m]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);e=30;break;case 30:HEAP[b+24]=0;HEAP[b+28]=0;e=HEAP[b+32]!=0?31:33;break;case 31:n=HEAP[b+32];HEAP[b+32]=0;HEAP[n]-=1;e=HEAP[n]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);e=33;break;case 33:e=HEAP[b+36]!=0?34:36;break;case 34:o=HEAP[b+36];HEAP[b+36]=0;HEAP[o]-=1;e=HEAP[o]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);e=36;break; -case 36:return;default:assert(0,"bad label: "+e)}} -function _tstate_delete_common(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;d=0;e=b==0?1:2;break;case 1:throw _Py_FatalError(__str33345),"Reached an unreachable!";case 2:a=HEAP[b+4];e=a==0?3:4;break;case 3:throw _Py_FatalError(__str43346),"Reached an unreachable!";case 4:c=a+4;e=5;break;case 5:e=HEAP[c]==0?6:7;break;case 6:throw _Py_FatalError(__str53347),"Reached an unreachable!";case 7:e=HEAP[c]==b?13:8;break;case 8:e=HEAP[c]==d?9:10;break;case 9:throw _Py_FatalError(__str63348),"Reached an unreachable!"; -case 10:d=HEAP[c];e=HEAP[HEAP[c]]==HEAP[a+4]?11:12;break;case 11:throw _Py_FatalError(__str73349),"Reached an unreachable!";case 12:c=HEAP[c];e=5;break;case 13:HEAP[c]=HEAP[b];_free(b);return;default:assert(0,"bad label: "+e)}}function _PyThreadState_Delete(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b==HEAP[__PyThreadState_Current]?1:2;break;case 1:throw _Py_FatalError(__str83350),"Reached an unreachable!";case 2:_tstate_delete_common(b);return;default:assert(0,"bad label: "+e)}} -function _PyThreadState_Get(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[__PyThreadState_Current]==0?1:2;break;case 1:throw _Py_FatalError(__str93351),"Reached an unreachable!";case 2:return g=HEAP[__PyThreadState_Current];default:assert(0,"bad label: "+g)}}function _PyThreadState_Swap(g){var e;e=HEAP[__PyThreadState_Current];HEAP[__PyThreadState_Current]=g;return e} -function _PyThreadState_GetDict(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[__PyThreadState_Current]==0?1:2;break;case 1:e=0;g=6;break;case 2:g=HEAP[HEAP[__PyThreadState_Current]+64]==0?3:5;break;case 3:var b=HEAP[__PyThreadState_Current];g=_PyDict_New();HEAP[b+64]=g;g=g==0?4:5;break;case 4:_PyErr_Clear();g=5;break;case 5:e=HEAP[HEAP[__PyThreadState_Current]+64];g=6;break;case 6:return e;default:assert(0,"bad label: "+g)}} -function _PyThreadState_SetAsyncExc(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j;c=g;d=e;var k=HEAP[HEAP[HEAP[__PyThreadState_Current]+4]+4];h=k;a=-1;b=9;break;case 1:var l=h;b=HEAP[h+80]==c?2:8;break;case 2:j=HEAP[l+76];b=d!=0?3:4;break;case 3:HEAP[d]+=1;b=4;break;case 4:HEAP[h+76]=d;b=j!=0?5:7;break;case 5:HEAP[j]-=1;b=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=7;break;case 7:f=1;b=11;break;case 8:var m=HEAP[l];h=m;a=8;b=9;break;case 9:b=(a==8?m:k)!=0?1: -10;break;case 10:f=0;b=11;break;case 11:return b=f;default:assert(0,"bad label: "+b)}}function _PyInterpreterState_Head(){return HEAP[_interp_head]}function _PyInterpreterState_Next(g){return HEAP[g]}function _PyInterpreterState_ThreadHead(g){return HEAP[g+4]}function _PyThreadState_Next(g){return HEAP[g]} -function __PyThread_CurrentFrames(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a,c,d,f,h,j;a=_PyDict_New();g=a==0?1:2;break;case 1:b=0;g=17;break;case 2:var k=HEAP[_interp_head];c=k;e=2;g=12;break;case 3:var l=HEAP[c+4];d=l;e=3;g=10;break;case 4:j=HEAP[d+8];g=j==0?9:5;break;case 5:f=_PyInt_FromLong(HEAP[d+80]);g=f==0?14:6;break;case 6:h=_PyDict_SetItem(a,f,j);HEAP[f]-=1;g=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);g=8;break;case 8:g=h<0?14:9;break;case 9:var m=HEAP[d]; -d=m;e=9;g=10;break;case 10:g=(e==9?m:l)!=0?4:11;break;case 11:var n=HEAP[c];c=n;e=11;g=12;break;case 12:g=(e==11?n:k)!=0?3:13;break;case 13:b=a;g=17;break;case 14:HEAP[a]-=1;g=HEAP[a]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=16;break;case 16:b=0;g=17;break;case 17:return g=b;default:assert(0,"bad label: "+g)}} -function _PyOS_mystrnicmp(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=f==0?1:4;break;case 1:h=0;a=7;break;case 2:a=HEAP[c]==0;c+=1;a=a!=0?6:3;break;case 3:a=HEAP[d]==0;d+=1;a=a!=0?6:4;break;case 4:f=a=f-1;a=a<=0?6:5;break;case 5:a=_tolower(HEAP[c]);var j=_tolower(HEAP[d]);a=a==j?2:6;break;case 6:h=_tolower(HEAP[c]);a=_tolower(HEAP[d]);h-=a;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _PyOS_mystricmp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=1;break;case 1:b=HEAP[a]==0?3:2;break;case 2:b=HEAP[a];a+=1;b=_tolower(b);var d=HEAP[c];c+=1;d=_tolower(d);b=b==d?1:3;break;case 3:return a=_tolower(HEAP[a]),c=_tolower(HEAP[c]),c=a-c;default:assert(0,"bad label: "+b)}} -function _case_insensitive_match3372(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=2;break;case 1:a+=1;c+=1;b=2;break;case 2:b=HEAP[c]==0?4:3;break;case 3:b=HEAP[__Py_ctype_tolower+HEAP[a]]==HEAP[c]?1:4;break;case 4:return b=HEAP[c]==0;default:assert(0,"bad label: "+b)}} -function __Py_parse_inf_or_nan(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;k=0;j=a;b=HEAP[j]==45?1:2;break;case 1:k=1;j+=1;b=4;break;case 2:b=HEAP[j]==43?3:4;break;case 3:j+=1;b=4;break;case 4:b=_case_insensitive_match3372(j,__str3355);var l=j;b=b!=0?5:11;break;case 5:j=l+3;b=_case_insensitive_match3372(j,__str13356)!=0?6:7;break;case 6:j+=5;b=7;break;case 7:b=k!=0?8:9;break;case 8:f=-Infinity;b=10;break;case 9:f=Infinity;b=10;break;case 10:h=f;b=17;break;case 11:b=_case_insensitive_match3372(l, -__str23357)!=0?12:16;break;case 12:j+=3;b=k!=0?13:14;break;case 13:d=NaN;b=15;break;case 14:d=NaN;b=15;break;case 15:h=d;b=17;break;case 16:j=a;h=-1;b=17;break;case 17:return HEAP[c]=j,a=h;default:assert(0,"bad label: "+b)}} -function __PyOS_ascii_strtod(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k=b,l,m,n,o,p,q,r,u,s;d=g;f=e;u=r=q=0;HEAP[k]=0;m=_localeconv();m=HEAP[m];n=_strlen(m);p=0;l=__Py_parse_inf_or_nan(d,f);a=HEAP[f]!=d?1:2;break;case 1:j=l;a=48;break;case 2:o=___errno_location();HEAP[o]=0;o=d;a=HEAP[o]==45?3:4;break;case 3:u=1;o+=1;a=6;break;case 4:a=HEAP[o]==43?5:6;break;case 5:o+=1;a=6;break;case 6:a=HEAP[o]==48?7:9;break;case 7:a=HEAP[o+1]==120?47:8; -break;case 8:a=HEAP[o+1]==88?47:9;break;case 9:a=(HEAP[__Py_ctype_table+HEAP[o]*4]&4)==0?10:11;break;case 10:a=HEAP[o]!=46?47:11;break;case 11:r=o;a=HEAP[m]!=46?13:12;break;case 12:a=HEAP[m+1]!=0?13:28;break;case 13:var t=o;(HEAP[__Py_ctype_table+HEAP[o]*4]&4)!=0?(c=13,a=14):(c=13,a=15);break;case 14:var v=o=(c==14?v:t)+1;(HEAP[__Py_ctype_table+HEAP[o]*4]&4)!=0?a=c=14:(c=14,a=15);break;case 15:var w=o;a=HEAP[c==13?t:v]==46?16:27;break;case 16:p=w;o+=1;var x=o;(HEAP[__Py_ctype_table+HEAP[o]*4]&4)!= -0?(c=16,a=17):(c=16,a=18);break;case 17:var y=o=(c==17?y:x)+1;(HEAP[__Py_ctype_table+HEAP[o]*4]&4)!=0?a=c=17:(c=17,a=18);break;case 18:a=HEAP[c==16?x:y]==101?20:19;break;case 19:a=HEAP[o]==69?20:21;break;case 20:o+=1;a=21;break;case 21:a=HEAP[o]==43?23:22;break;case 22:a=HEAP[o]==45?23:24;break;case 23:o+=1;a=24;break;case 24:var z=o;(HEAP[__Py_ctype_table+HEAP[o]*4]&4)!=0?(c=24,a=25):(c=24,a=26);break;case 25:var C=o=(c==25?C:z)+1;(HEAP[__Py_ctype_table+HEAP[o]*4]&4)!=0?a=c=25:(c=25,a=26);break; -case 26:q=c==24?z:C;a=28;break;case 27:a=_strncmp(w,m,n)==0?47:28;break;case 28:a=p!=0?29:41;break;case 29:a=q+1+n+(0-r)>=0?30:33;break;case 30:a=n+q+(0-r)!=-1?31:32;break;case 31:h=q+1+n+(0-r);a=34;break;case 32:h=1;a=34;break;case 33:s=0;a=35;break;case 34:s=a=_malloc(h);a=a==0?35:36;break;case 35:HEAP[f]=d;j=___errno_location();HEAP[j]=12;j=l;a=48;break;case 36:l=s;_llvm_memcpy_p0i8_p0i8_i32(l,r,p-r,1,0);l+=p-r;_llvm_memcpy_p0i8_p0i8_i32(l,m,n,1,0);l+=n;_llvm_memcpy_p0i8_p0i8_i32(l,p+1,q-(p+1), -1,0);l+=q-(p+1);HEAP[l]=0;l=_strtod(s,k);a=HEAP[k]!=0?37:40;break;case 37:var A=r+(HEAP[k]-s);a=HEAP[k]>p?38:39;break;case 38:HEAP[k]=A+(0-(n+-1));a=40;break;case 39:HEAP[k]=A;a=40;break;case 40:_free(s);a=42;break;case 41:l=_strtod(r,k);a=42;break;case 42:a=HEAP[k]==r?47:43;break;case 43:a=u!=0?44:46;break;case 44:a=HEAP[k]!=d?45:46;break;case 45:l=0-l;a=46;break;case 46:HEAP[f]=HEAP[k];j=l;a=48;break;case 47:HEAP[f]=d;j=___errno_location();HEAP[j]=22;j=-1;a=48;break;case 48:return c=j,STACKTOP= -b,c;default:assert(0,"bad label: "+a)}} -function _PyOS_ascii_strtod(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j=b,k,l;d=g;f=e;a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str33358,1)<0?1:2;break;case 1:h=-1;a=9;break;case 2:var m=k=d;(HEAP[__Py_ctype_table+HEAP[k]*4]&8)!=0?(c=2,a=3):(c=2,a=4);break;case 3:var n=k=(c==3?n:m)+1;(HEAP[__Py_ctype_table+HEAP[k]*4]&8)!=0?a=c=3:(c=3,a=4);break;case 4:l=__PyOS_ascii_strtod(c==2?m:n,j);a=HEAP[j]==k?5:6;break;case 5:HEAP[j]=d;a=6;break; -case 6:a=f!=0?7:8;break;case 7:HEAP[f]=HEAP[j];a=8;break;case 8:h=l;a=9;break;case 9:return a=h,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _PyOS_ascii_atof(g){return _PyOS_ascii_strtod(g,0)} -function _PyOS_string_to_double(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a;d=g;f=e;h=b;k=-1;j=___errno_location();HEAP[j]=0;j=__PyOS_ascii_strtod(d,l);c=___errno_location();c=HEAP[c]==12?1:2;break;case 1:_PyErr_NoMemory();HEAP[l]=d;c=13;break;case 2:c=f!=0?6:3;break;case 3:c=HEAP[l]==d?5:4;break;case 4:c=HEAP[HEAP[l]]!=0?5:6;break;case 5:_PyErr_Format(HEAP[_PyExc_ValueError],__str43359,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=13;break; -case 6:c=HEAP[l]==d?7:8;break;case 7:_PyErr_Format(HEAP[_PyExc_ValueError],__str43359,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=13;break;case 8:c=___errno_location();c=HEAP[c]!=34?12:9;break;case 9:c=_fabs(j)<1?12:10;break;case 10:c=h==0?12:11;break;case 11:_PyErr_Format(h,__str53360,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=13;break;case 12:k=j;c=13;break;case 13:c=f!=0?14:15;break;case 14:HEAP[f]=HEAP[l];c=15;break;case 15:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _change_decimal_from_locale_to_dot(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d;a=g;c=_localeconv();c=HEAP[c];e=HEAP[c]!=46?2:1;break;case 1:e=HEAP[c+1]!=0?2:10;break;case 2:d=_strlen(c);e=HEAP[a]==43?4:3;break;case 3:e=HEAP[a]==45?4:5;break;case 4:a+=1;e=5;break;case 5:var f=a;(HEAP[__Py_ctype_table+HEAP[a]*4]&4)!=0?(b=5,e=6):(b=5,e=7);break;case 6:var h=a=(b==6?h:f)+1;(HEAP[__Py_ctype_table+HEAP[a]*4]&4)!=0?e=b=6:(b=6,e=7);break;case 7:e=_strncmp(b==5?f:h,c,d)==0?8:10;break;case 8:HEAP[a]= -46;a+=1;e=d>1?9:10;break;case 9:e=_strlen(a+(d-1));_llvm_memmove_p0i8_p0i8_i32(a,a+(d-1),e,1,0);HEAP[a+e]=0;e=10;break;case 10:return;default:assert(0,"bad label: "+e)}} -function _ensure_minimum_exponent_length(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;d=_strpbrk(a,__str63361);b=d!=0?1:19;break;case 1:b=HEAP[d+1]==45?3:2;break;case 2:b=HEAP[d+1]==43?3:19;break;case 3:f=d+2;j=h=0;k=1;d+=2;b=10;break;case 4:b=k!=0?5:7;break;case 5:b=HEAP[d]==48?6:7;break;case 6:j+=1;b=7;break;case 7:b=HEAP[d]!=48?8:9;break;case 8:k=0;b=9;break;case 9:d+=1;h+=1;b=10;break;case 10:b=HEAP[d]==0?12:11;break;case 11:b=(HEAP[__Py_ctype_table+HEAP[d]*4]&4)!=0?4: -12;break;case 12:l=h-j;b=h!=2?13:19;break;case 13:b=h>2?14:17;break;case 14:b=l<=1?15:16;break;case 15:l=2;b=16;break;case 16:b=h-l;_llvm_memmove_p0i8_p0i8_i32(f,f+b,l+1,1,0);b=19;break;case 17:m=2-h;b=f+m+h+1119?8:9;break;case 8:n=0;f=13;break;case 9:_strcpy(q,k);HEAP[q+(p- -1)]=103;k=q;f=10;break;case 10:_PyOS_snprintf(h,j,k,allocate([l,0,0,0,0,0,0,0],["double",0,0,0,0,0,0,0],ALLOC_STACK));_change_decimal_from_locale_to_dot(h);_ensure_minimum_exponent_length(h,j);f=o==90?11:12;break;case 11:h=_ensure_decimal_point(h,j,m);f=12;break;case 12:n=h;f=13;break;case 13:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _PyOS_ascii_formatd(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;f=e;h=b;j=a;c=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str113366,1)<0?1:2;break;case 1:k=0;c=3;break;case 2:k=__PyOS_ascii_formatd(d,f,h,j,-1);c=3;break;case 3:return g=k;default:assert(0,"bad label: "+c)}} -function _PyOS_double_to_string(g,e,b,a,c){var d=STACKTOP;STACKTOP+=36;_memset(d,0,36);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p=d,q,r,u,s=d+32,t,v;h=g;j=e;k=b;l=a;m=c;t=0;f=j;f=f==69?1:f==70?2:f==71?3:f==101?8:f==102?8:f==103?8:f==114?4:7;break;case 1:t=1;j=101;f=8;break;case 2:t=1;j=102;f=8;break;case 3:t=1;j=103;f=8;break;case 4:f=k!=0?5:6;break;case 5:__PyErr_BadInternalCall(__str123367,770);o=0;f=38;break;case 6:k=17;j=103;f=8;break;case 7:__PyErr_BadInternalCall(__str123367,783); -o=0;f=38;break;case 8:f=___isnan(h)!=0?10:9;break;case 9:f=___isinf(h)!=0?10:11;break;case 10:q=5;f=14;break;case 11:q=k+25;f=j==102?12:14;break;case 12:f=_fabs(h)>=1?13:14;break;case 13:_frexp(h,s);q+=HEAP[s]/3|0;f=14;break;case 14:r=f=_PyMem_Malloc(q);f=f==0?15:16;break;case 15:_PyErr_NoMemory();o=0;f=38;break;case 16:f=___isnan(h)!=0?17:18;break;case 17:_llvm_memcpy_p0i8_p0i8_i32(r,__str23357,4,1,0);u=2;f=29;break;case 18:f=___isinf(h)!=0?19:23;break;case 19:f=_copysign(1,h);var w=r;f=f==1?20: -21;break;case 20:_llvm_memcpy_p0i8_p0i8_i32(w,__str3355,4,1,0);f=22;break;case 21:_llvm_memcpy_p0i8_p0i8_i32(w,__str133368,5,1,0);f=22;break;case 22:u=1;f=29;break;case 23:u=0;f=(l&2)!=0?24:25;break;case 24:j=90;f=25;break;case 25:var x=j;f=(l&4)!=0?26:27;break;case 26:n=__str143369;f=28;break;case 27:n=__str153370;f=28;break;case 28:_PyOS_snprintf(p,32,__str163371,allocate([n,0,0,0,k,0,0,0,x,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));__PyOS_ascii_formatd(r,q,p,h,k);f=29;break;case 29:f= -(l&1)!=0?30:32;break;case 30:f=HEAP[r]!=45?31:32;break;case 31:f=_strlen(r);_llvm_memmove_p0i8_p0i8_i32(r+1,r,f+1,1,0);HEAP[r]=43;f=32;break;case 32:f=t!=0?33:35;break;case 33:v=r;f=HEAP[v]!=0?34:35;break;case 34:HEAP[v]=HEAP[__Py_ctype_toupper+HEAP[v]];v+=1;f=HEAP[v]!=0?34:35;break;case 35:f=m!=0?36:37;break;case 36:HEAP[m]=u;f=37;break;case 37:o=r;f=38;break;case 38:return g=o,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _ast_type_init(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m,n,o=a+4,p=a+8,q,r;d=g;f=e;h=b;m=0;n=-1;q=_PyObject_GetAttrString(HEAP[d+4],__str603435);c=q==0?1:2;break;case 1:_PyErr_Clear();c=q!=0?2:3;break;case 2:m=c=_PySequence_Size(q);c=c==-1?24:3;break;case 3:n=0;c=HEAP[f+8]>0?4:20;break;case 4:c=HEAP[f+8]!=m?5:12;break;case 5:c=m==1?6:7;break;case 6:k=__str613436;c=8;break;case 7:k=__str453420;c=8;break;case 8:c=m==0?9:10;break; -case 9:j=__str613436;c=11;break;case 10:j=__str623437;c=11;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError],__str633438,allocate([HEAP[HEAP[d+4]+12],0,0,0,j,0,0,0,m,0,0,0,k,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));n=-1;c=24;break;case 12:HEAP[l]=0;c=19;break;case 13:r=_PySequence_GetItem(q,HEAP[l]);c=r==0?14:15;break;case 14:n=-1;c=24;break;case 15:n=_PyObject_SetAttr(d,r,HEAP[f+12+HEAP[l]*4]);HEAP[r]-=1;c=HEAP[r]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[r+4]+ -24]](r);c=17;break;case 17:c=n<0?24:18;break;case 18:HEAP[l]+=1;c=19;break;case 19:c=HEAP[f+8]>HEAP[l]?13:20;break;case 20:c=h!=0?21:24;break;case 21:HEAP[l]=0;c=23;break;case 22:n=_PyObject_SetAttr(d,HEAP[o],HEAP[p]);c=n<0?24:23;break;case 23:c=_PyDict_Next(h,l,o,p)!=0?22:24;break;case 24:c=q!=0?25:27;break;case 25:HEAP[q]-=1;c=HEAP[q]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=27;break;case 27:return g=n,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _ast_type_reduce(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f;a=g;f=_PyObject_GetAttrString(a,__str643439);e=f==0?2:1;break;case 1:var h=HEAP[a+4],b=1;e=5;break;case 2:e=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?4:3;break;case 3:c=0;e=9;break;case 4:_PyErr_Clear();var j=HEAP[a+4];f!=0?(b=4,e=5):(b=4,e=8);break;case 5:d=_Py_BuildValue(__str653440,allocate([b==1?h:j,0,0,0,f,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[f]-= -1;e=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=7;break;case 7:c=d;e=9;break;case 8:c=_Py_BuildValue(__str663441,allocate([j,0,0,0],["%struct.PyTypeObject*",0,0,0],ALLOC_STACK));e=9;break;case 9:return g=c;default:assert(0,"bad label: "+e)}} -function _make_type(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;j=a;l=_PyTuple_New(j);c=l==0?1:2;break;case 1:k=0;c=12;break;case 2:n=0;c=8;break;case 3:o=_PyString_FromString(HEAP[h+4*n]);var p=l;c=o==0?4:7;break;case 4:HEAP[l]=HEAP[p]-1;c=HEAP[l]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=6;break;case 6:k=0;c=12;break;case 7:HEAP[p+12+n*4]=o;n+=1;c=8;break;case 8:c=n=0;HEAP[m]-=1;a=HEAP[m]== -0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=11;break;case 11:h=k;a=12;break;case 12:return g=h;default:assert(0,"bad label: "+a)}} -function _ast2obj_list(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;b=a!=0?1:2;break;case 1:f=HEAP[a];b=3;break;case 2:f=0;b=3;break;case 3:j=f;k=b=_PyList_New(j);b=b==0?4:5;break;case 4:d=0;b=13;break;case 5:h=0;b=11;break;case 6:l=FUNCTION_TABLE[c](HEAP[a+4+h*4]);var m=k;b=l==0?7:10;break;case 7:HEAP[k]=HEAP[m]-1;b=HEAP[k]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=9;break;case 9:d=0;b=13;break;case 10:HEAP[HEAP[m+12]+4*h]=l;h+=1;b=11;break;case 11:b=h4?12:13;break;case 12:l=-4;c=14;break;case 13:l=0;c=14;break;case 14:q=t+l;c=_maybe_pyc_file(f,h,q,j)!=0?15:22;break;case 15:c=j!=0?16:17;break;case 16:_fclose(f);c=17;break;case 17:f=c=___01fopen64_(h,__str493889);c=c==0?18:19;break;case 18:_fwrite(__str503890,1,31,HEAP[_stderr]);u=-1;c=30;break;case 19:c=_strcmp(q, -__str473887)==0?20:21;break;case 20:HEAP[_Py_OptimizeFlag]=1;c=21;break;case 21:var v=_run_pyc_file(f,h,o,o,k);p=v;d=21;c=23;break;case 22:var w=_PyRun_FileExFlags(f,h,257,o,o,j,k);p=w;d=22;c=23;break;case 23:c=(d==22?w:v)==0?24:25;break;case 24:_PyErr_Print();u=-1;c=30;break;case 25:HEAP[p]-=1;c=HEAP[p]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=27;break;case 27:c=_Py_FlushLine()!=0?28:29;break;case 28:_PyErr_Clear();c=29;break;case 29:u=0;c=30;break;case 30:c=r!=0?31:33;break; -case 31:c=_PyDict_DelItemString(o,__str483888)!=0?32:33;break;case 32:_PyErr_Clear();c=33;break;case 33:m=u;c=34;break;case 34:return g=m;default:assert(0,"bad label: "+c)}} -function _PyRun_SimpleStringFlags(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=_PyImport_AddModule(__str363876);b=f==0?1:2;break;case 1:d=-1;b=9;break;case 2:b=_PyModule_GetDict(f);h=_PyRun_StringFlags(a,257,b,b,c);b=h==0?3:4;break;case 3:_PyErr_Print();d=-1;b=9;break;case 4:HEAP[h]-=1;b=HEAP[h]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=6;break;case 6:b=_Py_FlushLine()!=0?7:8;break;case 7:_PyErr_Clear();b=8;break;case 8:d=0;b=9;break;case 9:return a=d;default:assert(0, -"bad label: "+b)}} -function _parse_syntax_error(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q;h=g;j=e;k=b;l=a;m=c;n=d;var r=h;f=(HEAP[HEAP[h+4]+84]&67108864)!=0?1:2;break;case 1:o=_PyArg_ParseTuple(r,__str513891,allocate([j,0,0,0,k,0,0,0,l,0,0,0,m,0,0,0,n,0,0,0],["%struct.NullImporter**",0,0,0,"i8**",0,0,0,"i32*",0,0,0,"i32*",0,0,0,"i8**",0,0,0],ALLOC_STACK));f=35;break;case 2:q=_PyObject_GetAttrString(r,__str523892);f=q==0?34:3;break;case 3:HEAP[j]=q;q=_PyObject_GetAttrString(h,__str533893); -f=q==0?34:4;break;case 4:f=q==__Py_NoneStruct?5:6;break;case 5:HEAP[k]=0;f=7;break;case 6:f=_PyString_AsString(q);HEAP[k]=f;f=HEAP[k]==0?31:7;break;case 7:HEAP[q]-=1;f=HEAP[q]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=9;break;case 9:q=f=_PyObject_GetAttrString(h,__str543894);f=f==0?34:10;break;case 10:p=_PyInt_AsLong(q);HEAP[q]-=1;f=HEAP[q]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=12;break;case 12:q=0;f=p<0?13:14;break;case 13:f=_PyErr_Occurred()!=0?31:14;break; -case 14:HEAP[l]=p;q=f=_PyObject_GetAttrString(h,__str553895);f=f==0?34:15;break;case 15:f=q==__Py_NoneStruct?16:19;break;case 16:HEAP[m]=-1;HEAP[q]-=1;f=HEAP[q]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=18;break;case 18:q=0;f=24;break;case 19:p=_PyInt_AsLong(q);HEAP[q]-=1;f=HEAP[q]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=21;break;case 21:q=0;f=p<0?22:23;break;case 22:f=_PyErr_Occurred()!=0?31:23;break;case 23:HEAP[m]=p;f=24;break;case 24:q=f=_PyObject_GetAttrString(h, -__str563896);f=f==0?34:25;break;case 25:f=q==__Py_NoneStruct?26:27;break;case 26:HEAP[n]=0;f=28;break;case 27:f=_PyString_AsString(q);HEAP[n]=f;f=HEAP[n]==0?31:28;break;case 28:HEAP[q]-=1;f=HEAP[q]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=30;break;case 30:o=1;f=35;break;case 31:f=q!=0?32:34;break;case 32:HEAP[q]-=1;f=HEAP[q]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=34;break;case 34:o=0;f=35;break;case 35:return g=o;default:assert(0,"bad label: "+f)}} -function _PyErr_Print(){_PyErr_PrintEx(1)} -function _print_error_text(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;f=e;h=b;a=f>=0?1:11;break;case 1:a=f>0?2:5;break;case 2:a=f;var k=_strlen(h);a=a==k?3:5;break;case 3:a=HEAP[h+(f-1)]==10?4:5;break;case 4:f-=1;a=5;break;case 5:j=a=_strchr(h,10);a=a==0?9:6;break;case 6:a=j-h>=f?9:7;break;case 7:f=0-(0-h)+f+(0-(j+1));h=j+1;a=5;break;case 8:h+=1;f-=1;a=9;break;case 9:a=HEAP[h]==32?8:10;break;case 10:a=HEAP[h]==9?8:11;break;case 11:_PyFile_WriteString(__str573897,d);_PyFile_WriteString(h, -d);a=HEAP[h]==0?13:12;break;case 12:a=_strlen(h);a=HEAP[h+(a-1)]!=10?13:14;break;case 13:_PyFile_WriteString(__str583898,d);a=14;break;case 14:a=f==-1?18:15;break;case 15:_PyFile_WriteString(__str573897,d);f=c=f-1;var l=d;c>0?(c=15,a=16):(c=15,a=17);break;case 16:_PyFile_WriteString(__str593899,c==16?m:l);f=c=f-1;var m=d;c>0?a=c=16:(c=16,a=17);break;case 17:_PyFile_WriteString(__str603900,c==15?l:m);a=18;break;case 18:return;default:assert(0,"bad label: "+a)}} -function _handle_system_exit(){var g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var e;for(e=-1;;)switch(e){case -1:var b=g,a=g+4,c=g+8,d,f,h;d=0;e=HEAP[_Py_InspectFlag]!=0?17:1;break;case 1:_PyErr_Fetch(b,a,c);e=_Py_FlushLine()!=0?2:3;break;case 2:_PyErr_Clear();e=3;break;case 3:_fflush(HEAP[_stdout]);e=HEAP[a]==0|HEAP[a]==__Py_NoneStruct?16:4;break;case 4:e=HEAP[HEAP[a]+4]==_PyInstance_Type?6:5;break;case 5:e=(HEAP[HEAP[HEAP[a]+4]+84]&1073741824)!=0?6:10;break;case 6:f=e=_PyObject_GetAttrString(HEAP[a], -__str613901);e=e!=0?7:10;break;case 7:e=HEAP[a];HEAP[e]-=1;e=HEAP[e]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[a]+4]+24]](HEAP[a]);e=9;break;case 9:HEAP[a]=f;e=f==__Py_NoneStruct?16:10;break;case 10:e=(HEAP[HEAP[HEAP[a]+4]+84]&8388608)!=0?11:12;break;case 11:d=_PyInt_AsLong(HEAP[a]);e=16;break;case 12:h=_PySys_GetObject(__str283868);e=h==0|h==__Py_NoneStruct?14:13;break;case 13:_PyFile_WriteObject(HEAP[a],h,1);e=15;break;case 14:_PyObject_Print(HEAP[a],HEAP[_stderr],1);_fflush(HEAP[_stderr]); -e=15;break;case 15:_PySys_WriteStderr(__str583898,allocate(1,"i32",ALLOC_STACK));d=1;e=16;break;case 16:_PyErr_Restore(HEAP[b],HEAP[a],HEAP[c]);_PyErr_Clear();_Py_Exit(d);e=17;break;case 17:STACKTOP=g;return;default:assert(0,"bad label: "+e)}} -function _PyErr_PrintEx(g){var e=STACKTOP;STACKTOP+=24;_memset(e,0,24);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f=e+4,h=e+8,j,k,l,m=e+12,n=e+16,o=e+20;a=g;b=_PyErr_ExceptionMatches(HEAP[_PyExc_SystemExit])!=0?1:2;break;case 1:_handle_system_exit();b=2;break;case 2:_PyErr_Fetch(d,f,h);b=HEAP[d]==0?42:3;break;case 3:_PyErr_NormalizeException(d,f,h);b=HEAP[d]==0?42:4;break;case 4:b=a!=0?5:6;break;case 5:_PySys_SetObject(__str623902,HEAP[d]);_PySys_SetObject(__str633903,HEAP[f]);_PySys_SetObject(__str643904, -HEAP[h]);b=6;break;case 6:j=_PySys_GetObject(__str653905);b=j==0|j==__Py_NoneStruct?32:7;break;case 7:b=HEAP[h]!=0?8:9;break;case 8:c=HEAP[h];b=10;break;case 9:c=__Py_NoneStruct;b=10;break;case 10:k=_PyTuple_Pack(3,allocate([HEAP[d],0,0,0,HEAP[f],0,0,0,c,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));l=b=_PyEval_CallObjectWithKeywords(j,k,0);b=b==0?11:27;break;case 11:b=_PyErr_ExceptionMatches(HEAP[_PyExc_SystemExit])!=0?12:13;break; -case 12:_handle_system_exit();b=13;break;case 13:_PyErr_Fetch(m,n,o);_PyErr_NormalizeException(m,n,o);b=HEAP[m]==0?14:15;break;case 14:HEAP[m]=__Py_NoneStruct;HEAP[HEAP[m]]+=1;b=15;break;case 15:b=HEAP[n]==0?16:17;break;case 16:HEAP[n]=__Py_NoneStruct;HEAP[HEAP[n]]+=1;b=17;break;case 17:b=_Py_FlushLine()!=0?18:19;break;case 18:_PyErr_Clear();b=19;break;case 19:_fflush(HEAP[_stdout]);_PySys_WriteStderr(__str663906,allocate(1,"i32",ALLOC_STACK));_PyErr_Display(HEAP[m],HEAP[n],HEAP[o]);_PySys_WriteStderr(__str673907, -allocate(1,"i32",ALLOC_STACK));_PyErr_Display(HEAP[d],HEAP[f],HEAP[h]);b=HEAP[m];HEAP[b]-=1;b=HEAP[b]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);b=21;break;case 21:b=HEAP[n];HEAP[b]-=1;b=HEAP[b]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);b=23;break;case 23:b=HEAP[o]!=0?24:26;break;case 24:b=HEAP[o];HEAP[b]-=1;b=HEAP[b]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[HEAP[o]+4]+24]](HEAP[o]);b=26;break;case 26:b=l!=0?27:29;break;case 27:HEAP[l]-= -1;b=HEAP[l]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=29;break;case 29:b=k!=0?30:33;break;case 30:HEAP[k]-=1;b=HEAP[k]==0?31:33;break;case 31:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=33;break;case 32:_PySys_WriteStderr(__str683908,allocate(1,"i32",ALLOC_STACK));_PyErr_Display(HEAP[d],HEAP[f],HEAP[h]);b=33;break;case 33:b=HEAP[d]!=0?34:36;break;case 34:b=HEAP[d];HEAP[b]-=1;b=HEAP[b]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+4]+24]](HEAP[d]);b=36;break;case 36:b=HEAP[f]!= -0?37:39;break;case 37:b=HEAP[f];HEAP[b]-=1;b=HEAP[b]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[HEAP[f]+4]+24]](HEAP[f]);b=39;break;case 39:b=HEAP[h]!=0?40:42;break;case 40:b=HEAP[h];HEAP[b]-=1;b=HEAP[b]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);b=42;break;case 42:STACKTOP=e;return;default:assert(0,"bad label: "+b)}} -function _PyErr_Display(g,e,b){var a=STACKTOP;STACKTOP+=30;_memset(a,0,30);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m=a,n=a+4,o=a+8,p=a+12,q=a+16,r=a+20,u,s,t,v,w;f=g;h=e;j=b;k=0;l=_PySys_GetObject(__str283868);HEAP[h]+=1;c=l==0|l==__Py_NoneStruct?1:2;break;case 1:_fwrite(__str693909,1,16,HEAP[_stderr]);c=58;break;case 2:c=_Py_FlushLine()!=0?3:4;break;case 3:_PyErr_Clear();c=4;break;case 4:_fflush(HEAP[_stdout]);c=j!=0&j!=__Py_NoneStruct?5:6;break;case 5:var x=_PyTraceBack_Print(j, -l);k=x;d=5;c=7;break;case 6:var y=k,d=6;c=7;break;case 7:c=(d==6?y:x)==0?8:20;break;case 8:c=_PyObject_HasAttrString(h,__str703910)!=0?9:20;break;case 9:c=_parse_syntax_error(h,m,n,p,q,o)==0?10:11;break;case 10:_PyErr_Clear();c=20;break;case 11:_PyFile_WriteString(__str713911,l);c=HEAP[n]==0?12:13;break;case 12:_PyFile_WriteString(__str723912,l);c=14;break;case 13:_PyFile_WriteString(HEAP[n],l);c=14;break;case 14:_PyFile_WriteString(__str733913,l);_PyOS_snprintf(r,10,__str743914,allocate([HEAP[p], -0,0,0],["i32",0,0,0],ALLOC_STACK));_PyFile_WriteString(r,l);_PyFile_WriteString(__str583898,l);c=HEAP[o]!=0?15:16;break;case 15:_print_error_text(l,HEAP[q],HEAP[o]);c=16;break;case 16:HEAP[h]-=1;c=HEAP[h]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);c=18;break;case 18:h=HEAP[m];c=_PyErr_Occurred()!=0?19:20;break;case 19:k=-1;c=43;break;case 20:c=k==0?21:57;break;case 21:c=HEAP[f+4]==_PyClass_Type?24:22;break;case 22:c=HEAP[HEAP[f+4]+84]>=0?42:23;break;case 23:c=(HEAP[f+84]&1073741824)!= -0?24:42;break;case 24:var z=f;c=HEAP[f+4]==_PyClass_Type?25:26;break;case 25:var C=HEAP[z+16]+20,d=25;c=27;break;case 26:var A=HEAP[z+12],d=26;c=27;break;case 27:s=c=d==26?A:C;c=c!=0?28:30;break;case 28:t=_strrchr(s,46);c=t!=0?29:30;break;case 29:s=t+1;c=30;break;case 30:u=c=_PyObject_GetAttrString(f,__str753915);c=c==0?31:32;break;case 31:var G=_PyFile_WriteString(__str763916,l);k=G;d=31;c=38;break;case 32:v=_PyString_AsString(u);c=v!=0?33:35;break;case 33:c=_strcmp(v,__str193859)!=0?34:35;break; -case 34:k=_PyFile_WriteString(v,l);c=_PyFile_WriteString(__str773917,l);k+=c;c=35;break;case 35:HEAP[u]-=1;c=HEAP[u]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);c=37;break;case 37:var E=k,d=37;c=38;break;case 38:c=(d==37?E:G)==0?39:43;break;case 39:c=s==0?40:41;break;case 40:var D=_PyFile_WriteString(__str763916,l);k=D;d=40;c=44;break;case 41:var R=_PyFile_WriteString(s,l);k=R;d=41;c=44;break;case 42:var M=_PyFile_WriteObject(f,l,1);k=M;d=42;c=44;break;case 43:var L=k,d=43;c=44;break; -case 44:c=(d==43?L:d==40?D:d==41?R:M)==0?45:57;break;case 45:c=h!=__Py_NoneStruct?46:57;break;case 46:w=_PyObject_Str(h);c=w==0?47:48;break;case 47:k=-1;c=54;break;case 48:c=(HEAP[HEAP[w+4]+84]&134217728)==0?50:49;break;case 49:c=HEAP[w+8]!=0?50:51;break;case 50:var I=_PyFile_WriteString(__str783918,l);k=I;d=50;c=52;break;case 51:var J=k,d=51;c=52;break;case 52:c=(d==51?J:I)==0?53:54;break;case 53:k=_PyFile_WriteObject(w,l,1);c=54;break;case 54:c=w!=0?55:57;break;case 55:HEAP[w]-=1;c=HEAP[w]==0?56: -57;break;case 56:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);c=57;break;case 57:c=_PyFile_WriteString(__str583898,l);k+=c;c=58;break;case 58:HEAP[h]-=1;c=HEAP[h]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);c=60;break;case 60:c=k!=0?61:62;break;case 61:_PyErr_Clear();c=62;break;case 62:STACKTOP=a;return;default:assert(0,"bad label: "+c)}} -function _PyRun_StringFlags(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;l=c;n=0;p=_PyArena_New();d=p==0?1:2;break;case 1:m=0;d=5;break;case 2:o=_PyParser_ASTFromString(f,__str723912,h,l,p);d=o!=0?3:4;break;case 3:n=_run_mod(o,__str723912,j,k,l,p);d=4;break;case 4:_PyArena_Free(p);m=n;d=5;break;case 5:return g=m;default:assert(0,"bad label: "+d)}} -function _PyRun_FileExFlags(g,e,b,a,c,d,f){var h,j=null;for(h=-1;;)switch(h){case -1:var k,l,m,n,o,p,q,r,u,s;k=g;l=e;m=b;n=a;o=c;p=d;q=f;s=_PyArena_New();h=s==0?1:2;break;case 1:r=0;h=7;break;case 2:var t=_PyParser_ASTFromFile(k,l,m,0,0,q,0,s);u=t;p!=0?(j=2,h=3):(j=2,h=4);break;case 3:_fclose(k);var v=u,j=3;h=4;break;case 4:h=(j==3?v:t)==0?5:6;break;case 5:_PyArena_Free(s);r=0;h=7;break;case 6:h=_run_mod(u,l,n,o,q,s);_PyArena_Free(s);r=h;h=7;break;case 7:return g=r;default:assert(0,"bad label: "+ -h)}}function _run_mod(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m;f=g;h=e;j=b;k=a;h=_PyAST_Compile(f,h,c,d);f=h==0?1:2;break;case 1:l=0;f=5;break;case 2:m=_PyEval_EvalCode(h,j,k);HEAP[h]-=1;f=HEAP[h]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);f=4;break;case 4:l=m;f=5;break;case 5:return g=l;default:assert(0,"bad label: "+f)}} -function _run_pyc_file(g,e,b,a,c){for(e=-1;;)switch(e){case -1:var d,f,h,j,k,l,m;d=g;f=b;h=a;j=c;e=_PyMarshal_ReadLongFromFile(d);e=_PyImport_GetMagicNumber()!=e?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str793919);k=0;e=14;break;case 2:_PyMarshal_ReadLongFromFile(d);m=_PyMarshal_ReadLastObjectFromFile(d);_fclose(d);e=m==0?7:3;break;case 3:var n=m,e=HEAP[n+4]!=_PyCode_Type?4:8;break;case 4:e=n!=0?5:7;break;case 5:HEAP[m]-=1;e=HEAP[m]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);e=7;break;case 7:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str803920);k=0;e=14;break;case 8:l=m;m=_PyEval_EvalCode(l,f,h);e=m!=0?9:11;break;case 9:e=j!=0?10:11;break;case 10:HEAP[j]|=HEAP[l+20]&253952;e=11;break;case 11:HEAP[l]-=1;e=HEAP[l]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=13;break;case 13:k=m;e=14;break;case 14:return g=k;default:assert(0,"bad label: "+e)}} -function _Py_CompileStringFlags(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;m=_PyArena_New();c=m==0?1:2;break;case 1:k=0;c=8;break;case 2:l=_PyParser_ASTFromString(d,f,h,j,m);c=l==0?3:4;break;case 3:_PyArena_Free(m);k=0;c=8;break;case 4:c=j!=0?5:7;break;case 5:c=(HEAP[j]&1024)!=0?6:7;break;case 6:c=_PyAST_mod2obj(l);_PyArena_Free(m);k=c;c=8;break;case 7:c=_PyAST_Compile(l,f,j,m);_PyArena_Free(m);k=c;c=8;break;case 8:return g=k;default:assert(0,"bad label: "+c)}} -function _Py_SymtableString(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m;d=g;f=e;h=b;m=_PyArena_New();c=m==0?1:2;break;case 1:j=0;c=5;break;case 2:HEAP[l]=0;k=_PyParser_ASTFromString(d,f,h,l,m);c=k==0?3:4;break;case 3:_PyArena_Free(m);j=0;c=5;break;case 4:c=_PySymtable_Build(k,f,0);_PyArena_Free(m);j=c;c=5;break;case 5:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyParser_ASTFromString(g,e,b,a,c){var d=STACKTOP;STACKTOP+=36;_memset(d,0,36);var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p,q,r,u,s=d,t=d+4,v=d+32,w;j=g;k=e;l=b;m=a;n=c;f=m!=0?1:11;break;case 1:f=(HEAP[m]&512)!=0?2:3;break;case 2:r=2;f=4;break;case 3:r=0;f=4;break;case 4:f=(HEAP[m]&65536)!=0?5:6;break;case 5:q=4;f=7;break;case 6:q=0;f=7;break;case 7:var x=r,y=q;f=(HEAP[m]&131072)!=0?8:9;break;case 8:p=8;f=10;break;case 9:p=0;f=10;break;case 10:u=y|x|p;f=12;break;case 11:u= -0;f=12;break;case 12:HEAP[v]=u;var z=_PyParser_ParseStringFlagsFilenameEx(j,k,__PyParser_Grammar,l,t,v);w=z;m==0?(h=12,f=13):(h=12,f=14);break;case 13:HEAP[s]=0;m=s;var C=w,h=13;f=14;break;case 14:f=(h==13?C:z)!=0?15:16;break;case 15:HEAP[m]|=HEAP[v]&253952;f=_PyAST_FromNode(w,m,k,n);_PyNode_Free(w);o=f;f=17;break;case 16:_err_input(t);o=0;f=17;break;case 17:return g=o,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _PyParser_ASTFromFile(g,e,b,a,c,d,f,h){var j=STACKTOP;STACKTOP+=36;_memset(j,0,36);var k,l=null;for(k=-1;;)switch(k){case -1:var m,n,o,p,q,r,u,s,t,v,w,x,y,z=j,C=j+4,A=j+32,G;m=g;n=e;o=b;p=a;q=c;r=d;u=f;s=h;k=r!=0?1:11;break;case 1:k=(HEAP[r]&512)!=0?2:3;break;case 2:x=2;k=4;break;case 3:x=0;k=4;break;case 4:k=(HEAP[r]&65536)!=0?5:6;break;case 5:w=4;k=7;break;case 6:w=0;k=7;break;case 7:var E=x,D=w;k=(HEAP[r]&131072)!=0?8:9;break;case 8:v=8;k=10;break;case 9:v=0;k=10;break;case 10:y=D|E|v; -k=12;break;case 11:y=0;k=12;break;case 12:HEAP[A]=y;var R=_PyParser_ParseFileFlagsEx(m,n,__PyParser_Grammar,o,p,q,C,A);G=R;r==0?(l=12,k=13):(l=12,k=14);break;case 13:HEAP[z]=0;r=z;var M=G,l=13;k=14;break;case 14:k=(l==13?M:R)!=0?15:16;break;case 15:HEAP[r]|=HEAP[A]&253952;k=_PyAST_FromNode(G,r,n,s);_PyNode_Free(G);t=k;k=19;break;case 16:_err_input(C);k=u!=0?17:18;break;case 17:HEAP[u]=HEAP[C];k=18;break;case 18:t=0;k=19;break;case 19:return g=t,STACKTOP=j,g;default:assert(0,"bad label: "+k)}} -function _PyParser_SimpleParseFileFlags(g,e,b,a){var c=STACKTOP;STACKTOP+=28;_memset(c,0,28);var d;for(d=-1;;)switch(d){case -1:var f=c,h;h=_PyParser_ParseFileFlags(g,e,__PyParser_Grammar,b,0,0,f,a);d=h==0?1:2;break;case 1:_err_input(f);d=2;break;case 2:return g=h,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyParser_SimpleParseStringFlags(g,e,b){var a=STACKTOP;STACKTOP+=28;_memset(a,0,28);var c;for(c=-1;;)switch(c){case -1:var d=a,f;f=_PyParser_ParseStringFlags(g,__PyParser_Grammar,e,d,b);c=f==0?1:2;break;case 1:_err_input(d);c=2;break;case 2:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyParser_SimpleParseStringFlagsFilename(g,e,b,a){var c=STACKTOP;STACKTOP+=28;_memset(c,0,28);var d;for(d=-1;;)switch(d){case -1:var f=c,h;h=_PyParser_ParseStringFlagsFilename(g,e,__PyParser_Grammar,b,f,a);d=h==0?1:2;break;case 1:_err_input(f);d=2;break;case 2:return g=h,STACKTOP=c,g;default:assert(0,"bad label: "+d)}}function _PyParser_SimpleParseStringFilename(g,e,b){return _PyParser_SimpleParseStringFlagsFilename(g,e,b,0)}function _PyParser_SetError(g){_err_input(g)} -function _err_input(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l=e,m=e+4,n=e+8;c=g;k=j=0;h=HEAP[_PyExc_SyntaxError];b=HEAP[c];b=b==11?14:b==12?11:b==13?8:b==14?1:b==15?13:b==17?49:b==18?15:b==19?16:b==20?18:b==21?17:b==22?19:b==23?9:b==24?10:b==25?34:35;break;case 1:h=HEAP[_PyExc_IndentationError];b=HEAP[c+24]==5?2:3;break;case 2:k=__str813921;b=36;break;case 3:b=HEAP[c+20]==5?4:5;break;case 4:k=__str823922;b=36;break;case 5:b=HEAP[c+20]== -6?6:7;break;case 6:k=__str833923;b=36;break;case 7:h=HEAP[_PyExc_SyntaxError];k=__str843924;b=36;break;case 8:k=__str853925;b=36;break;case 9:k=__str863926;b=36;break;case 10:k=__str873927;b=36;break;case 11:b=_PyErr_Occurred()==0?12:47;break;case 12:_PyErr_SetNone(HEAP[_PyExc_KeyboardInterrupt]);b=47;break;case 13:_PyErr_NoMemory();b=47;break;case 14:k=__str883928;b=36;break;case 15:h=HEAP[_PyExc_TabError];k=__str893929;b=36;break;case 16:k=__str903930;b=36;break;case 17:h=HEAP[_PyExc_IndentationError]; -k=__str913931;b=36;break;case 18:h=HEAP[_PyExc_IndentationError];k=__str923932;b=36;break;case 19:_PyErr_Fetch(l,m,n);b=HEAP[m]!=0?20:22;break;case 20:j=_PyObject_Str(HEAP[m]);b=j!=0?21:22;break;case 21:var o=_PyString_AsString(j);k=o;a=21;b=23;break;case 22:var p=k,a=22;b=23;break;case 23:b=(a==22?p:o)==0?24:25;break;case 24:k=__str933933;b=25;break;case 25:b=HEAP[l]!=0?26:28;break;case 26:b=HEAP[l];HEAP[b]-=1;b=HEAP[b]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);b=28; -break;case 28:b=HEAP[m]!=0?29:31;break;case 29:b=HEAP[m];HEAP[b]-=1;b=HEAP[b]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);b=31;break;case 31:b=HEAP[n]!=0?32:36;break;case 32:b=HEAP[n];HEAP[b]-=1;b=HEAP[b]==0?33:36;break;case 33:FUNCTION_TABLE[HEAP[HEAP[HEAP[n]+4]+24]](HEAP[n]);b=36;break;case 34:k=__str943934;b=36;break;case 35:_fprintf(HEAP[_stderr],__str953935,allocate([HEAP[c],0,0,0],["i32",0,0,0],ALLOC_STACK));k=__str963936;b=36;break;case 36:d=b=_Py_BuildValue(__str973937, -allocate([HEAP[c+4],0,0,0,HEAP[c+8],0,0,0,HEAP[c+12],0,0,0,HEAP[c+16],0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));f=0;b=b!=0?37:38;break;case 37:f=_Py_BuildValue(__str983938,allocate([k,0,0,0,d,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=38;break;case 38:b=j!=0?39:41;break;case 39:HEAP[j]-=1;b=HEAP[j]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=41;break;case 41:b=d!=0?42:44;break;case 42:HEAP[d]-=1;b=HEAP[d]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);b=44;break;case 44:_PyErr_SetObject(h,f);b=f!=0?45:47;break;case 45:HEAP[f]-=1;b=HEAP[f]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=47;break;case 47:b=HEAP[c+16]!=0?48:49;break;case 48:_free(HEAP[c+16]);HEAP[c+16]=0;b=49;break;case 49:STACKTOP=e;return;default:assert(0,"bad label: "+b)}}function _Py_FatalError(g){_fprintf(HEAP[_stderr],__str993939,allocate([g,0,0,0],["i8*",0,0,0],ALLOC_STACK));_fflush(HEAP[_stderr]);_abort();throw"Reached an unreachable!";} -function _Py_AtExit(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_nexitfuncs]>31?1:2;break;case 1:a=-1;e=3;break;case 2:e=HEAP[_nexitfuncs];HEAP[_exitfuncs+e*4]=b;HEAP[_nexitfuncs]=e+1;a=0;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _call_sys_exitfunc(){var g;for(g=-1;;)switch(g){case -1:var e;e=_PySys_GetObject(__str1003940);g=e!=0?1:7;break;case 1:HEAP[e]+=1;_PySys_SetObject(__str1003940,0);g=_PyEval_CallObjectWithKeywords(e,0,0);g=g==0?2:5;break;case 2:g=_PyErr_ExceptionMatches(HEAP[_PyExc_SystemExit])==0?3:4;break;case 3:_PySys_WriteStderr(__str1013941,allocate(1,"i32",ALLOC_STACK));g=4;break;case 4:_PyErr_Print();g=5;break;case 5:HEAP[e]-=1;g=HEAP[e]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[e+4]+24]](e);g=7; -break;case 7:g=_Py_FlushLine()!=0?8:9;break;case 8:_PyErr_Clear();g=9;break;case 9:return;default:assert(0,"bad label: "+g)}}function _call_ll_exitfuncs(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_nexitfuncs]>0?1:2;break;case 1:HEAP[_nexitfuncs]-=1;FUNCTION_TABLE[HEAP[_exitfuncs+HEAP[_nexitfuncs]*4]]();g=HEAP[_nexitfuncs]>0?1:2;break;case 2:_fflush(HEAP[_stdout]);_fflush(HEAP[_stderr]);return;default:assert(0,"bad label: "+g)}} -function _Py_Exit(g){_Py_Finalize();_exit(g);throw"Reached an unreachable!";}function _initsigs(){_PyOS_setsig(13,1);_PyOS_setsig(25,1);_PyOS_InitInterrupts()} -function _Py_FdIsInteractive(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;b=_fileno(b);b=_isatty(b)!=0?1:2;break;case 1:d=1;b=10;break;case 2:b=HEAP[_Py_InteractiveFlag]==0?3:4;break;case 3:d=0;b=10;break;case 4:b=a==0?7:5;break;case 5:b=_strcmp(a,__str1023942)==0?7:6;break;case 6:b=_strcmp(a,__str413881)==0?7:8;break;case 7:c=1;b=9;break;case 8:c=0;b=9;break;case 9:d=c;b=10;break;case 10:return a=d;default:assert(0,"bad label: "+b)}} -function _PyOS_getsig(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=_signal(b,1);e=a!=-1?1:2;break;case 1:_signal(b,a);e=2;break;case 2:return g=a;default:assert(0,"bad label: "+e)}}function _PyOS_setsig(g,e){return _signal(g,e)}function _PyParser_SimpleParseFile(g,e,b){return _PyParser_SimpleParseFileFlags(g,e,b,0)}function _PyParser_SimpleParseString(g,e){return _PyParser_SimpleParseStringFlags(g,e,0)}function _PyRun_AnyFile(g,e){return _PyRun_AnyFileExFlags(g,e,0,0)} -function _PyRun_AnyFileEx(g,e,b){return _PyRun_AnyFileExFlags(g,e,b,0)}function _PyRun_AnyFileFlags(g,e,b){return _PyRun_AnyFileExFlags(g,e,0,b)}function _PyRun_File(g,e,b,a,c){return _PyRun_FileExFlags(g,e,b,a,c,0,0)}function _PyRun_FileEx(g,e,b,a,c,d){return _PyRun_FileExFlags(g,e,b,a,c,d,0)}function _PyRun_FileFlags(g,e,b,a,c,d){return _PyRun_FileExFlags(g,e,b,a,c,0,d)}function _PyRun_SimpleFile(g,e){return _PyRun_SimpleFileExFlags(g,e,0,0)} -function _PyRun_SimpleFileEx(g,e,b){return _PyRun_SimpleFileExFlags(g,e,b,0)}function _PyRun_String(g,e,b,a){return _PyRun_StringFlags(g,e,b,a,0)}function _PyRun_SimpleString(g){return _PyRun_SimpleStringFlags(g,0)}function _Py_CompileString(g,e,b){return _Py_CompileStringFlags(g,e,b,0)}function _PyRun_InteractiveOne(g,e){return _PyRun_InteractiveOneFlags(g,e,0)}function _PyRun_InteractiveLoop(g,e){return _PyRun_InteractiveLoopFlags(g,e,0)} -function _get_len_of_range3977(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;f=e;var k=h=b;k<=0?(c=-1,a=4):(c=-1,a=1);break;case 1:a=d>=f?3:2;break;case 2:j=Math.floor((f+-1+(0-d))/h)+1;a=8;break;case 3:var l=h,c=3;a=4;break;case 4:a=(c==3?l:k)>=0?7:5;break;case 5:a=d<=f?7:6;break;case 6:j=Math.floor((d+-1+(0-f))/(0-h))+1;a=8;break;case 7:j=0;a=8;break;case 8:return g=j;default:assert(0,"bad label: "+a)}} -function _range_new(g,e,b){g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=g,j=g+4,k=g+8,l;c=e;a=b;HEAP[h]=0;HEAP[j]=0;HEAP[k]=1;a=__PyArg_NoKeywords(__str3957,a)==0?1:2;break;case 1:d=0;a=14;break;case 2:a=_PyTuple_Size(c);var m=c;a=a<=1?3:5;break;case 3:a=_PyArg_ParseTuple(m,__str13958,allocate([j,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?4:7;break;case 4:d=0;a=14;break;case 5:a=_PyArg_ParseTuple(m,__str23959,allocate([h,0,0,0,j,0,0,0,k,0,0,0],["i32*",0,0,0,"i32*", -0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?6:7;break;case 6:d=0;a=14;break;case 7:a=HEAP[k]==0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_ValueError],__str33960);d=0;a=14;break;case 9:l=_get_len_of_range3977(HEAP[h],HEAP[j],HEAP[k]);a=l<0?10:11;break;case 10:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str43961);d=0;a=14;break;case 11:f=__PyObject_New(_PyRange_Type);a=f==0?12:13;break;case 12:d=0;a=14;break;case 13:HEAP[f+8]=HEAP[h];HEAP[f+16]=l;HEAP[f+12]=HEAP[k];d=f;a=14;break;case 14:return e=d, -STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _range_item(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=c<0?2:1;break;case 1:b=HEAP[a+16]<=c?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_IndexError],__str53963);d=0;b=4;break;case 3:d=_PyInt_FromLong(c*HEAP[a+12]+HEAP[a+8]);b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}}function _range_length(g){return HEAP[g+16]} -function _range_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]!=0?3:1;break;case 1:e=HEAP[b+12]!=1?3:2;break;case 2:a=_PyString_FromFormat(__str63964,allocate([HEAP[b+12]*HEAP[b+16]+HEAP[b+8],0,0,0],["i32",0,0,0],ALLOC_STACK));e=6;break;case 3:var c=b;e=HEAP[b+12]==1?4:5;break;case 4:a=_PyString_FromFormat(__str73965,allocate([HEAP[b+8],0,0,0,HEAP[b+12]*HEAP[b+16]+HEAP[c+8],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));e=6;break;case 5:a=_PyString_FromFormat(__str83966,allocate([HEAP[b+ -8],0,0,0,HEAP[b+12]*HEAP[b+16]+HEAP[b+8],0,0,0,HEAP[c+12],0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}}function _range_reduce(g){return _Py_BuildValue(__str93967,allocate([HEAP[g+4],0,0,0,HEAP[g+8],0,0,0,HEAP[g+12]*HEAP[g+16]+HEAP[g+8],0,0,0,HEAP[g+12],0,0,0],["%struct.PyTypeObject*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK))} -function _rangeiter_next(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+8]0?13:15;break;case 13:h=o;a=36;break;case 14:h=_set_lookkey(c,d,f);a=36;break;case 15:l=0;a=16;break;case 16:k=f;a=17;break;case 17:j=j+1+j*4+k;o=n+8*(m&j);a=HEAP[o+4]==0?18:20;break;case 18:a=l!=0?19:35;break;case 19:o=l;a=35;break;case 20:a=HEAP[o+4]==d?35:21;break;case 21:a=HEAP[o]!=f?31:22;break;case 22:a=HEAP[o+4]==HEAP[_dummy3978]?31:23;break;case 23:q=HEAP[o+4];HEAP[q]+=1;p=_PyObject_RichCompareBool(q, -d,2);HEAP[q]-=1;a=HEAP[q]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=25;break;case 25:a=p<0?26:27;break;case 26:h=0;a=36;break;case 27:a=HEAP[c+20]!=n?30:28;break;case 28:a=HEAP[o+4]!=q?30:29;break;case 29:a=p>0?35:34;break;case 30:h=_set_lookkey(c,d,f);a=36;break;case 31:a=HEAP[o+4]==HEAP[_dummy3978]?32:34;break;case 32:a=l==0?33:34;break;case 33:l=o;a=34;break;case 34:k=k>>>0>>>5;a=17;break;case 35:h=o;a=36;break;case 36:return g=h;default:assert(0,"bad label: "+a)}} -function _set_lookkey_string(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;f=b;n=HEAP[c+16];o=HEAP[c+20];a=HEAP[d+4]!=_PyString_Type?1:2;break;case 1:HEAP[c+24]=152;j=_set_lookkey(c,d,f);a=26;break;case 2:k=n&f;p=o+8*k;a=HEAP[p+4]==0?4:3;break;case 3:a=HEAP[p+4]==d?4:5;break;case 4:j=p;a=26;break;case 5:var q=p;a=HEAP[p+4]==HEAP[_dummy3978]?6:7;break;case 6:m=q;a=11;break;case 7:a=HEAP[q]==f?8:10;break;case 8:a=__PyString_Eq(HEAP[p+4],d)!=0?9:10;break;case 9:j=p;a=26; -break;case 10:m=0;a=11;break;case 11:l=f;a=12;break;case 12:k=k+1+k*4+l;p=o+8*(n&k);a=HEAP[p+4]==0?13:17;break;case 13:a=m==0?14:15;break;case 14:h=p;a=16;break;case 15:h=m;a=16;break;case 16:j=h;a=26;break;case 17:a=HEAP[p+4]==d?21:18;break;case 18:a=HEAP[p]!=f?22:19;break;case 19:a=HEAP[p+4]==HEAP[_dummy3978]?22:20;break;case 20:a=__PyString_Eq(HEAP[p+4],d)!=0?21:22;break;case 21:j=p;a=26;break;case 22:a=HEAP[p+4]==HEAP[_dummy3978]?23:25;break;case 23:a=m==0?24:25;break;case 24:m=p;a=25;break;case 25:l= -l>>>0>>>5;a=12;break;case 26:return g=j;default:assert(0,"bad label: "+a)}} -function _set_insert_key(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=FUNCTION_TABLE[HEAP[c+24]](c,d,f);a=j==0?1:2;break;case 1:h=-1;a=10;break;case 2:a=HEAP[j+4]==0?3:4;break;case 3:HEAP[c+8]+=1;HEAP[j+4]=d;HEAP[j]=f;HEAP[c+12]+=1;a=9;break;case 4:a=HEAP[j+4]==HEAP[_dummy3978]?5:7;break;case 5:HEAP[j+4]=d;HEAP[j]=f;HEAP[c+12]+=1;a=HEAP[_dummy3978];HEAP[a]-=1;a=HEAP[a]==0?6:9;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[_dummy3978]+4]+24]](HEAP[_dummy3978]);a=9;break;case 7:HEAP[d]-= -1;a=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=9;break;case 9:h=0;a=10;break;case 10:return g=h;default:assert(0,"bad label: "+a)}}function _set_insert_clean(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;k=HEAP[c+16];l=HEAP[c+20];h=k&f;m=l+8*h;j=f;a=(HEAP[m+4]|0)!=0?1:2;break;case 1:h=h+1+h*4+j;m=l+8*(k&h);j=j>>>0>>>5;a=(HEAP[m+4]|0)!=0?1:2;break;case 2:HEAP[c+8]+=1;HEAP[m+4]=d;HEAP[m]=f;HEAP[c+12]+=1;return;default:assert(0,"bad label: "+a)}} -function _set_table_resize(g,e){var b=STACKTOP;STACKTOP+=64;_memset(b,0,64);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q=b;d=g;f=e;k=8;8<=f?(c=-1,a=1):(c=-1,a=4);break;case 1:var r=(c==1?r:8)<<1;k=r;r<=f&r>0?a=c=1:(c=1,a=2);break;case 2:a=r<=0?3:4;break;case 3:_PyErr_NoMemory();j=-1;a=28;break;case 4:l=HEAP[d+20];p=d+28!=l;a=k==8?5:9;break;case 5:m=d+28;a=m==l?6:18;break;case 6:a=HEAP[d+8]==HEAP[d+12]?7:8;break;case 7:j=0;a=28;break;case 8:_llvm_memcpy_p0i8_p0i8_i32(q,l,64, -1,0);l=q;a=18;break;case 9:a=k<=268435455?10:15;break;case 10:a=k*8>=0?11:14;break;case 11:a=k*8!=0?12:13;break;case 12:h=k*8;a=16;break;case 13:h=1;a=16;break;case 14:m=0;a=17;break;case 15:m=0;a=17;break;case 16:m=a=_malloc(h);a=a==0?17:18;break;case 17:_PyErr_NoMemory();j=-1;a=28;break;case 18:HEAP[d+20]=m;HEAP[d+16]=k-1;_llvm_memset_p0i8_i32(m,0,k*8,1,0);HEAP[d+12]=0;o=HEAP[d+8];HEAP[d+8]=0;n=l;a=o>0?19:25;break;case 19:a=HEAP[n+4]!=0?20:24;break;case 20:a=HEAP[n+4]==HEAP[_dummy3978];o-=1;var u= -n;a=a?21:23;break;case 21:a=HEAP[u+4];HEAP[a]-=1;a=HEAP[a]==0?22:24;break;case 22:FUNCTION_TABLE[HEAP[HEAP[HEAP[n+4]+4]+24]](HEAP[n+4]);a=24;break;case 23:_set_insert_clean(d,HEAP[n+4],HEAP[u]);a=24;break;case 24:n+=8;a=o>0?19:25;break;case 25:a=p!=0?26:27;break;case 26:_free(l);a=27;break;case 27:j=0;a=28;break;case 28:return c=j,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _set_add_entry(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=HEAP[c+4];b=HEAP[c];c=HEAP[a+12];HEAP[h]+=1;b=_set_insert_key(a,h,b)==-1?1:4;break;case 1:HEAP[h]-=1;b=HEAP[h]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=3;break;case 3:f=-1;b=11;break;case 4:b=HEAP[a+12]<=c?6:5;break;case 5:b=HEAP[a+8]*3<(HEAP[a+16]+1)*2?6:7;break;case 6:f=0;b=11;break;case 7:var j=HEAP[a+12];b=HEAP[a+12]>5E4?8:9;break;case 8:d=j*2;b=10;break;case 9:d=j*4;b=10;break;case 10:f= -_set_table_resize(a,d);b=11;break;case 11:return a=f;default:assert(0,"bad label: "+b)}} -function _set_add_key(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[c+4]!=_PyString_Type?2:1;break;case 1:h=HEAP[c+12];b=h==-1?2:4;break;case 2:h=b=_PyObject_Hash(c);b=b==-1?3:4;break;case 3:f=-1;b=15;break;case 4:j=HEAP[a+12];HEAP[c]+=1;b=_set_insert_key(a,c,h)==-1?5:8;break;case 5:HEAP[c]-=1;b=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=7;break;case 7:f=-1;b=15;break;case 8:b=HEAP[a+12]<=j?10:9;break;case 9:b=HEAP[a+8]*3<(HEAP[a+16]+1)*2?10:11;break; -case 10:f=0;b=15;break;case 11:var k=HEAP[a+12];b=HEAP[a+12]>5E4?12:13;break;case 12:d=k*2;b=14;break;case 13:d=k*4;b=14;break;case 14:f=_set_table_resize(a,d);b=15;break;case 15:return a=f;default:assert(0,"bad label: "+b)}} -function _set_discard_entry(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;b=e;d=FUNCTION_TABLE[HEAP[a+24]](a,HEAP[b+4],HEAP[b]);b=d==0?1:2;break;case 1:c=-1;b=8;break;case 2:b=HEAP[d+4]==0?4:3;break;case 3:b=HEAP[d+4]==HEAP[_dummy3978]?4:5;break;case 4:c=0;b=8;break;case 5:f=HEAP[d+4];HEAP[HEAP[_dummy3978]]+=1;HEAP[d+4]=HEAP[_dummy3978];HEAP[a+12]-=1;HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:c=1;b=8;break;case 8:return a=c;default:assert(0, -"bad label: "+b)}} -function _set_discard_key(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[c+4]!=_PyString_Type?2:1;break;case 1:f=HEAP[c+12];b=f==-1?2:4;break;case 2:f=b=_PyObject_Hash(c);b=b==-1?3:4;break;case 3:d=-1;b=12;break;case 4:h=b=FUNCTION_TABLE[HEAP[a+24]](a,c,f);b=b==0?5:6;break;case 5:d=-1;b=12;break;case 6:b=HEAP[h+4]==0?8:7;break;case 7:b=HEAP[h+4]==HEAP[_dummy3978]?8:9;break;case 8:d=0;b=12;break;case 9:j=HEAP[h+4];HEAP[HEAP[_dummy3978]]+=1;HEAP[h+4]=HEAP[_dummy3978];HEAP[a+ -12]-=1;HEAP[j]-=1;b=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=11;break;case 11:d=1;b=12;break;case 12:return a=d;default:assert(0,"bad label: "+b)}} -function _set_clear_internal(g){var e=STACKTOP;STACKTOP+=64;_memset(e,0,64);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j=e;a=g;d=HEAP[a+20];f=a+28!=d;h=HEAP[a+8];b=f!=0?1:2;break;case 1:_llvm_memset_p0i8_i32(a+28,0,64,1,0);HEAP[a+8]=0;HEAP[a+12]=HEAP[a+8];HEAP[a+20]=a+28;HEAP[a+16]=7;HEAP[a+92]=-1;b=5;break;case 2:b=h>0?4:3;break;case 3:c=d;b=10;break;case 4:_llvm_memcpy_p0i8_p0i8_i32(j,d,64,1,0);d=j;_llvm_memset_p0i8_i32(a+28,0,64,1,0);HEAP[a+8]=0;HEAP[a+12]=HEAP[a+8];HEAP[a+20]=a+28;HEAP[a+ -16]=7;HEAP[a+92]=-1;b=5;break;case 5:c=d;b=h>0?6:10;break;case 6:b=HEAP[c+4]!=0?7:9;break;case 7:h-=1;b=HEAP[c+4];HEAP[b]-=1;b=HEAP[b]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[c+4]+4]+24]](HEAP[c+4]);b=9;break;case 9:c+=8;b=h>0?6:10;break;case 10:b=f!=0?11:12;break;case 11:_free(d);b=12;break;case 12:return STACKTOP=e,0;default:assert(0,"bad label: "+b)}} -function _set_next(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;a=g;c=e;d=b;h=HEAP[c];k=HEAP[a+20];j=HEAP[a+16];a=2;break;case 1:h+=1;a=2;break;case 2:a=h>j?5:3;break;case 3:a=HEAP[k+8*h+4]==0?1:4;break;case 4:a=HEAP[k+8*h+4]==HEAP[_dummy3978]?1:5;break;case 5:HEAP[c]=h+1;a=h>j?6:7;break;case 6:f=0;a=8;break;case 7:HEAP[d]=k+8*h;f=1;a=8;break;case 8:return g=f;default:assert(0,"bad label: "+a)}} -function _set_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[b+8];_PyObject_GC_UnTrack(b);e=HEAP[__PyTrash_delete_nesting]<=49?1:17;break;case 1:HEAP[__PyTrash_delete_nesting]+=1;e=HEAP[b+96]!=0?2:3;break;case 2:_PyObject_ClearWeakRefs(b);e=3;break;case 3:a=HEAP[b+20];e=c>0?4:8;break;case 4:e=HEAP[a+4]!=0?5:7;break;case 5:c-=1;e=HEAP[a+4];HEAP[e]-=1;e=HEAP[e]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+4]+4]+24]](HEAP[a+4]);e=7;break;case 7:a+=8;e=c>0?4:8;break;case 8:e= -HEAP[b+20]!=b+28?9:10;break;case 9:_free(HEAP[b+20]);e=10;break;case 10:e=HEAP[_numfree3979]>79?14:11;break;case 11:e=HEAP[b+4]==_PySet_Type?13:12;break;case 12:e=HEAP[b+4]==_PyFrozenSet_Type?13:14;break;case 13:e=HEAP[_numfree3979];HEAP[_free_list3980+e*4]=b;HEAP[_numfree3979]=e+1;e=15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);e=15;break;case 15:HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?16:18;break;case 16:__PyTrash_destroy_chain(); -e=18;break;case 17:__PyTrash_deposit_object(b);e=18;break;case 18:return;default:assert(0,"bad label: "+e)}} -function _set_tp_print(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k,l,m;c=g;d=e;HEAP[j]=0;k=__str3981;l=__str13982;m=_Py_ReprEnter(c);a=m!=0?1:4;break;case 1:a=m<0?2:3;break;case 2:f=m;a=9;break;case 3:_fprintf(d,__str23983,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));f=0;a=9;break;case 4:_fprintf(d,__str33984,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=7;break;case 5:_fputs(k,d);k=l;a=_PyObject_Print(HEAP[HEAP[h]+ -4],d,0)!=0?6:7;break;case 6:_Py_ReprLeave(c);f=-1;a=9;break;case 7:a=_set_next(c,j,h)!=0?5:8;break;case 8:_fwrite(__str43985,1,2,d);_Py_ReprLeave(c);f=0;a=9;break;case 9:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _set_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;d=0;h=_Py_ReprEnter(b);e=h!=0?1:4;break;case 1:e=h<0?2:3;break;case 2:a=0;e=11;break;case 3:a=_PyString_FromFormat(__str23983,allocate([HEAP[HEAP[b+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));e=11;break;case 4:c=_PySequence_List(b);e=c==0?10:5;break;case 5:f=_PyObject_Repr(c);HEAP[c]-=1;e=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:e=f==0?10:8;break;case 8:d=_PyString_FromFormat(__str53986, -allocate([HEAP[HEAP[b+4]+12],0,0,0,f+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[f]-=1;e=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=10;break;case 10:_Py_ReprLeave(b);a=d;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}}function _set_len(g){return HEAP[g+12]} -function _set_merge(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;d=e;b=d==a?2:1;break;case 1:b=HEAP[d+12]==0?2:3;break;case 2:c=0;b=16;break;case 3:b=(HEAP[d+12]+HEAP[a+8])*3>=(HEAP[a+16]+1)*2?4:6;break;case 4:b=_set_table_resize(a,(HEAP[d+12]+HEAP[a+12])*2)!=0?5:6;break;case 5:c=-1;b=16;break;case 6:j=0;b=14;break;case 7:b=HEAP[d+20]+8*j;f=HEAP[b+4];h=HEAP[b];b=f!=0?8:13;break;case 8:b=f!=HEAP[_dummy3978]?9:13;break;case 9:HEAP[f]+=1;b=_set_insert_key(a,f,h)==-1?10:13;break;case 10:HEAP[f]-= -1;b=HEAP[f]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=12;break;case 12:c=-1;b=16;break;case 13:j+=1;b=14;break;case 14:b=HEAP[d+16]>=j?7:15;break;case 15:c=0;b=16;break;case 16:return a=c;default:assert(0,"bad label: "+b)}} -function _set_contains_key(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[c+4]!=_PyString_Type?2:1;break;case 1:h=HEAP[c+12];b=h==-1?2:4;break;case 2:h=b=_PyObject_Hash(c);b=b==-1?3:4;break;case 3:f=-1;b=11;break;case 4:j=b=FUNCTION_TABLE[HEAP[a+24]](a,c,h);b=b==0?5:6;break;case 5:f=-1;b=11;break;case 6:c=HEAP[j+4];b=c==0?9:7;break;case 7:b=c==HEAP[_dummy3978]?9:8;break;case 8:d=1;b=10;break;case 9:d=0;b=10;break;case 10:f=d;b=11;break;case 11:return a=f;default:assert(0,"bad label: "+ -b)}}function _set_contains_entry(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;a=FUNCTION_TABLE[HEAP[b+24]](b,HEAP[a+4],HEAP[a]);b=a==0?1:2;break;case 1:d=-1;b=7;break;case 2:f=HEAP[a+4];b=f==0?5:3;break;case 3:b=f==HEAP[_dummy3978]?5:4;break;case 4:c=1;b=6;break;case 5:c=0;b=6;break;case 6:d=c;b=7;break;case 7:return c=d;default:assert(0,"bad label: "+b)}} -function _set_pop(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=0;e=HEAP[b+12]==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_KeyError],__str63987);a=0;e=11;break;case 2:d=HEAP[b+20];e=HEAP[d+4]==0?4:3;break;case 3:e=HEAP[d+4]==HEAP[_dummy3978]?4:10;break;case 4:c=HEAP[d];e=HEAP[b+16]d?9:7;break;case 7:e=HEAP[f+8*c+4]==0?5:8;break;case 8:e=HEAP[f+8*c+4]==HEAP[_dummy3978]?5:9;break;case 9:HEAP[b+16]=c+1;e=c>d?11:10;break;case 10:HEAP[b+ -20]-=1;e=HEAP[f+8*c+4];HEAP[e]+=1;a=e;e=14;break;case 11:HEAP[h]-=1;e=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=13;break;case 13:a=HEAP[b+8]=0;e=14;break;case 14:return g=a;default:assert(0,"bad label: "+e)}} -function _set_iter(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=__PyObject_GC_New(_PySetIter_Type);e=c==0?1:2;break;case 1:a=0;e=5;break;case 2:HEAP[b]+=1;HEAP[c+8]=b;HEAP[c+12]=HEAP[b+12];HEAP[c+16]=0;HEAP[c+20]=HEAP[b+12];d=c+-12;e=HEAP[d+8]!=-2?3:4;break;case 3:throw _Py_FatalError(__str103993),"Reached an unreachable!";case 4:HEAP[d+8]=-3;HEAP[d]=HEAP[__PyGC_generation0];HEAP[d+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[d+4]]=d;HEAP[HEAP[__PyGC_generation0]+4]=d;a=c;e=5;break;case 5:return g= -a;default:assert(0,"bad label: "+e)}} -function _set_update_internal(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j,k=b+4,l=b+8,m=b+12,n,o=b+16;c=g;d=e;a=HEAP[d+4]==_PySet_Type?4:1;break;case 1:a=HEAP[d+4]==_PyFrozenSet_Type?4:2;break;case 2:a=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)!=0?4:3;break;case 3:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)!=0?4:5;break;case 4:f=_set_merge(c,d);a=32;break;case 5:a=HEAP[d+4]==_PyDict_Type?6:16;break;case 6:HEAP[l]=0;n=_PyDict_Size(d);a=n== --1?7:8;break;case 7:f=-1;a=32;break;case 8:a=(n+HEAP[c+8])*3>=(HEAP[c+16]+1)*2?10:9;break;case 9:var p=o,q=o+4;a=14;break;case 10:a=_set_table_resize(c,(n+HEAP[c+12])*2)!=0?11:9;break;case 11:f=-1;a=32;break;case 12:HEAP[p]=HEAP[m];HEAP[q]=HEAP[h];a=_set_add_entry(c,o)==-1?13:14;break;case 13:f=-1;a=32;break;case 14:a=__PyDict_Next(d,l,h,k,m)!=0?12:15;break;case 15:f=0;a=32;break;case 16:j=_PyObject_GetIter(d);a=j==0?17:26;break;case 17:f=-1;a=32;break;case 18:a=_set_add_key(c,HEAP[h])==-1?19:24; -break;case 19:HEAP[j]-=1;a=HEAP[j]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=21;break;case 21:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=23;break;case 23:f=-1;a=32;break;case 24:a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=26;break;case 26:a=_PyIter_Next(j);HEAP[h]=a;a=a!=0?18:27;break;case 27:HEAP[j]-=1;a=HEAP[j]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[j+ -4]+24]](j);a=29;break;case 29:a=_PyErr_Occurred()!=0?30:31;break;case 30:f=-1;a=32;break;case 31:f=0;a=32;break;case 32:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _set_update(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=0;b=4;break;case 1:b=HEAP[c+12+f*4];b=_set_update_internal(a,b)==-1?2:3;break;case 2:d=0;b=6;break;case 3:f+=1;b=4;break;case 4:b=HEAP[c+8]>f?1:5;break;case 5:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=6;break;case 6:return a=d;default:assert(0,"bad label: "+b)}} -function _make_new_set(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=0;b=HEAP[_dummy3978]==0?1:3;break;case 1:b=_PyString_FromString(__str113994);HEAP[_dummy3978]=b;b=HEAP[_dummy3978]==0?2:3;break;case 2:d=0;b=15;break;case 3:b=HEAP[_numfree3979]==0?6:4;break;case 4:b=a==_PySet_Type|a==_PyFrozenSet_Type?5:6;break;case 5:HEAP[_numfree3979]-=1;f=HEAP[_free_list3980+HEAP[_numfree3979]*4];HEAP[f+4]=a;HEAP[f]=1;_llvm_memset_p0i8_i32(f+28,0,64,1,0);HEAP[f+8]=0;HEAP[f+12]=HEAP[f+8];HEAP[f+ -20]=f+28;HEAP[f+16]=7;HEAP[f+92]=-1;_PyObject_GC_Track(f);b=9;break;case 6:f=b=FUNCTION_TABLE[HEAP[a+152]](a,0);b=b==0?7:8;break;case 7:d=0;b=15;break;case 8:HEAP[f+20]=f+28;HEAP[f+16]=7;HEAP[f+92]=-1;b=9;break;case 9:HEAP[f+24]=154;HEAP[f+96]=0;b=c!=0?10:14;break;case 10:b=_set_update_internal(f,c)==-1?11:14;break;case 11:HEAP[f]-=1;b=HEAP[f]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=13;break;case 13:d=0;b=15;break;case 14:d=f;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+ -b)}} -function _frozenset_new(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l;d=g;f=e;h=b;HEAP[k]=0;c=d==_PyFrozenSet_Type?1:3;break;case 1:c=__PyArg_NoKeywords(__str123995,h)==0?2:3;break;case 2:j=0;c=19;break;case 3:c=_PyArg_UnpackTuple(f,HEAP[d+12],0,1,allocate([k,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?4:5;break;case 4:j=0;c=19;break;case 5:var m=HEAP[k];c=d!=_PyFrozenSet_Type?6:7;break;case 6:j=_make_new_set(d,m);c=19;break;case 7:c= -m!=0?8:15;break;case 8:var n=HEAP[k];c=HEAP[HEAP[k]+4]==_PyFrozenSet_Type?9:10;break;case 9:HEAP[n]+=1;j=HEAP[k];c=19;break;case 10:l=_make_new_set(d,n);c=l==0?12:11;break;case 11:c=HEAP[l+12]!=0?12:13;break;case 12:j=l;c=19;break;case 13:HEAP[l]-=1;c=HEAP[l]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=15;break;case 15:c=HEAP[_emptyfrozenset]==0?16:17;break;case 16:c=_make_new_set(d,0);HEAP[_emptyfrozenset]=c;c=c!=0?17:18;break;case 17:HEAP[HEAP[_emptyfrozenset]]+=1;c=18;break; -case 18:j=HEAP[_emptyfrozenset];c=19;break;case 19:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PySet_Fini(){var g;for(g=-1;;)switch(g){case -1:var e,b;g=HEAP[_numfree3979]!=0?1:2;break;case 1:HEAP[_numfree3979]-=1;g=HEAP[_free_list3980+HEAP[_numfree3979]*4];_PyObject_GC_Del(g);g=HEAP[_numfree3979]!=0?1:2;break;case 2:g=HEAP[_dummy3978]!=0?3:5;break;case 3:e=HEAP[_dummy3978];HEAP[_dummy3978]=0;HEAP[e]-=1;g=HEAP[e]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[e+4]+24]](e);g=5;break;case 5:g=HEAP[_emptyfrozenset]!=0?6:8;break;case 6:b=HEAP[_emptyfrozenset];HEAP[_emptyfrozenset]=0;HEAP[b]-= -1;g=HEAP[b]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=8;break;case 8:return;default:assert(0,"bad label: "+g)}}function _set_new(g,e,b){for(e=-1;;)switch(e){case -1:var a,c,d;a=g;c=b;e=a==_PySet_Type?1:3;break;case 1:e=__PyArg_NoKeywords(__str133996,c)==0?2:3;break;case 2:d=0;e=4;break;case 3:d=_make_new_set(a,0);e=4;break;case 4:return g=d;default:assert(0,"bad label: "+e)}} -function _set_swap_bodies(g,e){var b=STACKTOP;STACKTOP+=64;_memset(b,0,64);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;f=HEAP[c+8];HEAP[c+8]=HEAP[d+8];HEAP[d+8]=f;f=HEAP[c+12];HEAP[c+12]=HEAP[d+12];HEAP[d+12]=f;f=HEAP[c+16];HEAP[c+16]=HEAP[d+16];HEAP[d+16]=f;f=HEAP[c+20];a=HEAP[c+20]==c+28?1:2;break;case 1:f=d+28;a=2;break;case 2:HEAP[c+20]=HEAP[d+20];a=HEAP[d+20]==d+28?3:4;break;case 3:HEAP[c+20]=c+28;a=4;break;case 4:HEAP[d+20]=f;a=HEAP[c+24];HEAP[c+24]=HEAP[d+24];HEAP[d+24]=a;a=HEAP[c+ -20]==c+28?6:5;break;case 5:a=HEAP[d+20]==d+28?6:7;break;case 6:_llvm_memcpy_p0i8_p0i8_i32(h,c+28,64,1,0);_llvm_memcpy_p0i8_p0i8_i32(c+28,d+28,64,1,0);_llvm_memcpy_p0i8_p0i8_i32(d+28,h,64,1,0);a=7;break;case 7:a=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)==0?10:8;break;case 8:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)==0?10:9;break;case 9:a=HEAP[c+92];HEAP[c+92]=HEAP[d+92];HEAP[d+92]=a;a=11;break;case 10:HEAP[c+92]=-1;HEAP[d+92]=-1;a=11;break;case 11:STACKTOP=b;return;default:assert(0,"bad label: "+ -a)}}function _set_copy(g){return _make_new_set(HEAP[g+4],g)}function _frozenset_copy(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+4]==_PyFrozenSet_Type?1:2;break;case 1:HEAP[c]+=1;a=b;e=3;break;case 2:a=_set_copy(c);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _set_clear(g){_set_clear_internal(g);HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct} -function _set_union(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=_set_copy(a);b=f==0?1:2;break;case 1:d=0;b=11;break;case 2:j=0;b=9;break;case 3:h=HEAP[c+12+j*4];b=a==h?8:4;break;case 4:b=_set_update_internal(f,h)==-1?5:8;break;case 5:HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:d=0;b=11;break;case 8:j+=1;b=9;break;case 9:b=HEAP[c+8]>j?3:10;break;case 10:d=f;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}} -function _set_or(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[a+4]==_PySet_Type?4:1;break;case 1:b=HEAP[a+4]==_PyFrozenSet_Type?4:2;break;case 2:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)!=0?4:3;break;case 3:b=_PyType_IsSubtype(HEAP[a+4],_PyFrozenSet_Type)==0?8:4;break;case 4:b=HEAP[c+4]==_PySet_Type?9:5;break;case 5:b=HEAP[c+4]==_PyFrozenSet_Type?9:6;break;case 6:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)!=0?9:7;break;case 7:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)== -0?8:9;break;case 8:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=18;break;case 9:f=b=_set_copy(a);b=b==0?10:11;break;case 10:d=0;b=18;break;case 11:var h=f;b=a==c?12:13;break;case 12:d=h;b=18;break;case 13:b=_set_update_internal(h,c)==-1;var j=f;b=b?14:17;break;case 14:HEAP[j]-=1;b=HEAP[j]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=16;break;case 16:d=0;b=18;break;case 17:d=j;b=18;break;case 18:return a=d;default:assert(0,"bad label: "+b)}} -function _set_ior(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[c+4]!=_PySet_Type?1:5;break;case 1:b=HEAP[c+4]!=_PyFrozenSet_Type?2:5;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?3:5;break;case 3:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)==0?4:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=8;break;case 5:b=_set_update_internal(a,c)==-1?6:7;break;case 6:d=0;b=8;break;case 7:HEAP[a]+=1;d=a;b=8;break;case 8:return b=d;default:assert(0, -"bad label: "+b)}} -function _set_intersection(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4,n,o,p=b+8,q;c=g;d=e;var r=c;a=c==d?1:2;break;case 1:f=_set_copy(r);a=61;break;case 2:h=_make_new_set(HEAP[r+4],0);a=h==0?3:4;break;case 3:f=0;a=61;break;case 4:a=HEAP[d+4]==_PySet_Type?8:5;break;case 5:a=HEAP[d+4]==_PyFrozenSet_Type?8:6;break;case 6:a=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)!=0?8:7;break;case 7:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)!=0? -8:21;break;case 8:HEAP[l]=0;a=HEAP[d+12]>HEAP[c+12]?9:19;break;case 9:a=c;c=d;d=a;a=19;break;case 10:n=_set_contains_entry(c,HEAP[m]);a=n==-1?11:14;break;case 11:HEAP[h]-=1;a=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=13;break;case 13:f=0;a=61;break;case 14:a=n!=0?15:19;break;case 15:a=_set_add_entry(h,HEAP[m])==-1?16:19;break;case 16:HEAP[h]-=1;a=HEAP[h]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=18;break;case 18:f=0;a=61;break;case 19:a=_set_next(d, -l,m)!=0?10:20;break;case 20:f=h;a=61;break;case 21:k=_PyObject_GetIter(d);a=k==0?23:22;break;case 22:var u=p,s=p+4;a=53;break;case 23:HEAP[h]-=1;a=HEAP[h]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=25;break;case 25:f=0;a=61;break;case 26:q=_PyObject_Hash(j);a=q==-1?27:34;break;case 27:HEAP[k]-=1;a=HEAP[k]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=29;break;case 29:HEAP[h]-=1;a=HEAP[h]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=31;break;case 31:HEAP[j]-= -1;a=HEAP[j]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=33;break;case 33:f=0;a=61;break;case 34:HEAP[u]=q;HEAP[s]=j;o=_set_contains_entry(c,p);a=o==-1?35:42;break;case 35:HEAP[k]-=1;a=HEAP[k]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=37;break;case 37:HEAP[h]-=1;a=HEAP[h]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=39;break;case 39:HEAP[j]-=1;a=HEAP[j]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=41;break;case 41:f=0;a=61; -break;case 42:a=o!=0?43:51;break;case 43:a=_set_add_entry(h,p)==-1?44:51;break;case 44:HEAP[k]-=1;a=HEAP[k]==0?45:46;break;case 45:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=46;break;case 46:HEAP[h]-=1;a=HEAP[h]==0?47:48;break;case 47:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=48;break;case 48:HEAP[j]-=1;a=HEAP[j]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=50;break;case 50:f=0;a=61;break;case 51:HEAP[j]-=1;a=HEAP[j]==0?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=53;break; -case 53:j=a=_PyIter_Next(k);a=a!=0?26:54;break;case 54:HEAP[k]-=1;a=HEAP[k]==0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=56;break;case 56:a=_PyErr_Occurred();var t=h;a=a!=0?57:60;break;case 57:HEAP[t]-=1;a=HEAP[t]==0?58:59;break;case 58:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=59;break;case 59:f=0;a=61;break;case 60:f=t;a=61;break;case 61:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _set_intersection_multi(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=a;b=HEAP[c+8]==0?1:2;break;case 1:d=_set_copy(a);b=12;break;case 2:HEAP[a]+=1;f=0;b=10;break;case 3:j=HEAP[c+12+f*4];j=_set_intersection(h,j);HEAP[h]-=1;var k=HEAP[h]==0;b=j==0?4:7;break;case 4:b=k?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=6;break;case 6:d=0;b=12;break;case 7:b=k?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=9;break;case 9:h=j;f+=1;b=10;break;case 10:b=HEAP[c+ -8]>f?3:11;break;case 11:d=h;b=12;break;case 12:return c=d;default:assert(0,"bad label: "+b)}}function _set_intersection_update(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=_set_intersection(a,e);b=d==0?1:2;break;case 1:c=0;b=5;break;case 2:_set_swap_bodies(a,d);HEAP[d]-=1;b=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=4;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}} -function _set_intersection_update_multi(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=_set_intersection_multi(a,e);b=d==0?1:2;break;case 1:c=0;b=5;break;case 2:_set_swap_bodies(a,d);HEAP[d]-=1;b=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=4;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}} -function _set_and(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]==_PySet_Type?4:1;break;case 1:b=HEAP[a+4]==_PyFrozenSet_Type?4:2;break;case 2:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)!=0?4:3;break;case 3:b=_PyType_IsSubtype(HEAP[a+4],_PyFrozenSet_Type)==0?8:4;break;case 4:b=HEAP[c+4]==_PySet_Type?9:5;break;case 5:b=HEAP[c+4]==_PyFrozenSet_Type?9:6;break;case 6:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)!=0?9:7;break;case 7:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)== -0?8:9;break;case 8:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=10;break;case 9:d=_set_intersection(a,c);b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _set_iand(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[c+4]!=_PySet_Type?1:5;break;case 1:b=HEAP[c+4]!=_PyFrozenSet_Type?2:5;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?3:5;break;case 3:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)==0?4:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=10;break;case 5:f=b=_set_intersection_update(a,c);b=b==0?6:7;break;case 6:d=0;b=10;break;case 7:HEAP[f]-=1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=9;break;case 9:HEAP[a]+=1;d=a;b=10;break;case 10:return a=d;default:assert(0,"bad label: "+b)}} -function _set_isdisjoint(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l=b+4,m,n,o=b+8,p;c=g;d=e;a=c==d?1:4;break;case 1:a=HEAP[c+12]==0?2:3;break;case 2:HEAP[__Py_TrueStruct]+=1;f=__Py_TrueStruct;a=39;break;case 3:HEAP[__Py_ZeroStruct]+=1;f=__Py_ZeroStruct;a=39;break;case 4:a=HEAP[d+4]==_PySet_Type?6:5;break;case 5:a=HEAP[d+4]==_PyFrozenSet_Type?6:14;break;case 6:HEAP[k]=0;a=HEAP[d+12]>HEAP[c+12]?7:12;break;case 7:a=c;c=d;d=a;a=12;break;case 8:m= -_set_contains_entry(c,HEAP[l]);a=m==-1?9:10;break;case 9:f=0;a=39;break;case 10:a=m!=0?11:12;break;case 11:HEAP[__Py_ZeroStruct]+=1;f=__Py_ZeroStruct;a=39;break;case 12:a=_set_next(d,k,l)!=0?8:13;break;case 13:HEAP[__Py_TrueStruct]+=1;f=__Py_TrueStruct;a=39;break;case 14:j=_PyObject_GetIter(d);a=j==0?16:15;break;case 15:var q=o,r=o+4;a=33;break;case 16:f=0;a=39;break;case 17:p=_PyObject_Hash(h);a=p==-1?18:23;break;case 18:HEAP[h]-=1;a=HEAP[h]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h); -a=20;break;case 20:HEAP[j]-=1;a=HEAP[j]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=22;break;case 22:f=0;a=39;break;case 23:HEAP[q]=p;HEAP[r]=h;n=_set_contains_entry(c,o);HEAP[h]-=1;a=HEAP[h]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=25;break;case 25:a=n==-1?26:29;break;case 26:HEAP[j]-=1;a=HEAP[j]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=28;break;case 28:f=0;a=39;break;case 29:a=n!=0?30:33;break;case 30:HEAP[j]-=1;a=HEAP[j]==0?31:32;break; -case 31:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=32;break;case 32:HEAP[__Py_ZeroStruct]+=1;f=__Py_ZeroStruct;a=39;break;case 33:h=a=_PyIter_Next(j);a=a!=0?17:34;break;case 34:HEAP[j]-=1;a=HEAP[j]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=36;break;case 36:a=_PyErr_Occurred()!=0?37:38;break;case 37:f=0;a=39;break;case 38:HEAP[__Py_TrueStruct]+=1;f=__Py_TrueStruct;a=39;break;case 39:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _set_difference_update_internal(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l,m;c=g;d=e;a=c==d?1:2;break;case 1:h=_set_clear_internal(c);a=31;break;case 2:a=HEAP[d+4]==_PySet_Type?6:3;break;case 3:a=HEAP[d+4]==_PyFrozenSet_Type?6:4;break;case 4:a=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)!=0?6:5;break;case 5:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)!=0?6:10;break;case 6:HEAP[k]=0;a=9;break;case 7:a=_set_discard_entry(c,HEAP[j])== --1?8:9;break;case 8:h=-1;a=31;break;case 9:a=_set_next(d,k,j)!=0?7:25;break;case 10:m=_PyObject_GetIter(d);a=m==0?11:20;break;case 11:h=-1;a=31;break;case 12:a=_set_discard_key(c,l)==-1?13:18;break;case 13:HEAP[m]-=1;a=HEAP[m]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=15;break;case 15:HEAP[l]-=1;a=HEAP[l]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=17;break;case 17:h=-1;a=31;break;case 18:HEAP[l]-=1;a=HEAP[l]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[l+ -4]+24]](l);a=20;break;case 20:l=a=_PyIter_Next(m);a=a!=0?12:21;break;case 21:HEAP[m]-=1;a=HEAP[m]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=23;break;case 23:a=_PyErr_Occurred()!=0?24:25;break;case 24:h=-1;a=31;break;case 25:a=(HEAP[c+8]-HEAP[c+12])*55E4?28:29;break;case 28:f=n*2;a=30;break;case 29:f=n*4;a=30;break;case 30:h=_set_table_resize(c,f);a=31;break;case 31:return c=h,STACKTOP=b,c;default:assert(0, -"bad label: "+a)}}function _set_difference_update(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=0;b=4;break;case 1:b=HEAP[c+12+f*4];b=_set_difference_update_internal(a,b)==-1?2:3;break;case 2:d=0;b=6;break;case 3:f+=1;b=4;break;case 4:b=HEAP[c+8]>f?1:5;break;case 5:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=6;break;case 6:return a=d;default:assert(0,"bad label: "+b)}} -function _set_difference(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l=b+8,m;c=g;d=e;HEAP[k]=0;a=HEAP[d+4]!=_PySet_Type?1:12;break;case 1:a=HEAP[d+4]!=_PyFrozenSet_Type?2:12;break;case 2:a=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)==0?3:12;break;case 3:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)==0?4:12;break;case 4:a=HEAP[d+4]!=_PyDict_Type?5:12;break;case 5:h=_set_copy(c);a=h==0?6:7;break;case 6:f=0;a=34;break;case 7:a=_set_difference_update_internal(h, -d)!=-1;var n=h;a=a?8:9;break;case 8:f=n;a=34;break;case 9:HEAP[h]=HEAP[n]-1;a=HEAP[h]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=11;break;case 11:f=0;a=34;break;case 12:h=a=_make_new_set(HEAP[c+4],0);a=a==0?13:14;break;case 13:f=0;a=34;break;case 14:a=HEAP[d+4]==_PyDict_Type?15:32;break;case 15:var o=l,p=l+4;a=21;break;case 16:HEAP[o]=HEAP[HEAP[j]];HEAP[p]=HEAP[HEAP[j]+4];a=__PyDict_Contains(d,HEAP[HEAP[j]+4],HEAP[HEAP[j]])==0?17:21;break;case 17:a=_set_add_entry(h,l)==-1?18:21; -break;case 18:HEAP[h]-=1;a=HEAP[h]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=20;break;case 20:f=0;a=34;break;case 21:a=_set_next(c,k,j)!=0?16:22;break;case 22:f=h;a=34;break;case 23:m=_set_contains_entry(d,HEAP[j]);a=m==-1?24:27;break;case 24:HEAP[h]-=1;a=HEAP[h]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=26;break;case 26:f=0;a=34;break;case 27:a=m==0?28:32;break;case 28:a=_set_add_entry(h,HEAP[j])==-1?29:32;break;case 29:HEAP[h]-=1;a=HEAP[h]==0?30:31;break; -case 30:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=31;break;case 31:f=0;a=34;break;case 32:a=_set_next(c,k,j)!=0?23:33;break;case 33:f=h;a=34;break;case 34:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _set_difference_multi(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[c+8]==0?1:2;break;case 1:d=_set_copy(a);b=12;break;case 2:b=HEAP[c+12];h=_set_difference(a,b);b=h==0?3:4;break;case 3:d=0;b=12;break;case 4:f=1;b=10;break;case 5:b=HEAP[c+12+f*4];b=_set_difference_update_internal(h,b)==-1?6:9;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:d=0;b=12;break;case 9:f+=1;b=10;break;case 10:b=HEAP[c+8]>f?5:11;break; -case 11:d=h;b=12;break;case 12:return a=d;default:assert(0,"bad label: "+b)}} -function _set_sub(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]==_PySet_Type?4:1;break;case 1:b=HEAP[a+4]==_PyFrozenSet_Type?4:2;break;case 2:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)!=0?4:3;break;case 3:b=_PyType_IsSubtype(HEAP[a+4],_PyFrozenSet_Type)==0?8:4;break;case 4:b=HEAP[c+4]==_PySet_Type?9:5;break;case 5:b=HEAP[c+4]==_PyFrozenSet_Type?9:6;break;case 6:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)!=0?9:7;break;case 7:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)== -0?8:9;break;case 8:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=10;break;case 9:d=_set_difference(a,c);b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _set_isub(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[c+4]!=_PySet_Type?1:5;break;case 1:b=HEAP[c+4]!=_PyFrozenSet_Type?2:5;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?3:5;break;case 3:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)==0?4:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=8;break;case 5:b=_set_difference_update_internal(a,c)==-1?6:7;break;case 6:d=0;b=8;break;case 7:HEAP[a]+=1;d=a;b=8;break;case 8:return b= -d;default:assert(0,"bad label: "+b)}} -function _set_symmetric_difference_update(g,e){var b=STACKTOP;STACKTOP+=28;_memset(b,0,28);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k=b+4,l=b+8,m=b+12,n,o=b+16,p=b+20,q;c=g;d=e;HEAP[k]=0;a=c==d?1:2;break;case 1:f=_set_clear(c);a=37;break;case 2:a=HEAP[d+4]==_PyDict_Type?3:17;break;case 3:var r=p,u=p+4;a=15;break;case 4:HEAP[HEAP[j]]+=1;HEAP[r]=HEAP[o];HEAP[u]=HEAP[j];n=_set_discard_entry(c,p);a=n==-1?5:8;break;case 5:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+ -4]+24]](HEAP[j]);a=7;break;case 7:f=0;a=37;break;case 8:a=n==0?9:13;break;case 9:a=_set_add_entry(c,p)==-1?10:13;break;case 10:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=12;break;case 12:f=0;a=37;break;case 13:a=HEAP[j];HEAP[a]-=1;a=HEAP[a]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);a=15;break;case 15:a=__PyDict_Next(d,k,j,m,o)!=0?4:16;break;case 16:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=37;break;case 17:a= -HEAP[d+4]==_PySet_Type?21:18;break;case 18:a=HEAP[d+4]==_PyFrozenSet_Type?21:19;break;case 19:a=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)!=0?21:20;break;case 20:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)!=0?21:22;break;case 21:HEAP[d]+=1;h=d;a=33;break;case 22:h=_make_new_set(HEAP[c+4],d);a=h==0?23:33;break;case 23:f=0;a=37;break;case 24:q=_set_discard_entry(c,HEAP[l]);a=q==-1?25:28;break;case 25:HEAP[h]-=1;a=HEAP[h]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=27;break;case 27:f= -0;a=37;break;case 28:a=q==0?29:33;break;case 29:a=_set_add_entry(c,HEAP[l])==-1?30:33;break;case 30:HEAP[h]-=1;a=HEAP[h]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=32;break;case 32:f=0;a=37;break;case 33:a=_set_next(h,k,l)!=0?24:34;break;case 34:HEAP[h]-=1;a=HEAP[h]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=36;break;case 36:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=37;break;case 37:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _set_symmetric_difference(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_make_new_set(HEAP[a+4],e);b=f==0?1:2;break;case 1:c=0;b=7;break;case 2:d=_set_symmetric_difference_update(f,a);b=d==0?3:4;break;case 3:c=0;b=7;break;case 4:HEAP[d]-=1;b=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=6;break;case 6:c=f;b=7;break;case 7:return b=c;default:assert(0,"bad label: "+b)}} -function _set_xor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]==_PySet_Type?4:1;break;case 1:b=HEAP[a+4]==_PyFrozenSet_Type?4:2;break;case 2:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)!=0?4:3;break;case 3:b=_PyType_IsSubtype(HEAP[a+4],_PyFrozenSet_Type)==0?8:4;break;case 4:b=HEAP[c+4]==_PySet_Type?9:5;break;case 5:b=HEAP[c+4]==_PyFrozenSet_Type?9:6;break;case 6:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)!=0?9:7;break;case 7:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)== -0?8:9;break;case 8:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=10;break;case 9:d=_set_symmetric_difference(a,c);b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _set_ixor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[c+4]!=_PySet_Type?1:5;break;case 1:b=HEAP[c+4]!=_PyFrozenSet_Type?2:5;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?3:5;break;case 3:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)==0?4:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=10;break;case 5:f=b=_set_symmetric_difference_update(a,c);b=b==0?6:7;break;case 6:d=0;b=10;break;case 7:HEAP[f]-=1;b=HEAP[f]==0?8:9;break; -case 8:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=9;break;case 9:HEAP[a]+=1;d=a;b=10;break;case 10:return a=d;default:assert(0,"bad label: "+b)}} -function _set_issubset(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k,l,m;c=g;d=e;HEAP[j]=0;a=HEAP[d+4]!=_PySet_Type?1:9;break;case 1:a=HEAP[d+4]!=_PyFrozenSet_Type?2:9;break;case 2:a=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)==0?3:9;break;case 3:a=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)==0?4:9;break;case 4:k=_make_new_set(_PySet_Type,d);a=k==0?5:6;break;case 5:f=0;a=17;break;case 6:l=_set_issubset(c,k);HEAP[k]-=1;a=HEAP[k]==0?7:8;break; -case 7:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=8;break;case 8:f=l;a=17;break;case 9:a=HEAP[c+12]>HEAP[d+12]?10:15;break;case 10:HEAP[__Py_ZeroStruct]+=1;f=__Py_ZeroStruct;a=17;break;case 11:m=_set_contains_entry(d,HEAP[h]);a=m==-1?12:13;break;case 12:f=0;a=17;break;case 13:a=m==0?14:15;break;case 14:HEAP[__Py_ZeroStruct]+=1;f=__Py_ZeroStruct;a=17;break;case 15:a=_set_next(c,j,h)!=0?11:16;break;case 16:HEAP[__Py_TrueStruct]+=1;f=__Py_TrueStruct;a=17;break;case 17:return a=f,STACKTOP=b,a;default:assert(0, -"bad label: "+a)}} -function _set_issuperset(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[c+4]!=_PySet_Type?1:9;break;case 1:b=HEAP[c+4]!=_PyFrozenSet_Type?2:9;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?3:9;break;case 3:b=_PyType_IsSubtype(HEAP[c+4],_PyFrozenSet_Type)==0?4:9;break;case 4:f=_make_new_set(_PySet_Type,c);b=f==0?5:6;break;case 5:d=0;b=10;break;case 6:h=_set_issuperset(a,f);HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:d= -h;b=10;break;case 9:d=_set_issubset(c,a);b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _set_richcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;HEAP[f+4]!=_PySet_Type?(c=-1,a=1):(c=-1,a=10);break;case 1:a=HEAP[f+4]!=_PyFrozenSet_Type?2:9;break;case 2:a=_PyType_IsSubtype(HEAP[f+4],_PySet_Type)==0?3:9;break;case 3:a=_PyType_IsSubtype(HEAP[f+4],_PyFrozenSet_Type)==0?4:9;break;case 4:a=h==2?5:6;break;case 5:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=32;break;case 6:a=h==3?7:8;break;case 7:HEAP[__Py_TrueStruct]+=1;j=__Py_TrueStruct;a=32;break; -case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str143997);j=0;a=32;break;case 9:var m=h,c=9;a=10;break;case 10:a=c==9?m:b;a=a==0?25:a==1?23:a==2?11:a==3?18:a==4?28:a==5?24:31;break;case 11:a=HEAP[d+12]!=HEAP[f+12]?12:13;break;case 12:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=32;break;case 13:a=HEAP[d+92]!=-1?14:17;break;case 14:a=HEAP[f+92]!=-1?15:17;break;case 15:a=HEAP[d+92]!=HEAP[f+92]?16:17;break;case 16:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=32;break;case 17:j=_set_issubset(d,f);a= -32;break;case 18:k=_set_richcompare(d,f,2);a=k==0?19:20;break;case 19:j=0;a=32;break;case 20:l=_PyObject_Not(k);l=_PyBool_FromLong(l);HEAP[k]-=1;a=HEAP[k]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=22;break;case 22:j=l;a=32;break;case 23:j=_set_issubset(d,f);a=32;break;case 24:j=_set_issuperset(d,f);a=32;break;case 25:a=HEAP[d+12]>=HEAP[f+12]?26:27;break;case 26:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=32;break;case 27:j=_set_issubset(d,f);a=32;break;case 28:a=HEAP[d+12]<= -HEAP[f+12]?29:30;break;case 29:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=32;break;case 30:j=_set_issuperset(d,f);a=32;break;case 31:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;a=32;break;case 32:return g=j;default:assert(0,"bad label: "+a)}}function _set_nocmp(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str153998);return-1} -function _set_add(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=_set_add_key(g,e)==-1?1:2;break;case 1:a=0;b=3;break;case 2:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _set_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;h=_set_contains_key(a,c);b=h==-1?1:9;break;case 1:b=HEAP[c+4]==_PySet_Type?3:2;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?4:3;break;case 3:b=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])==0?4:5;break;case 4:d=-1;b=10;break;case 5:_PyErr_Clear();f=_make_new_set(_PyFrozenSet_Type,c);b=f==0?6:7;break;case 6:d=-1;b=10;break;case 7:h=_set_contains(a,f);HEAP[f]-=1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=9;break;case 9:d=h;b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}}function _set_direct_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_set_contains(g,e);b=c==-1?1:2;break;case 1:a=0;b=3;break;case 2:a=_PyBool_FromLong(c);b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _set_remove(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j;c=g;d=e;var k=j=_set_discard_key(c,d);k==-1?(a=-1,b=1):(a=-1,b=11);break;case 1:b=HEAP[d+4]==_PySet_Type?3:2;break;case 2:b=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)==0?4:3;break;case 3:b=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])==0?4:5;break;case 4:f=0;b=14;break;case 5:_PyErr_Clear();h=_make_new_set(_PyFrozenSet_Type,d);b=h==0?6:7;break;case 6:f=0;b=14;break;case 7:j=_set_discard_key(c,h);HEAP[h]-=1;b=HEAP[h]== -0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=9;break;case 9:var l=j;l==-1?(a=9,b=10):(a=9,b=11);break;case 10:f=0;b=14;break;case 11:b=(a==9?l:k)==0?12:13;break;case 12:_set_key_error4028(d);f=0;b=14;break;case 13:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;b=14;break;case 14:return b=f;default:assert(0,"bad label: "+b)}} -function _set_discard(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=_set_discard_key(a,c)==-1?1:10;break;case 1:b=HEAP[c+4]==_PySet_Type?3:2;break;case 2:b=_PyType_IsSubtype(HEAP[c+4],_PySet_Type)==0?4:3;break;case 3:b=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])==0?4:5;break;case 4:d=0;b=11;break;case 5:_PyErr_Clear();f=_make_new_set(_PyFrozenSet_Type,c);b=f==0?6:7;break;case 6:d=0;b=11;break;case 7:h=_set_discard(a,f);HEAP[f]-=1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=9;break;case 9:d=h;b=11;break;case 10:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}} -function _set_reduce(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;f=d=c=0;a=_PySequence_List(b);e=a==0?5:1;break;case 1:c=_PyTuple_Pack(1,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));e=c==0?8:2;break;case 2:f=_PyObject_GetAttrString(b,__str164000);e=f==0?3:4;break;case 3:_PyErr_Clear();f=__Py_NoneStruct;HEAP[f]+=1;e=4;break;case 4:d=_PyTuple_Pack(3,allocate([HEAP[b+4],0,0,0,c,0,0,0,f,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*", -0,0,0],ALLOC_STACK));e=5;break;case 5:e=c!=0?6:8;break;case 6:HEAP[c]-=1;e=HEAP[c]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=8;break;case 8:e=a!=0?9:11;break;case 9:HEAP[a]-=1;e=HEAP[a]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=11;break;case 11:e=f!=0?12:14;break;case 12:HEAP[f]-=1;e=HEAP[f]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=14;break;case 14:return g=d;default:assert(0,"bad label: "+e)}} -function _set_sizeof(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=100;e=HEAP[b+20]!=b+28?1:2;break;case 1:a=(HEAP[b+16]+1)*8+a;e=2;break;case 2:return g=_PyInt_FromSsize_t(a);default:assert(0,"bad label: "+e)}} -function _set_init(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;HEAP[k]=0;c=HEAP[d+4]!=_PySet_Type?1:5;break;case 1:c=HEAP[d+4]!=_PyFrozenSet_Type?2:5;break;case 2:c=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)==0?3:5;break;case 3:c=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)==0?4:5;break;case 4:j=-1;c=14;break;case 5:c=HEAP[d+4]==_PySet_Type?7:6;break;case 6:c=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)!=0?7:9;break;case 7:c=__PyArg_NoKeywords(__str133996, -h)==0?8:9;break;case 8:j=-1;c=14;break;case 9:c=_PyArg_UnpackTuple(f,HEAP[HEAP[d+4]+12],0,1,allocate([k,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?10:11;break;case 10:j=-1;c=14;break;case 11:_set_clear_internal(d);HEAP[d+92]=-1;c=HEAP[k]==0?12:13;break;case 12:j=0;c=14;break;case 13:j=_set_update_internal(d,HEAP[k]);c=14;break;case 14:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _PySet_New(g){return _make_new_set(_PySet_Type,g)} -function _PyFrozenSet_New(g){return _make_new_set(_PyFrozenSet_Type,g)} -function _PySet_Size(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PySet_Type?1:5;break;case 1:e=HEAP[b+4]!=_PyFrozenSet_Type?2:5;break;case 2:e=_PyType_IsSubtype(HEAP[b+4],_PySet_Type)==0?3:5;break;case 3:e=_PyType_IsSubtype(HEAP[b+4],_PyFrozenSet_Type)==0?4:5;break;case 4:__PyErr_BadInternalCall(__str394027,2281);a=-1;e=6;break;case 5:a=HEAP[b+12];e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _PySet_Clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PySet_Type?1:3;break;case 1:e=_PyType_IsSubtype(HEAP[b+4],_PySet_Type)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str394027,2291);a=-1;e=4;break;case 3:a=_set_clear_internal(b);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function _PySet_Contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PySet_Type?1:5;break;case 1:b=HEAP[a+4]!=_PyFrozenSet_Type?2:5;break;case 2:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)==0?3:5;break;case 3:b=_PyType_IsSubtype(HEAP[a+4],_PyFrozenSet_Type)==0?4:5;break;case 4:__PyErr_BadInternalCall(__str394027,2301);d=-1;b=6;break;case 5:d=_set_contains_key(a,c);b=6;break;case 6:return b=d;default:assert(0,"bad label: "+b)}} -function _PySet_Discard(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PySet_Type?1:3;break;case 1:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str394027,2311);d=-1;b=4;break;case 3:d=_set_discard_key(a,c);b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}} -function _PySet_Add(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PySet_Type?1:6;break;case 1:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)==0?2:6;break;case 2:b=HEAP[a+4]==_PyFrozenSet_Type?4:3;break;case 3:b=_PyType_IsSubtype(HEAP[a+4],_PyFrozenSet_Type)==0?5:4;break;case 4:b=HEAP[a]!=1?5:6;break;case 5:__PyErr_BadInternalCall(__str394027,2322);d=-1;b=7;break;case 6:d=_set_add_key(a,c);b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function __PySet_Next(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;c=HEAP[d+4]!=_PySet_Type?1:5;break;case 1:c=HEAP[d+4]!=_PyFrozenSet_Type?2:5;break;case 2:c=_PyType_IsSubtype(HEAP[d+4],_PySet_Type)==0?3:5;break;case 3:c=_PyType_IsSubtype(HEAP[d+4],_PyFrozenSet_Type)==0?4:5;break;case 4:__PyErr_BadInternalCall(__str394027,2334);j=-1;c=8;break;case 5:c=_set_next(d,f,k)==0?6:7;break;case 6:j=0;c=8;break;case 7:HEAP[h]=HEAP[HEAP[k]+ -4];j=1;c=8;break;case 8:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function __PySet_NextEntry(g,e,b,a){var c=STACKTOP;STACKTOP+=4;_memset(c,0,4);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c;f=g;h=e;j=b;k=a;d=HEAP[f+4]!=_PySet_Type?1:5;break;case 1:d=HEAP[f+4]!=_PyFrozenSet_Type?2:5;break;case 2:d=_PyType_IsSubtype(HEAP[f+4],_PySet_Type)==0?3:5;break;case 3:d=_PyType_IsSubtype(HEAP[f+4],_PyFrozenSet_Type)==0?4:5;break;case 4:__PyErr_BadInternalCall(__str394027,2349);l=-1;d=8;break;case 5:d=_set_next(f,h,m)==0?6:7;break;case 6:l=0;d=8;break;case 7:HEAP[j]= -HEAP[HEAP[m]+4];HEAP[k]=HEAP[HEAP[m]];l=1;d=8;break;case 8:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}}function _PySet_Pop(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+4]!=_PySet_Type?1:3;break;case 1:e=_PyType_IsSubtype(HEAP[b+4],_PySet_Type)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str394027,2363);a=0;e=4;break;case 3:a=_set_pop(b);e=4;break;case 4:return g=a;default:assert(0,"bad label: "+e)}} -function __PySet_Update(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PySet_Type?1:3;break;case 1:b=_PyType_IsSubtype(HEAP[a+4],_PySet_Type)==0?2:3;break;case 2:__PyErr_BadInternalCall(__str394027,2373);d=-1;b=4;break;case 3:d=_set_update_internal(a,c);b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}}function _timeval_from_double(g,e){var b=_floor(g);HEAP[e]=b|0;b=_fmod(g,1);HEAP[e+4]=b*1E6|0}function _double_from_timeval(g){return HEAP[g]+HEAP[g+4]/1E6} -function _itimer_retval(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=_PyTuple_New(2);e=c==0?1:2;break;case 1:a=0;e=11;break;case 2:var f=_double_from_timeval(b+8);d=_PyFloat_FromDouble(f);f=c;e=d==0?3:6;break;case 3:HEAP[c]=HEAP[f]-1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:a=0;e=11;break;case 6:HEAP[f+12]=d;var h=_double_from_timeval(b);d=_PyFloat_FromDouble(h);h=c;e=d==0?7:10;break;case 7:HEAP[c]=HEAP[h]-1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+ -4]+24]](c);e=9;break;case 9:a=0;e=11;break;case 10:HEAP[h+12+4]=d;a=c;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}}function _signal_default_int_handler(){_PyErr_SetNone(HEAP[_PyExc_KeyboardInterrupt]);return 0}function _checksignals_witharg(){return _PyErr_CheckSignals()} -function _trip_signal(g){var e;for(e=-1;;)switch(e){case -1:HEAP[_Handlers+g*8]=1;e=HEAP[_is_tripped]!=0?3:1;break;case 1:HEAP[_is_tripped]=1;_Py_AddPendingCall(156,0);e=HEAP[_wakeup_fd]!=-1?2:3;break;case 2:_write(HEAP[_wakeup_fd],__str4034,1);e=3;break;case 3:return;default:assert(0,"bad label: "+e)}} -function _signal_handler(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=___errno_location();a=HEAP[a];_trip_signal(b);e=b!=17?1:2;break;case 1:_PyOS_setsig(b,158);e=2;break;case 2:g=___errno_location();HEAP[g]=a;return;default:assert(0,"bad label: "+e)}} -function _signal_alarm(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=_PyArg_ParseTuple(e,__str14035,allocate([c,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:a=_alarm(HEAP[c]);d=_PyInt_FromLong(a);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _signal_pause(){var g;for(g=-1;;)switch(g){case -1:var e;_pause();g=_PyErr_CheckSignals()!=0?1:2;break;case 1:e=0;g=3;break;case 2:HEAP[__Py_NoneStruct]+=1;e=__Py_NoneStruct;g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}} -function _signal_signal(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4,h;a=_PyArg_ParseTuple(e,__str24036,allocate([f,0,0,0,c,0,0,0],["i32*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=14;break;case 2:a=HEAP[f]<=0|HEAP[f]>64?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str34037);d=0;a=14;break;case 4:a=HEAP[c]==HEAP[_IgnoreHandler]?5:6;break;case 5:h=1;a=11;break;case 6:a=HEAP[c]==HEAP[_DefaultHandler]? -7:8;break;case 7:h=0;a=11;break;case 8:a=_PyCallable_Check(HEAP[c])==0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str44038);d=0;a=14;break;case 10:h=158;a=11;break;case 11:a=_PyOS_setsig(HEAP[f],h)==-1?12:13;break;case 12:_PyErr_SetFromErrno(HEAP[_PyExc_RuntimeError]);d=0;a=14;break;case 13:a=HEAP[_Handlers+HEAP[f]*8+4];HEAP[_Handlers+HEAP[f]*8]=0;HEAP[HEAP[c]]+=1;HEAP[_Handlers+HEAP[f]*8+4]=HEAP[c];d=a;a=14;break;case 14:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _signal_getsignal(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;a=_PyArg_ParseTuple(e,__str54039,allocate([c,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=5;break;case 2:a=HEAP[c]<=0|HEAP[c]>64?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str34037);d=0;a=5;break;case 4:a=HEAP[_Handlers+HEAP[c]*8+4];HEAP[a]+=1;d=a;a=5;break;case 5:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _signal_set_wakeup_fd(g,e){var b=STACKTOP;STACKTOP+=100;_memset(b,0,100);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+96;a=_PyArg_ParseTuple(e,__str64040,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:a=HEAP[f]!=-1?3:5;break;case 3:a=___01fstat64_(HEAP[f],c)!=0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_ValueError],__str74041);d=0;a=6;break;case 5:a=HEAP[_wakeup_fd];HEAP[_wakeup_fd]=HEAP[f];d=_PyLong_FromLong(a);a=6;break;case 6:return c= -d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _PySignal_SetWakeupFd(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=HEAP[_wakeup_fd];e=b<0?1:2;break;case 1:b=-1;e=2;break;case 2:return HEAP[_wakeup_fd]=b,g=a;default:assert(0,"bad label: "+e)}} -function _signal_setitimer(g,e){var b=STACKTOP;STACKTOP+=52;_memset(b,0,52);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+8,h=b+16,j=b+20,k=b+36;a=e;HEAP[f]=0;a=_PyArg_ParseTuple(a,__str84042,allocate([h,0,0,0,d,0,0,0,f,0,0,0],["i32*",0,0,0,"double*",0,0,0,"double*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:_timeval_from_double(HEAP[d],j+8);_timeval_from_double(HEAP[f],j);a=_setitimer(HEAP[h],j,k)!=0?3:4;break;case 3:_PyErr_SetFromErrno(HEAP[_ItimerError]);c=0;a=5;break;case 4:c= -_itimer_retval(k);a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _signal_getitimer(g,e){var b=STACKTOP;STACKTOP+=20;_memset(b,0,20);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=_PyArg_ParseTuple(e,__str94043,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_getitimer(HEAP[d],f)!=0?3:4;break;case 3:_PyErr_SetFromErrno(HEAP[_ItimerError]);c=0;a=5;break;case 4:c=_itimer_retval(f);a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _initsignal(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d;e=_Py_InitModule4(__str134047,_signal_methods,_module_doc4052,0,1013);g=e==0?135:1;break;case 1:b=_PyModule_GetDict(e);a=_PyLong_FromVoidPtr(0);HEAP[_DefaultHandler]=a;a=HEAP[_DefaultHandler];g=a==0?135:2;break;case 2:g=_PyDict_SetItemString(b,__str184053,a)<0?135:3;break;case 3:a=_PyLong_FromVoidPtr(1);HEAP[_IgnoreHandler]=a;a=HEAP[_IgnoreHandler];g=a==0?135:4;break;case 4:g=_PyDict_SetItemString(b,__str194054,a)<0?135:5;break; -case 5:a=_PyInt_FromLong(65);g=a==0?135:6;break;case 6:g=_PyDict_SetItemString(b,__str204055,a)<0?135:7;break;case 7:HEAP[a]-=1;g=HEAP[a]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=9;break;case 9:g=_PyDict_GetItemString(b,__str174051);a=HEAP[_IntHandler]=g;g=g==0?135:10;break;case 10:HEAP[HEAP[_IntHandler]]+=1;HEAP[_Handlers]=0;c=1;g=11;break;case 11:d=_PyOS_getsig(c);HEAP[_Handlers+c*8]=0;g=d==0?12:13;break;case 12:HEAP[_Handlers+c*8+4]=HEAP[_DefaultHandler];g=16;break;case 13:var f= -c;g=d==1?14:15;break;case 14:HEAP[_Handlers+f*8+4]=HEAP[_IgnoreHandler];g=16;break;case 15:HEAP[_Handlers+f*8+4]=__Py_NoneStruct;g=16;break;case 16:HEAP[HEAP[_Handlers+c*8+4]]+=1;c=g=c+1;g=g<=64?11:17;break;case 17:g=HEAP[_Handlers+16+4]==HEAP[_DefaultHandler]?18:21;break;case 18:HEAP[HEAP[_IntHandler]]+=1;g=HEAP[_Handlers+16+4];HEAP[g]-=1;g=HEAP[g]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[_Handlers+16+4]+4]+24]](HEAP[_Handlers+16+4]);g=20;break;case 20:HEAP[_Handlers+16+4]=HEAP[_IntHandler]; -g=_PyOS_setsig(2,158);HEAP[_old_siginthandler]=g;g=21;break;case 21:a=_PyInt_FromLong(1);_PyDict_SetItemString(b,__str214056,a);g=a!=0?22:24;break;case 22:HEAP[a]-=1;g=HEAP[a]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=24;break;case 24:a=_PyInt_FromLong(2);_PyDict_SetItemString(b,__str224057,a);g=a!=0?25:27;break;case 25:HEAP[a]-=1;g=HEAP[a]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=27;break;case 27:a=_PyInt_FromLong(3);_PyDict_SetItemString(b,__str234058, -a);g=a!=0?28:30;break;case 28:HEAP[a]-=1;g=HEAP[a]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=30;break;case 30:a=_PyInt_FromLong(4);_PyDict_SetItemString(b,__str244059,a);g=a!=0?31:33;break;case 31:HEAP[a]-=1;g=HEAP[a]==0?32:33;break;case 32:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=33;break;case 33:a=_PyInt_FromLong(5);_PyDict_SetItemString(b,__str254060,a);g=a!=0?34:36;break;case 34:HEAP[a]-=1;g=HEAP[a]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=36;break;case 36:a= -_PyInt_FromLong(6);_PyDict_SetItemString(b,__str264061,a);g=a!=0?37:39;break;case 37:HEAP[a]-=1;g=HEAP[a]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=39;break;case 39:a=_PyInt_FromLong(6);_PyDict_SetItemString(b,__str274062,a);g=a!=0?40:42;break;case 40:HEAP[a]-=1;g=HEAP[a]==0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=42;break;case 42:a=_PyInt_FromLong(8);_PyDict_SetItemString(b,__str284063,a);g=a!=0?43:45;break;case 43:HEAP[a]-=1;g=HEAP[a]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[a+ -4]+24]](a);g=45;break;case 45:a=_PyInt_FromLong(9);_PyDict_SetItemString(b,__str294064,a);g=a!=0?46:48;break;case 46:HEAP[a]-=1;g=HEAP[a]==0?47:48;break;case 47:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=48;break;case 48:a=_PyInt_FromLong(7);_PyDict_SetItemString(b,__str304065,a);g=a!=0?49:51;break;case 49:HEAP[a]-=1;g=HEAP[a]==0?50:51;break;case 50:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=51;break;case 51:a=_PyInt_FromLong(11);_PyDict_SetItemString(b,__str314066,a);g=a!=0?52:54;break;case 52:HEAP[a]-= -1;g=HEAP[a]==0?53:54;break;case 53:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=54;break;case 54:a=_PyInt_FromLong(31);_PyDict_SetItemString(b,__str324067,a);g=a!=0?55:57;break;case 55:HEAP[a]-=1;g=HEAP[a]==0?56:57;break;case 56:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=57;break;case 57:a=_PyInt_FromLong(13);_PyDict_SetItemString(b,__str334068,a);g=a!=0?58:60;break;case 58:HEAP[a]-=1;g=HEAP[a]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=60;break;case 60:a=_PyInt_FromLong(14);_PyDict_SetItemString(b, -__str344069,a);g=a!=0?61:63;break;case 61:HEAP[a]-=1;g=HEAP[a]==0?62:63;break;case 62:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=63;break;case 63:a=_PyInt_FromLong(15);_PyDict_SetItemString(b,__str354070,a);g=a!=0?64:66;break;case 64:HEAP[a]-=1;g=HEAP[a]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=66;break;case 66:a=_PyInt_FromLong(10);_PyDict_SetItemString(b,__str364071,a);g=a!=0?67:69;break;case 67:HEAP[a]-=1;g=HEAP[a]==0?68:69;break;case 68:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a); -g=69;break;case 69:a=_PyInt_FromLong(12);_PyDict_SetItemString(b,__str374072,a);g=a!=0?70:72;break;case 70:HEAP[a]-=1;g=HEAP[a]==0?71:72;break;case 71:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=72;break;case 72:a=_PyInt_FromLong(17);_PyDict_SetItemString(b,__str384073,a);g=a!=0?73:75;break;case 73:HEAP[a]-=1;g=HEAP[a]==0?74:75;break;case 74:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=75;break;case 75:a=_PyInt_FromLong(17);_PyDict_SetItemString(b,__str394074,a);g=a!=0?76:78;break;case 76:HEAP[a]-=1;g=HEAP[a]== -0?77:78;break;case 77:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=78;break;case 78:a=_PyInt_FromLong(30);_PyDict_SetItemString(b,__str404075,a);g=a!=0?79:81;break;case 79:HEAP[a]-=1;g=HEAP[a]==0?80:81;break;case 80:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=81;break;case 81:a=_PyInt_FromLong(29);_PyDict_SetItemString(b,__str414076,a);g=a!=0?82:84;break;case 82:HEAP[a]-=1;g=HEAP[a]==0?83:84;break;case 83:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=84;break;case 84:a=_PyInt_FromLong(23);_PyDict_SetItemString(b, -__str424077,a);g=a!=0?85:87;break;case 85:HEAP[a]-=1;g=HEAP[a]==0?86:87;break;case 86:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=87;break;case 87:a=_PyInt_FromLong(28);_PyDict_SetItemString(b,__str434078,a);g=a!=0?88:90;break;case 88:HEAP[a]-=1;g=HEAP[a]==0?89:90;break;case 89:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=90;break;case 90:a=_PyInt_FromLong(29);_PyDict_SetItemString(b,__str444079,a);g=a!=0?91:93;break;case 91:HEAP[a]-=1;g=HEAP[a]==0?92:93;break;case 92:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a); -g=93;break;case 93:a=_PyInt_FromLong(19);_PyDict_SetItemString(b,__str454080,a);g=a!=0?94:96;break;case 94:HEAP[a]-=1;g=HEAP[a]==0?95:96;break;case 95:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=96;break;case 96:a=_PyInt_FromLong(20);_PyDict_SetItemString(b,__str464081,a);g=a!=0?97:99;break;case 97:HEAP[a]-=1;g=HEAP[a]==0?98:99;break;case 98:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=99;break;case 99:a=_PyInt_FromLong(18);_PyDict_SetItemString(b,__str474082,a);g=a!=0?100:102;break;case 100:HEAP[a]-=1;g= -HEAP[a]==0?101:102;break;case 101:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=102;break;case 102:a=_PyInt_FromLong(21);_PyDict_SetItemString(b,__str484083,a);g=a!=0?103:105;break;case 103:HEAP[a]-=1;g=HEAP[a]==0?104:105;break;case 104:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=105;break;case 105:a=_PyInt_FromLong(22);_PyDict_SetItemString(b,__str494084,a);g=a!=0?106:108;break;case 106:HEAP[a]-=1;g=HEAP[a]==0?107:108;break;case 107:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=108;break;case 108:a=_PyInt_FromLong(26); -_PyDict_SetItemString(b,__str504085,a);g=a!=0?109:111;break;case 109:HEAP[a]-=1;g=HEAP[a]==0?110:111;break;case 110:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=111;break;case 111:a=_PyInt_FromLong(27);_PyDict_SetItemString(b,__str514086,a);g=a!=0?112:114;break;case 112:HEAP[a]-=1;g=HEAP[a]==0?113:114;break;case 113:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=114;break;case 114:a=_PyInt_FromLong(24);_PyDict_SetItemString(b,__str524087,a);g=a!=0?115:117;break;case 115:HEAP[a]-=1;g=HEAP[a]==0?116:117;break; -case 116:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=117;break;case 117:a=_PyInt_FromLong(25);_PyDict_SetItemString(b,__str534088,a);g=a!=0?118:120;break;case 118:HEAP[a]-=1;g=HEAP[a]==0?119:120;break;case 119:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=120;break;case 120:a=___libc_current_sigrtmin();a=_PyInt_FromLong(a);_PyDict_SetItemString(b,__str544089,a);g=a!=0?121:123;break;case 121:HEAP[a]-=1;g=HEAP[a]==0?122:123;break;case 122:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=123;break;case 123:a=___libc_current_sigrtmax(); -a=_PyInt_FromLong(a);_PyDict_SetItemString(b,__str554090,a);g=a!=0?124:126;break;case 124:HEAP[a]-=1;g=HEAP[a]==0?125:126;break;case 125:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=126;break;case 126:a=_PyLong_FromLong(0);_PyDict_SetItemString(b,__str564091,a);HEAP[a]-=1;g=HEAP[a]==0?127:128;break;case 127:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=128;break;case 128:a=_PyLong_FromLong(1);_PyDict_SetItemString(b,__str574092,a);HEAP[a]-=1;g=HEAP[a]==0?129:130;break;case 129:FUNCTION_TABLE[HEAP[HEAP[a+4]+ -24]](a);g=130;break;case 130:a=_PyLong_FromLong(2);_PyDict_SetItemString(b,__str584093,a);HEAP[a]-=1;g=HEAP[a]==0?131:132;break;case 131:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=132;break;case 132:g=_PyErr_NewException(__str594094,HEAP[_PyExc_IOError],0);HEAP[_ItimerError]=g;g=g!=0?133:134;break;case 133:_PyDict_SetItemString(b,__str604095,HEAP[_ItimerError]);g=134;break;case 134:_PyErr_Occurred();return;case 135:return;default:assert(0,"bad label: "+g)}} -function _finisignal(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a;_PyOS_setsig(2,HEAP[_old_siginthandler]);HEAP[_old_siginthandler]=0;g=b=1;break;case 1:a=HEAP[_Handlers+b*8+4];HEAP[_Handlers+b*8]=0;HEAP[_Handlers+b*8+4]=0;g=b!=2?2:6;break;case 2:var c=a;a!=0&c!=__Py_NoneStruct?(e=2,g=3):(e=2,g=7);break;case 3:var d=a;d!=HEAP[_DefaultHandler]?(e=3,g=4):(e=3,g=7);break;case 4:var f=a;f!=HEAP[_IgnoreHandler]?(e=4,g=5):(e=4,g=7);break;case 5:_PyOS_setsig(b,0);g=6;break;case 6:var h=a,e=6;g=7; -break;case 7:g=(e==6?h:e==4?f:e==3?d:c)!=0?8:10;break;case 8:HEAP[a]-=1;g=HEAP[a]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=10;break;case 10:b=g=b+1;g=g<=64?1:11;break;case 11:g=HEAP[_IntHandler]!=0?12:14;break;case 12:g=HEAP[_IntHandler];HEAP[g]-=1;g=HEAP[g]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[HEAP[_IntHandler]+4]+24]](HEAP[_IntHandler]);g=14;break;case 14:HEAP[_IntHandler]=0;g=HEAP[_DefaultHandler]!=0?15:17;break;case 15:g=HEAP[_DefaultHandler];HEAP[g]-=1;g=HEAP[g]== -0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[_DefaultHandler]+4]+24]](HEAP[_DefaultHandler]);g=17;break;case 17:HEAP[_DefaultHandler]=0;g=HEAP[_IgnoreHandler]!=0?18:20;break;case 18:g=HEAP[_IgnoreHandler];HEAP[g]-=1;g=HEAP[g]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[_IgnoreHandler]+4]+24]](HEAP[_IgnoreHandler]);g=20;break;case 20:HEAP[_IgnoreHandler]=0;return;default:assert(0,"bad label: "+g)}} -function _PyErr_CheckSignals(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a,c,d,f;g=HEAP[_is_tripped]==0?1:2;break;case 1:b=0;g=16;break;case 2:HEAP[_is_tripped]=0;c=_PyEval_GetFrame();g=c==0?3:4;break;case 3:c=__Py_NoneStruct;g=4;break;case 4:a=1;e=4;g=14;break;case 5:g=HEAP[_Handlers+a*8]!=0?6:13;break;case 6:d=0;f=_Py_BuildValue(__str614096,allocate([a,0,0,0,c,0,0,0],["i32",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[_Handlers+a*8]=0;g=f!=0?7:9;break;case 7:d=_PyEval_CallObjectWithKeywords(HEAP[_Handlers+ -a*8+4],f,0);HEAP[f]-=1;g=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);g=9;break;case 9:g=d==0?10:11;break;case 10:b=-1;g=16;break;case 11:HEAP[d]-=1;g=HEAP[d]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);g=13;break;case 13:var h=a+1;a=h;e=13;g=14;break;case 14:g=(e==13?h:1)<=64?5:15;break;case 15:b=0;g=16;break;case 16:return g=b;default:assert(0,"bad label: "+g)}}function _PyErr_SetInterrupt(){_trip_signal(2)} -function _PyOS_InitInterrupts(){_initsignal();__PyImport_FixupExtension(__str134047,__str134047)}function _PyOS_FiniInterrupts(){_finisignal()}function _PyOS_InterruptOccurred(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[_Handlers+16]!=0?1:2;break;case 1:HEAP[_Handlers+16]=0;e=1;g=3;break;case 2:e=0;g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}}function _PyOS_AfterFork(){}function _ellipsis_repr(){return _PyString_FromString(__str4103)} -function _PySlice_New(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=__PyObject_New(_PySlice_Type);a=j==0?1:2;break;case 1:h=0;a=9;break;case 2:a=f==0?3:4;break;case 3:f=__Py_NoneStruct;a=4;break;case 4:HEAP[f]+=1;a=c==0?5:6;break;case 5:c=__Py_NoneStruct;a=6;break;case 6:HEAP[c]+=1;a=d==0?7:8;break;case 7:d=__Py_NoneStruct;a=8;break;case 8:HEAP[d]+=1;HEAP[j+16]=f;HEAP[j+8]=c;HEAP[j+12]=d;h=j;a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function __PySlice_FromIndices(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;b=g;a=e;d=_PyInt_FromSsize_t(b);b=d==0?1:2;break;case 1:c=0;b=11;break;case 2:f=_PyInt_FromSsize_t(a);var j=d;b=f==0?3:6;break;case 3:HEAP[d]=HEAP[j]-1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=11;break;case 6:h=_PySlice_New(j,f,0);HEAP[d]-=1;b=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=8;break;case 8:HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=10;break;case 10:c=h;b=11;break;case 11:return a=c;default:assert(0,"bad label: "+b)}} -function _PySlice_GetIndices(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o;f=g;h=e;j=b;k=a;l=c;d=HEAP[f+16]==__Py_NoneStruct?1:2;break;case 1:HEAP[l]=1;d=6;break;case 2:d=(HEAP[HEAP[HEAP[f+16]+4]+84]&8388608)==0?3:5;break;case 3:d=(HEAP[HEAP[HEAP[f+16]+4]+84]&16777216)==0?4:5;break;case 4:o=-1;d=33;break;case 5:d=_PyInt_AsSsize_t(HEAP[f+16]);HEAP[l]=d;d=6;break;case 6:d=HEAP[f+8]==__Py_NoneStruct?7:11;break;case 7:d=HEAP[l]<0?8:9;break;case 8:n=h-1;d=10;break;case 9:n=0;d=10;break; -case 10:HEAP[j]=n;d=16;break;case 11:d=(HEAP[HEAP[HEAP[f+8]+4]+84]&8388608)==0?12:14;break;case 12:d=(HEAP[HEAP[HEAP[f+16]+4]+84]&16777216)==0?13:14;break;case 13:o=-1;d=33;break;case 14:d=_PyInt_AsSsize_t(HEAP[f+8]);HEAP[j]=d;d=HEAP[j]<0?15:16;break;case 15:HEAP[j]=h+HEAP[j];d=16;break;case 16:d=HEAP[f+12]==__Py_NoneStruct?17:21;break;case 17:d=HEAP[l]>=0?18:19;break;case 18:m=h;d=20;break;case 19:m=-1;d=20;break;case 20:HEAP[k]=m;d=26;break;case 21:d=(HEAP[HEAP[HEAP[f+12]+4]+84]&8388608)==0?22: -24;break;case 22:d=(HEAP[HEAP[HEAP[f+16]+4]+84]&16777216)==0?23:24;break;case 23:o=-1;d=33;break;case 24:d=_PyInt_AsSsize_t(HEAP[f+12]);HEAP[k]=d;d=HEAP[k]<0?25:26;break;case 25:HEAP[k]=h+HEAP[k];d=26;break;case 26:d=HEAP[k]>h?27:28;break;case 27:o=-1;d=33;break;case 28:d=HEAP[j]>=h?29:30;break;case 29:o=-1;d=33;break;case 30:d=HEAP[l]==0?31:32;break;case 31:o=-1;d=33;break;case 32:o=0;d=33;break;case 33:return g=o;default:assert(0,"bad label: "+d)}} -function _PySlice_GetIndicesEx(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v,w;h=g;j=e;k=b;l=a;m=c;n=d;f=HEAP[h+16]==__Py_NoneStruct?1:2;break;case 1:HEAP[m]=1;f=6;break;case 2:f=__PyEval_SliceIndex(HEAP[h+16],m)==0?3:4;break;case 3:t=-1;f=53;break;case 4:f=HEAP[m]==0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError],__str24107);t=-1;f=53;break;case 6:f=HEAP[m]<0?7:8;break;case 7:s=j-1;f=9;break;case 8:s=0;f=9;break;case 9:v=s;f=HEAP[m]>=0?10:11;break;case 10:u= -j;f=12;break;case 11:u=-1;f=12;break;case 12:w=u;f=HEAP[h+8]==__Py_NoneStruct?13:14;break;case 13:HEAP[k]=v;f=28;break;case 14:f=__PyEval_SliceIndex(HEAP[h+8],k)==0?15:16;break;case 15:t=-1;f=53;break;case 16:f=HEAP[k]<0?17:18;break;case 17:HEAP[k]=j+HEAP[k];f=18;break;case 18:f=HEAP[k]<0?19:23;break;case 19:f=HEAP[m]<0?20:21;break;case 20:r=-1;f=22;break;case 21:r=0;f=22;break;case 22:HEAP[k]=r;f=23;break;case 23:f=HEAP[k]>=j?24:28;break;case 24:var x=j;f=HEAP[m]<0?25:26;break;case 25:q=x-1;f=27; -break;case 26:q=x;f=27;break;case 27:HEAP[k]=q;f=28;break;case 28:f=HEAP[h+12]==__Py_NoneStruct?29:30;break;case 29:HEAP[l]=w;f=44;break;case 30:f=__PyEval_SliceIndex(HEAP[h+12],l)==0?31:32;break;case 31:t=-1;f=53;break;case 32:f=HEAP[l]<0?33:34;break;case 33:HEAP[l]=j+HEAP[l];f=34;break;case 34:f=HEAP[l]<0?35:39;break;case 35:f=HEAP[m]<0?36:37;break;case 36:p=-1;f=38;break;case 37:p=0;f=38;break;case 38:HEAP[l]=p;f=39;break;case 39:f=HEAP[l]>=j?40:44;break;case 40:var y=j;f=HEAP[m]<0?41:42;break; -case 41:o=y-1;f=43;break;case 42:o=y;f=43;break;case 43:HEAP[l]=o;f=44;break;case 44:f=HEAP[m]>=0?46:45;break;case 45:f=HEAP[l]>=HEAP[k]?48:46;break;case 46:f=HEAP[m]<=0?49:47;break;case 47:f=HEAP[k]>=HEAP[l]?48:49;break;case 48:HEAP[n]=0;f=52;break;case 49:var z=HEAP[l]-HEAP[k];f=HEAP[m]<0?50:51;break;case 50:HEAP[n]=((z+1)/HEAP[m]|0)+1;f=52;break;case 51:HEAP[n]=((z-1)/HEAP[m]|0)+1;f=52;break;case 52:t=0;f=53;break;case 53:return g=t;default:assert(0,"bad label: "+f)}} -function _slice_new(g,e,b){g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4,j=g+8;c=e;a=b;HEAP[j]=0;HEAP[h]=HEAP[j];HEAP[f]=HEAP[h];a=__PyArg_NoKeywords(__str34108,a)==0?1:2;break;case 1:d=0;a=7;break;case 2:a=_PyArg_UnpackTuple(c,__str44109,1,3,allocate([f,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:d=0;a=7;break;case 4:a=HEAP[h]==0?5:6;break;case 5:HEAP[h]= -HEAP[f];HEAP[f]=0;a=6;break;case 6:d=_PySlice_New(HEAP[f],HEAP[h],HEAP[j]);a=7;break;case 7:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _slice_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=2;break;case 2:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=4;break;case 4:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=6;break;case 6:_PyObject_Free(b);return;default:assert(0,"bad label: "+ -e)}} -function _slice_repr(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:var a=e,c;b=g;c=_PyString_FromString(__str54110);HEAP[a]=c;c=_PyString_FromString(__str64111);var d=_PyObject_Repr(HEAP[b+8]);_PyString_ConcatAndDel(a,d);_PyString_Concat(a,c);d=_PyObject_Repr(HEAP[b+12]);_PyString_ConcatAndDel(a,d);_PyString_Concat(a,c);b=_PyObject_Repr(HEAP[b+16]);_PyString_ConcatAndDel(a,b);b=_PyString_FromString(__str74112);_PyString_ConcatAndDel(a,b);HEAP[c]-=1;b=HEAP[c]==0?1: -2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=2;break;case 2:return g=HEAP[a],STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _slice_indices(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k=b+8,l=b+12;c=g;f=_PyNumber_AsSsize_t(e,HEAP[_PyExc_OverflowError]);a=f==-1?1:3;break;case 1:a=_PyErr_Occurred()!=0?2:3;break;case 2:d=0;a=6;break;case 3:a=_PySlice_GetIndicesEx(c,f,h,j,k,l)<0?4:5;break;case 4:d=0;a=6;break;case 5:d=_Py_BuildValue(__str114116,allocate([HEAP[h],0,0,0,HEAP[j],0,0,0,HEAP[k],0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));a=6;break; -case 6:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _slice_reduce(g){return _Py_BuildValue(__str124117,allocate([HEAP[g+4],0,0,0,HEAP[g+8],0,0,0,HEAP[g+12],0,0,0,HEAP[g+16],0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slice_compare(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;d=e;HEAP[h]=0;a=c==d?1:2;break;case 1:f=0;a=13;break;case 2:a=_PyObject_Cmp(HEAP[c+8],HEAP[d+8],h)<0?3:4;break;case 3:f=-2;a=13;break;case 4:a=HEAP[h]!=0?5:6;break;case 5:f=HEAP[h];a=13;break;case 6:a=_PyObject_Cmp(HEAP[c+12],HEAP[d+12],h)<0?7:8;break;case 7:f=-2;a=13;break;case 8:a=HEAP[h]!=0?9:10;break;case 9:f=HEAP[h];a=13;break;case 10:a=_PyObject_Cmp(HEAP[c+16],HEAP[d+16], -h)<0?11:12;break;case 11:f=-2;a=13;break;case 12:f=HEAP[h];a=13;break;case 13:return a=f,STACKTOP=b,a;default:assert(0,"bad label: "+a)}}function _slice_hash(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str154121);return-1}function _sre_lower(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=e<=127?1:2;break;case 1:b=HEAP[_sre_char_lower+a];e=3;break;case 2:b=a;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _sre_lower_locale(g){var e;for(e=-1;;)switch(e){case -1:var b,a=e=g;e=e<=255?1:2;break;case 1:b=_tolower(a);e=3;break;case 2:b=a;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function _sre_lower_unicode(g){return __PyUnicodeUCS2_ToLowercase(g&65535)} -function _sre_category(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t;b=g;c=e;b=b==0?1:b==1?5:b==2?9:b==3?13:b==4?18:b==5?22:b==6?27:b==7?31:b==8?36:b==9?43:b==10?50:b==11?51:b==12?52:b==13?56:b==14?60:b==15?68:b==16?76:b==17?77:78;break;case 1:b=c<=127?2:3;break;case 2:s=HEAP[_sre_char_info+c]&1;b=4;break;case 3:s=0;b=4;break;case 4:t=s;b=79;break;case 5:b=c<=127?6:7;break;case 6:u=(HEAP[_sre_char_info+c]&1)==0;b=8;break;case 7:u=1;b=8;break;case 8:t=u;b=79;break; -case 9:b=c<=127?10:11;break;case 10:r=HEAP[_sre_char_info+c]&2;b=12;break;case 11:r=0;b=12;break;case 12:t=r;b=79;break;case 13:b=c>127?15:14;break;case 14:b=(HEAP[_sre_char_info+c]&2)==0?15:16;break;case 15:q=1;b=17;break;case 16:q=0;b=17;break;case 17:t=q;b=79;break;case 18:b=c<=127?19:20;break;case 19:p=HEAP[_sre_char_info+c]&16;b=21;break;case 20:p=0;b=21;break;case 21:t=p;b=79;break;case 22:b=c>127?24:23;break;case 23:b=(HEAP[_sre_char_info+c]&16)==0?24:25;break;case 24:o=1;b=26;break;case 25:o= -0;b=26;break;case 26:t=o;b=79;break;case 27:b=c<=127?28:29;break;case 28:n=HEAP[_sre_char_info+c]&4;b=30;break;case 29:n=0;b=30;break;case 30:t=n;b=79;break;case 31:b=c>127?33:32;break;case 32:b=(HEAP[_sre_char_info+c]&4)==0?33:34;break;case 33:m=1;b=35;break;case 34:m=0;b=35;break;case 35:t=m;b=79;break;case 36:var v=c;(v&-256)!=0?(a=36,b=39):(a=36,b=37);break;case 37:b=___ctype_b_loc();b=(HEAP[HEAP[b]+2*c]&8)!=0?40:38;break;case 38:var w=c,a=38;b=39;break;case 39:b=(a==38?w:v)==95?40:41;break;case 40:l= -1;b=42;break;case 41:l=0;b=42;break;case 42:t=l;b=79;break;case 43:var x=c;(x&-256)!=0?(a=43,b=46):(a=43,b=44);break;case 44:b=___ctype_b_loc();b=(HEAP[HEAP[b]+2*c]&8)==0?45:48;break;case 45:var y=c,a=45;b=46;break;case 46:b=(a==45?y:x)==95?48:47;break;case 47:k=1;b=49;break;case 48:k=0;b=49;break;case 49:t=k;b=79;break;case 50:t=__PyUnicodeUCS2_IsDecimalDigit(c&65535);b=79;break;case 51:t=__PyUnicodeUCS2_IsDecimalDigit(c&65535)==0;b=79;break;case 52:var z=c&65535;b=(c&65535)<=127?53:54;break;case 53:j= -HEAP[__Py_ascii_whitespace+z];b=55;break;case 54:j=__PyUnicodeUCS2_IsWhitespace(z&65535);b=55;break;case 55:t=j;b=79;break;case 56:var C=c&65535;b=(c&65535)<=127?57:58;break;case 57:h=HEAP[__Py_ascii_whitespace+C]==0;b=59;break;case 58:h=__PyUnicodeUCS2_IsWhitespace(C&65535)==0;b=59;break;case 59:t=h;b=79;break;case 60:b=__PyUnicodeUCS2_IsAlpha(c&65535)!=0?65:61;break;case 61:b=__PyUnicodeUCS2_IsDecimalDigit(c&65535)!=0?65:62;break;case 62:b=__PyUnicodeUCS2_IsDigit(c&65535)!=0?65:63;break;case 63:b= -__PyUnicodeUCS2_IsNumeric(c&65535)!=0?65:64;break;case 64:b=c==95?65:66;break;case 65:f=1;b=67;break;case 66:f=0;b=67;break;case 67:t=f;b=79;break;case 68:b=__PyUnicodeUCS2_IsAlpha(c&65535)!=0?74:69;break;case 69:b=__PyUnicodeUCS2_IsDecimalDigit(c&65535)!=0?74:70;break;case 70:b=__PyUnicodeUCS2_IsDigit(c&65535)!=0?74:71;break;case 71:b=__PyUnicodeUCS2_IsNumeric(c&65535)!=0?74:72;break;case 72:b=c==95?74:73;break;case 73:d=1;b=75;break;case 74:d=0;b=75;break;case 75:t=d;b=79;break;case 76:t=__PyUnicodeUCS2_IsLinebreak(c& -65535);b=79;break;case 77:t=__PyUnicodeUCS2_IsLinebreak(c&65535)==0;b=79;break;case 78:t=0;b=79;break;case 79:return a=t;default:assert(0,"bad label: "+b)}}function _data_stack_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+840]!=0?1:2;break;case 1:_free(HEAP[b+840]);HEAP[b+840]=0;e=2;break;case 2:HEAP[b+848]=0;HEAP[b+844]=HEAP[b+848];return;default:assert(0,"bad label: "+e)}} -function _data_stack_grow(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;f=e+HEAP[a+848];h=HEAP[a+844];b=h=0?2:5;break;case 2:b=h!=0?3:4;break;case 3:d=h;b=6;break;case 4:d=1;b=6;break;case 5:j=0;b=7;break;case 6:j=b=_realloc(HEAP[a+840],d);b=b==0?7:8;break;case 7:_data_stack_dealloc(a);c=-9;b=10;break;case 8:HEAP[a+840]=j;HEAP[a+844]=h;b=9;break;case 9:c=0;b=10;break;case 10:return a=c;default:assert(0,"bad label: "+b)}} -function _sre_at(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A;c=g;d=e;a=b;a=a==0?1:a==1?2:a==2?1:a==3?22:a==4?37:a==5?8:a==6?15:a==7?21:a==8?52:a==9?67:a==10?82:a==11?101:120;break;case 1:C=HEAP[c+4]==d;a=121;break;case 2:a=HEAP[c+4]==d?5:3;break;case 3:a=HEAP[d+-1]<0?6:4;break;case 4:a=(HEAP[_sre_char_info+HEAP[d+-1]]&4)!=0?5:6;break;case 5:z=1;a=7;break;case 6:z=0;a=7;break;case 7:C=z;a=121;break;case 8:a=d+1!=HEAP[c+12]?11:9;break;case 9:a=HEAP[d]< -0?11:10;break;case 10:a=(HEAP[_sre_char_info+HEAP[d]]&4)!=0?12:11;break;case 11:a=HEAP[c+12]==d?12:13;break;case 12:y=1;a=14;break;case 13:y=0;a=14;break;case 14:C=y;a=121;break;case 15:a=HEAP[c+12]==d?18:16;break;case 16:a=HEAP[d]<0?19:17;break;case 17:a=(HEAP[_sre_char_info+HEAP[d]]&4)!=0?18:19;break;case 18:x=1;a=20;break;case 19:x=0;a=20;break;case 20:C=x;a=121;break;case 21:C=HEAP[c+12]==d;a=121;break;case 22:a=HEAP[c+4]==HEAP[c+12]?23:24;break;case 23:C=0;a=121;break;case 24:a=HEAP[c+4]=0?26:27;break;case 26:v=HEAP[_sre_char_info+HEAP[d+-1]]&16;a=28;break;case 27:v=0;a=28;break;case 28:w=v;a=30;break;case 29:w=0;a=30;break;case 30:A=w;a=HEAP[c+12]>d?31:35;break;case 31:a=HEAP[d]>=0?32:33;break;case 32:s=HEAP[_sre_char_info+HEAP[d]]&16;a=34;break;case 33:s=0;a=34;break;case 34:t=s;a=36;break;case 35:t=0;a=36;break;case 36:C=t;C=C!=A;a=121;break;case 37:a=HEAP[c+4]==HEAP[c+12]?38:39;break;case 38:C=0;a=121;break;case 39:a=HEAP[c+4]=0?41:42;break;case 41:r=HEAP[_sre_char_info+HEAP[d+-1]]&16;a=43;break;case 42:r=0;a=43;break;case 43:u=r;a=45;break;case 44:u=0;a=45;break;case 45:A=u;a=HEAP[c+12]>d?46:50;break;case 46:a=HEAP[d]>=0?47:48;break;case 47:p=HEAP[_sre_char_info+HEAP[d]]&16;a=49;break;case 48:p=0;a=49;break;case 49:q=p;a=51;break;case 50:q=0;a=51;break;case 51:C=q;C=C==A;a=121;break;case 52:a=HEAP[c+4]==HEAP[c+12]?53:54;break;case 53:C=0;a=121;break;case 54:a=HEAP[c+4]>=d?59:55;break;case 55:a=(HEAP[d+-1]& --256)!=0?57:56;break;case 56:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d+-1]]&8)!=0?58:57;break;case 57:a=HEAP[d+-1]==95?58:59;break;case 58:o=1;a=60;break;case 59:o=0;a=60;break;case 60:A=o;a=HEAP[c+12]<=d?65:61;break;case 61:a=(HEAP[d]&-256)!=0?63:62;break;case 62:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d]]&8)!=0?64:63;break;case 63:a=HEAP[d]==95?64:65;break;case 64:n=1;a=66;break;case 65:n=0;a=66;break;case 66:C=n;C=C!=A;a=121;break;case 67:a=HEAP[c+4]==HEAP[c+12]?68:69;break;case 68:C=0;a=121; -break;case 69:a=HEAP[c+4]>=d?74:70;break;case 70:a=(HEAP[d+-1]&-256)!=0?72:71;break;case 71:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d+-1]]&8)!=0?73:72;break;case 72:a=HEAP[d+-1]==95?73:74;break;case 73:m=1;a=75;break;case 74:m=0;a=75;break;case 75:A=m;a=HEAP[c+12]<=d?80:76;break;case 76:a=(HEAP[d]&-256)!=0?78:77;break;case 77:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d]]&8)!=0?79:78;break;case 78:a=HEAP[d]==95?79:80;break;case 79:l=1;a=81;break;case 80:l=0;a=81;break;case 81:C=l;C=C==A;a=121;break; -case 82:a=HEAP[c+4]==HEAP[c+12]?83:84;break;case 83:C=0;a=121;break;case 84:a=HEAP[c+4]>=d?91:85;break;case 85:a=__PyUnicodeUCS2_IsAlpha(HEAP[d+-1]&65535)!=0?90:86;break;case 86:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d+-1]&65535)!=0?90:87;break;case 87:a=__PyUnicodeUCS2_IsDigit(HEAP[d+-1]&65535)!=0?90:88;break;case 88:a=__PyUnicodeUCS2_IsNumeric(HEAP[d+-1]&65535)!=0?90:89;break;case 89:a=HEAP[d+-1]==95?90:91;break;case 90:k=1;a=92;break;case 91:k=0;a=92;break;case 92:A=k;a=HEAP[c+12]<=d?99:93;break; -case 93:a=__PyUnicodeUCS2_IsAlpha(HEAP[d]&65535)!=0?98:94;break;case 94:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d]&65535)!=0?98:95;break;case 95:a=__PyUnicodeUCS2_IsDigit(HEAP[d]&65535)!=0?98:96;break;case 96:a=__PyUnicodeUCS2_IsNumeric(HEAP[d]&65535)!=0?98:97;break;case 97:a=HEAP[d]==95?98:99;break;case 98:j=1;a=100;break;case 99:j=0;a=100;break;case 100:C=j;C=C!=A;a=121;break;case 101:a=HEAP[c+4]==HEAP[c+12]?102:103;break;case 102:C=0;a=121;break;case 103:a=HEAP[c+4]>=d?110:104;break;case 104:a=__PyUnicodeUCS2_IsAlpha(HEAP[d+ --1]&65535)!=0?109:105;break;case 105:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d+-1]&65535)!=0?109:106;break;case 106:a=__PyUnicodeUCS2_IsDigit(HEAP[d+-1]&65535)!=0?109:107;break;case 107:a=__PyUnicodeUCS2_IsNumeric(HEAP[d+-1]&65535)!=0?109:108;break;case 108:a=HEAP[d+-1]==95?109:110;break;case 109:h=1;a=111;break;case 110:h=0;a=111;break;case 111:A=h;a=HEAP[c+12]<=d?118:112;break;case 112:a=__PyUnicodeUCS2_IsAlpha(HEAP[d]&65535)!=0?117:113;break;case 113:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d]&65535)!= -0?117:114;break;case 114:a=__PyUnicodeUCS2_IsDigit(HEAP[d]&65535)!=0?117:115;break;case 115:a=__PyUnicodeUCS2_IsNumeric(HEAP[d]&65535)!=0?117:116;break;case 116:a=HEAP[d]==95?117:118;break;case 117:f=1;a=119;break;case 118:f=0;a=119;break;case 119:C=f;C=C==A;a=121;break;case 120:C=0;a=121;break;case 121:return g=C;default:assert(0,"bad label: "+a)}} -function _sre_charset(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=f=1;break;case 1:b=HEAP[a];a+=2;b=b==0?2:b==9?6:b==10?9:b==11?18:b==19?3:b==26?17:b==27?13:21;break;case 2:d=f==0;b=22;break;case 3:b=HEAP[a]==c?4:5;break;case 4:d=f;b=22;break;case 5:a+=2;b=1;break;case 6:b=_sre_category(HEAP[a]&65535,c)!=0?7:8;break;case 7:d=f;b=22;break;case 8:a+=2;b=1;break;case 9:b=c<=255?10:12;break;case 10:b=(HEAP[a+2*(c>>>4)]>>(c&15)&1)!=0?11:12;break;case 11:d=f;b=22;break;case 12:a+=32; -b=1;break;case 13:b=HEAP[a]<=c?14:16;break;case 14:b=HEAP[a+2]>=c?15:16;break;case 15:d=f;b=22;break;case 16:a+=4;b=1;break;case 17:f=f==0;b=1;break;case 18:h=HEAP[a];a+=2;b=HEAP[a+(c>>>8)];a+=256;b=(HEAP[a+2*(((c&255)>>4)+b*16)]>>(c&15)&1)!=0?19:20;break;case 19:d=f;b=22;break;case 20:a+=h*32;b=1;break;case 21:d=0;b=22;break;case 22:return a=d;default:assert(0,"bad label: "+b)}} -function _sre_count(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=HEAP[c];l=HEAP[c+12];a=l-k>f&f!=65535?1:2;break;case 1:l=k+f;a=2;break;case 2:a=HEAP[d];a=a==2?7:a==3?10:a==15?4:a==19?11:a==20?15:a==24?19:a==25?23:30;break;case 3:k+=1;a=4;break;case 4:a=k>=l?32:5;break;case 5:a=_sre_charset(d+4,HEAP[k]&65535)!=0?3:32;break;case 6:k+=1;a=7;break;case 7:a=k>=l?32:8;break;case 8:a=HEAP[k]<0?6:9;break;case 9:a=(HEAP[_sre_char_info+HEAP[k]]&4)==0?6:32;break;case 10:k=l;a=32; -break;case 11:j=HEAP[d+2];a=13;break;case 12:k+=1;a=13;break;case 13:a=k>=l?32:14;break;case 14:a=HEAP[k]==j?12:32;break;case 15:j=HEAP[d+2];a=17;break;case 16:k+=1;a=17;break;case 17:a=k>=l?32:18;break;case 18:a=(FUNCTION_TABLE[HEAP[c+856]](HEAP[k])&65535)==j?16:32;break;case 19:j=HEAP[d+2];a=21;break;case 20:k+=1;a=21;break;case 21:a=k>=l?32:22;break;case 22:a=HEAP[k]!=j?20:32;break;case 23:j=HEAP[d+2];a=25;break;case 24:k+=1;a=25;break;case 25:a=k>=l?32:26;break;case 26:a=(FUNCTION_TABLE[HEAP[c+ -856]](HEAP[k])&65535)!=j?24:32;break;case 27:var m=a=_sre_match(c,d);a=a<0?28:29;break;case 28:h=m;a=33;break;case 29:a=m==0?31:30;break;case 30:a=HEAP[c]=f?24:23;break;case 23:b=HEAP[HEAP[o+8]]!=HEAP[HEAP[o+12]]?24:25;break;case 24:l=0;b=319;break;case 25:HEAP[o+12]+=2; -HEAP[o+8]+=1;b=11;break;case 26:b=HEAP[o+8]>=f?28:27;break;case 27:b=HEAP[HEAP[o+8]]==HEAP[HEAP[o+12]]?28:29;break;case 28:l=0;b=319;break;case 29:HEAP[o+12]+=2;HEAP[o+8]+=1;b=11;break;case 30:HEAP[a]=HEAP[o+8];l=1;b=319;break;case 31:b=_sre_at(a,HEAP[o+8],HEAP[HEAP[o+12]]&65535)==0?32:33;break;case 32:l=0;b=319;break;case 33:HEAP[o+12]+=2;b=11;break;case 34:b=HEAP[o+8]>=f?36:35;break;case 35:b=_sre_category(HEAP[HEAP[o+12]]&65535,HEAP[HEAP[o+8]])==0?36:37;break;case 36:l=0;b=319;break;case 37:HEAP[o+ -12]+=2;HEAP[o+8]+=1;b=11;break;case 38:b=HEAP[o+8]>=f?41:39;break;case 39:b=HEAP[HEAP[o+8]]<0?42:40;break;case 40:b=(HEAP[_sre_char_info+HEAP[HEAP[o+8]]]&4)!=0?41:42;break;case 41:l=0;b=319;break;case 42:HEAP[o+8]+=1;b=11;break;case 43:b=HEAP[o+8]>=f?44:45;break;case 44:l=0;b=319;break;case 45:HEAP[o+8]+=1;b=11;break;case 46:b=HEAP[o+8]>=f?48:47;break;case 47:b=_sre_charset(HEAP[o+12]+2,HEAP[HEAP[o+8]]&65535)==0?48:49;break;case 48:l=0;b=319;break;case 49:HEAP[o+12]+=2*HEAP[HEAP[o+12]];HEAP[o+8]+= -1;b=11;break;case 50:b=HEAP[o+8]>=f?52:51;break;case 51:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);var H=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+12]]);b=b!=H?52:53;break;case 52:l=0;b=319;break;case 53:HEAP[o+12]+=2;HEAP[o+8]+=1;b=11;break;case 54:b=HEAP[o+8]>=f?56:55;break;case 55:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);H=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+12]]);b=b==H?56:57;break;case 56:l=0;b=319;break;case 57:HEAP[o+12]+=2;HEAP[o+8]+=1;b=11;break;case 58:b=HEAP[o+8]>=f?60:59;break; -case 59:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);b=_sre_charset(HEAP[o+12]+2,b&65535)==0?60:61;break;case 60:l=0;b=319;break;case 61:HEAP[o+12]+=2*HEAP[HEAP[o+12]];HEAP[o+8]+=1;b=11;break;case 62:HEAP[o+12]+=2*HEAP[HEAP[o+12]];b=11;break;case 63:HEAP[o+20]=HEAP[a+36];HEAP[o+24]=HEAP[a+32];HEAP[o+28]=HEAP[a+852];b=HEAP[o+28]!=0?64:94;break;case 64:b=HEAP[o+20]>0?65:94;break;case 65:k=HEAP[o+20];b=HEAP[a+844]<(k+1)*4+HEAP[a+848]?66:70;break;case 66:r=_data_stack_grow(a,(k+1)*4);b=r<0?67:68;break; -case 67:d=r;b=336;break;case 68:b=j!=-1?69:70;break;case 69:o=HEAP[a+840]+j;b=70;break;case 70:_llvm_memcpy_p0i8_p0i8_i32(HEAP[a+840]+HEAP[a+848],a+40,(k+1)*4,1,0);HEAP[a+848]=(k+1)*4+HEAP[a+848];b=94;break;case 71:b=HEAP[HEAP[ba+12]+2]==19?72:74;break;case 72:b=HEAP[o+8]>=f?93:73;break;case 73:b=HEAP[HEAP[o+8]]!=HEAP[HEAP[o+12]+4]?93:74;break;case 74:b=HEAP[HEAP[o+12]+2]==15?75:77;break;case 75:b=HEAP[o+8]>=f?93:76;break;case 76:b=_sre_charset(HEAP[o+12]+6,HEAP[HEAP[o+8]]&65535)==0?93:77;break;case 77:HEAP[a]= -HEAP[o+8];h=HEAP[a+848];b=HEAP[a+844]0?85:86;break;case 85:HEAP[a+848]-=(HEAP[o+20]+1)*4;b=86;break;case 86:b=l<0?87:88;break;case 87:d=l;b=336;break;case 88:l=1;b=319;break;case 89:b=ra?90:92;break; -case 90:b=HEAP[o+20]>0?91:92;break;case 91:_llvm_memcpy_p0i8_p0i8_i32(a+40,HEAP[a+840]+HEAP[a+848]+(HEAP[o+20]+1)*-4,(HEAP[o+20]+1)*4,1,0);b=92;break;case 92:HEAP[a+36]=HEAP[o+20];HEAP[a+32]=HEAP[o+24];b=93;break;case 93:HEAP[o+12]+=2*HEAP[HEAP[o+12]];b=94;break;case 94:var ba=o;b=HEAP[HEAP[o+12]]!=0?71:95;break;case 95:b=HEAP[ba+28]!=0?96:98;break;case 96:b=HEAP[o+20]>0?97:98;break;case 97:HEAP[a+848]-=(HEAP[o+20]+1)*4;b=98;break;case 98:l=0;b=319;break;case 99:b=HEAP[o+8]+HEAP[HEAP[o+12]+2]>f?100: -101;break;case 100:l=0;b=319;break;case 101:HEAP[a]=HEAP[o+8];l=_sre_count(a,HEAP[o+12]+6,HEAP[HEAP[o+12]+4]);b=l<0?102:103;break;case 102:d=l;b=336;break;case 103:o=HEAP[a+840]+j;HEAP[o+16]=l;HEAP[o+8]+=HEAP[o+16];b=HEAP[o+16]=f?109:112;break;case 112:b=HEAP[HEAP[o+8]]!=HEAP[o+28]?109:113;break;case 113:b=HEAP[o+16]=HEAP[HEAP[o+12]+2]?124:135;break;case 135:l=0;b=319;break;case 136:b=HEAP[o+8]+HEAP[HEAP[o+12]+2]>f?137:138;break;case 137:l=0;b=319; -break;case 138:HEAP[a]=HEAP[o+8];var W=o;b=HEAP[HEAP[o+12]+2]==0?139:140;break;case 139:HEAP[W+16]=0;b=145;break;case 140:l=_sre_count(a,HEAP[o+12]+6,HEAP[HEAP[W+12]+2]);b=l<0?141:142;break;case 141:d=l;b=336;break;case 142:o=HEAP[a+840]+j;b=HEAP[HEAP[o+12]+2]>l?143:144;break;case 143:l=0;b=319;break;case 144:HEAP[o+16]=l;HEAP[o+8]+=HEAP[o+16];b=145;break;case 145:b=HEAP[HEAP[o+12]+2*HEAP[HEAP[o+12]]]==1?146:147;break;case 146:HEAP[a]=HEAP[o+8];l=1;b=319;break;case 147:HEAP[o+20]=HEAP[a+36];HEAP[o+ -24]=HEAP[a+32];b=161;break;case 148:HEAP[a]=HEAP[o+8];h=HEAP[a+848];b=HEAP[a+844]0? -193:199;break;case 193:k=HEAP[o+20];b=HEAP[a+844]<(k+1)*4+HEAP[a+848]?194:198;break;case 194:y=_data_stack_grow(a,(k+1)*4);b=y<0?195:196;break;case 195:d=y;b=336;break;case 196:b=j!=-1?197:198;break;case 197:o=HEAP[a+840]+j;b=198;break;case 198:_llvm_memcpy_p0i8_p0i8_i32(HEAP[a+840]+HEAP[a+848],a+40,(k+1)*4,1,0);HEAP[a+848]=(k+1)*4+HEAP[a+848];b=199;break;case 199:b=HEAP[a+844]0?226:227;break;case 226:l=1;b=319;break;case 227:HEAP[a+852]=HEAP[o+28];HEAP[a]=HEAP[o+8];l=0;b=319;break;case 228:HEAP[o+28]=HEAP[a+852];b=HEAP[o+28]==0?229:230;break;case 229:d=-2;b=336;break;case 230:HEAP[a]= -HEAP[o+8];HEAP[o+16]=HEAP[HEAP[o+28]]+1;b=HEAP[o+16]=HEAP[HEAP[HEAP[o+28]+4]+4]?251:253;break;case 251:b=HEAP[HEAP[HEAP[o+28]+4]+4]!=-1?252:253;break;case 252:l=0;b=319;break;case 253:HEAP[HEAP[o+28]]=HEAP[o+16];h=HEAP[a+848];b=HEAP[a+844]=f?271:270;break;case 270:b=HEAP[HEAP[o+8]]!=HEAP[M]?271:272;break;case 271:l=0;b=319;break;case 272:M+=1;HEAP[o+8]+=1;b=273;break;case 273:var Y=o;b=M=f?283:282;break; -case 282:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);H=FUNCTION_TABLE[HEAP[a+856]](HEAP[J]);b=b!=H?283:284;break;case 283:l=0;b=319;break;case 284:J+=1;HEAP[o+8]+=1;b=285;break;case 285:var fa=o;b=J=HEAP[a+4]?307:316;break;case 307:h=HEAP[a+848];b=HEAP[a+844]0;b=l!=0?210:215;break;case 323:var la=l;b=l<0?224:225;break;case 324:b=l!=0?247:250;break;case 325:b=l!=0?259:262;break;case 326:var ra=HEAP[o+28]!=0;b=l!=0?83:89;break;case 327:b=l!=0?185:188;break;case 328:b=l!=0?237:240;break;case 329:HEAP[a+852]=HEAP[HEAP[o+28]+12];_free(HEAP[o+28]);b=l!=0?172:175;break;case 330:b=l!=0?120:123;break;case 331:b=l!=0?130:133;break;case 332:b=l!=0?154:157;break;case 333:var ya=l;b=l<0?302: -303;break;case 334:b=l!=0?313:316;break;case 335:d=l;b=336;break;case 336:return a=d;default:assert(0,"bad label: "+b)}} -function _sre_search(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u;c=g;d=e;h=HEAP[c+8];j=HEAP[c+12];q=p=o=n=m=l=k=0;b=HEAP[d]==17?1:9;break;case 1:q=HEAP[d+4];b=HEAP[d+6]>1?2:4;break;case 2:j+=1-HEAP[d+6];b=j<=h?3:4;break;case 3:j=h+1;b=4;break;case 4:b=(q&1)!=0?5:6;break;case 5:l=HEAP[d+10];m=HEAP[d+12];n=d+14;p=n+2*l+-2;b=8;break;case 6:b=(q&4)!=0?7:8;break;case 7:o=d+10;b=8;break;case 8:d+=2*(HEAP[d+2]+1);b=9;break;case 9:b=l>1?10:24;break;case 10:r=0;j=HEAP[c+ -12];b=22;break;case 11:var s=r,a=11;b=12;break;case 12:var t=a==11?s:w;b=unSign(HEAP[h],8,1);var v=HEAP[n+2*t];b=reSign(b,16,1)!=reSign(v,16,1)?13:15;break;case 13:b=t==0?21:14;break;case 14:var w=HEAP[p+2*r];r=w;a=14;b=12;break;case 15:r=t+1;b=r==l?16:21;break;case 16:HEAP[c+8]=h+1+(0-l);HEAP[c]=h+1+(0-l)+m;b=(q&2)!=0?17:18;break;case 17:f=1;b=46;break;case 18:k=_sre_match(c,d+m*4);b=k!=0?19:20;break;case 19:f=k;b=46;break;case 20:r=HEAP[p+2*r];b=21;break;case 21:h+=1;b=22;break;case 22:b=h=j?29:28;break;case 28:b=HEAP[h]!=u?26:29;break;case 29:b=h>=j?30:31;break;case 30:f=0;b=46;break;case 31:HEAP[c+8]=h;h+=1;HEAP[c]=h;b=(q&2)!=0?32:33;break;case 32:f=1;b=46;break;case 33:k=_sre_match(c,d+4);b=k!=0?45:27;break;case 34:b=o!=0?35:44;break;case 35:j=HEAP[c+12];b=37;break;case 36:h+=1;b=37;break;case 37:b=h>=j?39:38;break;case 38:b=_sre_charset(o, -HEAP[h]&65535)==0?36:39;break;case 39:b=h>=j?40:41;break;case 40:f=0;b=46;break;case 41:HEAP[c+8]=h;HEAP[c]=h;k=_sre_match(c,d);b=k!=0?45:42;break;case 42:h+=1;b=37;break;case 43:HEAP[c]=h;HEAP[c+8]=HEAP[c];h+=1;k=_sre_match(c,d);b=k!=0?45:44;break;case 44:b=h<=j?43:45;break;case 45:f=k;b=46;break;case 46:return a=f;default:assert(0,"bad label: "+b)}} -function _sre_literal_template(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=3;break;case 1:b=HEAP[a]==92;a+=1;b=b!=0?2:3;break;case 2:d=0;b=5;break;case 3:b=c>0;c-=1;b=b!=0?1:4;break;case 4:d=1;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _sre_uat(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A;c=g;d=e;a=b;a=a==0?1:a==1?2:a==2?1:a==3?22:a==4?37:a==5?8:a==6?15:a==7?21:a==8?52:a==9?67:a==10?82:a==11?101:120;break;case 1:C=HEAP[c+4]==d;a=121;break;case 2:a=HEAP[c+4]==d?5:3;break;case 3:a=HEAP[d+-2]>127?6:4;break;case 4:a=(HEAP[_sre_char_info+HEAP[d+-2]]&4)!=0?5:6;break;case 5:z=1;a=7;break;case 6:z=0;a=7;break;case 7:C=z;a=121;break;case 8:a=d+2!=HEAP[c+12]?11:9;break;case 9:a=HEAP[d]> -127?11:10;break;case 10:a=(HEAP[_sre_char_info+HEAP[d]]&4)!=0?12:11;break;case 11:a=HEAP[c+12]==d?12:13;break;case 12:y=1;a=14;break;case 13:y=0;a=14;break;case 14:C=y;a=121;break;case 15:a=HEAP[c+12]==d?18:16;break;case 16:a=HEAP[d]>127?19:17;break;case 17:a=(HEAP[_sre_char_info+HEAP[d]]&4)!=0?18:19;break;case 18:x=1;a=20;break;case 19:x=0;a=20;break;case 20:C=x;a=121;break;case 21:C=HEAP[c+12]==d;a=121;break;case 22:a=HEAP[c+4]==HEAP[c+12]?23:24;break;case 23:C=0;a=121;break;case 24:a=HEAP[c+4]< -d?25:29;break;case 25:a=HEAP[d+-2]<=127?26:27;break;case 26:v=HEAP[_sre_char_info+HEAP[d+-2]]&16;a=28;break;case 27:v=0;a=28;break;case 28:w=v;a=30;break;case 29:w=0;a=30;break;case 30:A=w;a=HEAP[c+12]>d?31:35;break;case 31:a=HEAP[d]<=127?32:33;break;case 32:s=HEAP[_sre_char_info+HEAP[d]]&16;a=34;break;case 33:s=0;a=34;break;case 34:t=s;a=36;break;case 35:t=0;a=36;break;case 36:C=t;C=C!=A;a=121;break;case 37:a=HEAP[c+4]==HEAP[c+12]?38:39;break;case 38:C=0;a=121;break;case 39:a=HEAP[c+4]d?46:50;break;case 46:a=HEAP[d]<=127?47:48;break;case 47:p=HEAP[_sre_char_info+HEAP[d]]&16;a=49;break;case 48:p=0;a=49;break;case 49:q=p;a=51;break;case 50:q=0;a=51;break;case 51:C=q;C=C==A;a=121;break;case 52:a=HEAP[c+4]==HEAP[c+12]?53:54;break;case 53:C=0;a=121;break;case 54:a=HEAP[c+4]>=d?59:55;break;case 55:a= -(HEAP[d+-2]&-256)!=0?57:56;break;case 56:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d+-2]]&8)!=0?58:57;break;case 57:a=HEAP[d+-2]==95?58:59;break;case 58:o=1;a=60;break;case 59:o=0;a=60;break;case 60:A=o;a=HEAP[c+12]<=d?65:61;break;case 61:a=(HEAP[d]&-256)!=0?63:62;break;case 62:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d]]&8)!=0?64:63;break;case 63:a=HEAP[d]==95?64:65;break;case 64:n=1;a=66;break;case 65:n=0;a=66;break;case 66:C=n;C=C!=A;a=121;break;case 67:a=HEAP[c+4]==HEAP[c+12]?68:69;break;case 68:C= -0;a=121;break;case 69:a=HEAP[c+4]>=d?74:70;break;case 70:a=(HEAP[d+-2]&-256)!=0?72:71;break;case 71:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d+-2]]&8)!=0?73:72;break;case 72:a=HEAP[d+-2]==95?73:74;break;case 73:m=1;a=75;break;case 74:m=0;a=75;break;case 75:A=m;a=HEAP[c+12]<=d?80:76;break;case 76:a=(HEAP[d]&-256)!=0?78:77;break;case 77:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[d]]&8)!=0?79:78;break;case 78:a=HEAP[d]==95?79:80;break;case 79:l=1;a=81;break;case 80:l=0;a=81;break;case 81:C=l;C=C==A; -a=121;break;case 82:a=HEAP[c+4]==HEAP[c+12]?83:84;break;case 83:C=0;a=121;break;case 84:a=HEAP[c+4]>=d?91:85;break;case 85:a=__PyUnicodeUCS2_IsAlpha(HEAP[d+-2]&65535)!=0?90:86;break;case 86:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d+-2]&65535)!=0?90:87;break;case 87:a=__PyUnicodeUCS2_IsDigit(HEAP[d+-2]&65535)!=0?90:88;break;case 88:a=__PyUnicodeUCS2_IsNumeric(HEAP[d+-2]&65535)!=0?90:89;break;case 89:a=HEAP[d+-2]==95?90:91;break;case 90:k=1;a=92;break;case 91:k=0;a=92;break;case 92:A=k;a=HEAP[c+12]<= -d?99:93;break;case 93:a=__PyUnicodeUCS2_IsAlpha(HEAP[d]&65535)!=0?98:94;break;case 94:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d]&65535)!=0?98:95;break;case 95:a=__PyUnicodeUCS2_IsDigit(HEAP[d]&65535)!=0?98:96;break;case 96:a=__PyUnicodeUCS2_IsNumeric(HEAP[d]&65535)!=0?98:97;break;case 97:a=HEAP[d]==95?98:99;break;case 98:j=1;a=100;break;case 99:j=0;a=100;break;case 100:C=j;C=C!=A;a=121;break;case 101:a=HEAP[c+4]==HEAP[c+12]?102:103;break;case 102:C=0;a=121;break;case 103:a=HEAP[c+4]>=d?110:104;break; -case 104:a=__PyUnicodeUCS2_IsAlpha(HEAP[d+-2]&65535)!=0?109:105;break;case 105:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d+-2]&65535)!=0?109:106;break;case 106:a=__PyUnicodeUCS2_IsDigit(HEAP[d+-2]&65535)!=0?109:107;break;case 107:a=__PyUnicodeUCS2_IsNumeric(HEAP[d+-2]&65535)!=0?109:108;break;case 108:a=HEAP[d+-2]==95?109:110;break;case 109:h=1;a=111;break;case 110:h=0;a=111;break;case 111:A=h;a=HEAP[c+12]<=d?118:112;break;case 112:a=__PyUnicodeUCS2_IsAlpha(HEAP[d]&65535)!=0?117:113;break;case 113:a=__PyUnicodeUCS2_IsDecimalDigit(HEAP[d]& -65535)!=0?117:114;break;case 114:a=__PyUnicodeUCS2_IsDigit(HEAP[d]&65535)!=0?117:115;break;case 115:a=__PyUnicodeUCS2_IsNumeric(HEAP[d]&65535)!=0?117:116;break;case 116:a=HEAP[d]==95?117:118;break;case 117:f=1;a=119;break;case 118:f=0;a=119;break;case 119:C=f;C=C==A;a=121;break;case 120:C=0;a=121;break;case 121:return g=C;default:assert(0,"bad label: "+a)}} -function _sre_ucharset(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=f=1;break;case 1:b=HEAP[a];a+=2;b=b==0?2:b==9?6:b==10?9:b==11?18:b==19?3:b==26?17:b==27?13:21;break;case 2:d=f==0;b=22;break;case 3:b=HEAP[a]==c?4:5;break;case 4:d=f;b=22;break;case 5:a+=2;b=1;break;case 6:b=_sre_category(HEAP[a]&65535,c)!=0?7:8;break;case 7:d=f;b=22;break;case 8:a+=2;b=1;break;case 9:b=c<=255?10:12;break;case 10:b=(HEAP[a+2*(c>>>4)]>>(c&15)&1)!=0?11:12;break;case 11:d=f;b=22;break;case 12:a+=32; -b=1;break;case 13:b=HEAP[a]<=c?14:16;break;case 14:b=HEAP[a+2]>=c?15:16;break;case 15:d=f;b=22;break;case 16:a+=4;b=1;break;case 17:f=f==0;b=1;break;case 18:h=HEAP[a];a+=2;b=HEAP[a+(c>>>8)];a+=256;b=(HEAP[a+2*(((c&255)>>4)+b*16)]>>(c&15)&1)!=0?19:20;break;case 19:d=f;b=22;break;case 20:a+=h*32;b=1;break;case 21:d=0;b=22;break;case 22:return a=d;default:assert(0,"bad label: "+b)}} -function _sre_ucount(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=HEAP[c];l=HEAP[c+12];a=((l-k)/2|0)>f&f!=65535?1:2;break;case 1:l=k+2*f;a=2;break;case 2:a=HEAP[d];a=a==2?7:a==3?10:a==15?4:a==19?11:a==20?15:a==24?19:a==25?23:30;break;case 3:k+=2;a=4;break;case 4:a=k>=l?32:5;break;case 5:a=_sre_ucharset(d+4,HEAP[k]&65535)!=0?3:32;break;case 6:k+=2;a=7;break;case 7:a=k>=l?32:8;break;case 8:a=HEAP[k]>127?6:9;break;case 9:a=(HEAP[_sre_char_info+HEAP[k]]&4)==0?6:32;break;case 10:k= -l;a=32;break;case 11:j=HEAP[d+2];a=13;break;case 12:k+=2;a=13;break;case 13:a=k>=l?32:14;break;case 14:a=HEAP[k]==j?12:32;break;case 15:j=HEAP[d+2];a=17;break;case 16:k+=2;a=17;break;case 17:a=k>=l?32:18;break;case 18:a=(FUNCTION_TABLE[HEAP[c+856]](HEAP[k])&65535)==j?16:32;break;case 19:j=HEAP[d+2];a=21;break;case 20:k+=2;a=21;break;case 21:a=k>=l?32:22;break;case 22:a=HEAP[k]!=j?20:32;break;case 23:j=HEAP[d+2];a=25;break;case 24:k+=2;a=25;break;case 25:a=k>=l?32:26;break;case 26:a=(FUNCTION_TABLE[HEAP[c+ -856]](HEAP[k])&65535)!=j?24:32;break;case 27:var m=a=_sre_umatch(c,d);a=a<0?28:29;break;case 28:h=m;a=33;break;case 29:a=m==0?31:30;break;case 30:a=HEAP[c]=f?24:23;break;case 23:b=HEAP[HEAP[o+8]]!=HEAP[HEAP[o+12]]?24:25;break;case 24:l=0;b=319;break;case 25:HEAP[o+ -12]+=2;HEAP[o+8]+=2;b=11;break;case 26:b=HEAP[o+8]>=f?28:27;break;case 27:b=HEAP[HEAP[o+8]]==HEAP[HEAP[o+12]]?28:29;break;case 28:l=0;b=319;break;case 29:HEAP[o+12]+=2;HEAP[o+8]+=2;b=11;break;case 30:HEAP[a]=HEAP[o+8];l=1;b=319;break;case 31:b=_sre_uat(a,HEAP[o+8],HEAP[HEAP[o+12]]&65535)==0?32:33;break;case 32:l=0;b=319;break;case 33:HEAP[o+12]+=2;b=11;break;case 34:b=HEAP[o+8]>=f?36:35;break;case 35:b=_sre_category(HEAP[HEAP[o+12]]&65535,HEAP[HEAP[o+8]])==0?36:37;break;case 36:l=0;b=319;break;case 37:HEAP[o+ -12]+=2;HEAP[o+8]+=2;b=11;break;case 38:b=HEAP[o+8]>=f?41:39;break;case 39:b=HEAP[HEAP[o+8]]>127?42:40;break;case 40:b=(HEAP[_sre_char_info+HEAP[HEAP[o+8]]]&4)!=0?41:42;break;case 41:l=0;b=319;break;case 42:HEAP[o+8]+=2;b=11;break;case 43:b=HEAP[o+8]>=f?44:45;break;case 44:l=0;b=319;break;case 45:HEAP[o+8]+=2;b=11;break;case 46:b=HEAP[o+8]>=f?48:47;break;case 47:b=_sre_ucharset(HEAP[o+12]+2,HEAP[HEAP[o+8]]&65535)==0?48:49;break;case 48:l=0;b=319;break;case 49:HEAP[o+12]+=2*HEAP[HEAP[o+12]];HEAP[o+ -8]+=2;b=11;break;case 50:b=HEAP[o+8]>=f?52:51;break;case 51:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);var H=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+12]]);b=b!=H?52:53;break;case 52:l=0;b=319;break;case 53:HEAP[o+12]+=2;HEAP[o+8]+=2;b=11;break;case 54:b=HEAP[o+8]>=f?56:55;break;case 55:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);H=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+12]]);b=b==H?56:57;break;case 56:l=0;b=319;break;case 57:HEAP[o+12]+=2;HEAP[o+8]+=2;b=11;break;case 58:b=HEAP[o+8]>=f?60: -59;break;case 59:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);b=_sre_ucharset(HEAP[o+12]+2,b&65535)==0?60:61;break;case 60:l=0;b=319;break;case 61:HEAP[o+12]+=2*HEAP[HEAP[o+12]];HEAP[o+8]+=2;b=11;break;case 62:HEAP[o+12]+=2*HEAP[HEAP[o+12]];b=11;break;case 63:HEAP[o+20]=HEAP[a+36];HEAP[o+24]=HEAP[a+32];HEAP[o+28]=HEAP[a+852];b=HEAP[o+28]!=0?64:94;break;case 64:b=HEAP[o+20]>0?65:94;break;case 65:k=HEAP[o+20];b=HEAP[a+844]<(k+1)*4+HEAP[a+848]?66:70;break;case 66:r=_data_stack_grow(a,(k+1)*4);b=r< -0?67:68;break;case 67:d=r;b=336;break;case 68:b=j!=-1?69:70;break;case 69:o=HEAP[a+840]+j;b=70;break;case 70:_llvm_memcpy_p0i8_p0i8_i32(HEAP[a+840]+HEAP[a+848],a+40,(k+1)*4,1,0);HEAP[a+848]=(k+1)*4+HEAP[a+848];b=94;break;case 71:b=HEAP[HEAP[ba+12]+2]==19?72:74;break;case 72:b=HEAP[o+8]>=f?93:73;break;case 73:b=HEAP[HEAP[o+8]]!=HEAP[HEAP[o+12]+4]?93:74;break;case 74:b=HEAP[HEAP[o+12]+2]==15?75:77;break;case 75:b=HEAP[o+8]>=f?93:76;break;case 76:b=_sre_ucharset(HEAP[o+12]+6,HEAP[HEAP[o+8]]&65535)== -0?93:77;break;case 77:HEAP[a]=HEAP[o+8];h=HEAP[a+848];b=HEAP[a+844]0?85:86;break;case 85:HEAP[a+848]-=(HEAP[o+20]+1)*4;b=86;break;case 86:b=l<0?87:88;break;case 87:d=l;b=336;break;case 88:l=1;b= -319;break;case 89:b=ra?90:92;break;case 90:b=HEAP[o+20]>0?91:92;break;case 91:_llvm_memcpy_p0i8_p0i8_i32(a+40,HEAP[a+840]+HEAP[a+848]+(HEAP[o+20]+1)*-4,(HEAP[o+20]+1)*4,1,0);b=92;break;case 92:HEAP[a+36]=HEAP[o+20];HEAP[a+32]=HEAP[o+24];b=93;break;case 93:HEAP[o+12]+=2*HEAP[HEAP[o+12]];b=94;break;case 94:var ba=o;b=HEAP[HEAP[o+12]]!=0?71:95;break;case 95:b=HEAP[ba+28]!=0?96:98;break;case 96:b=HEAP[o+20]>0?97:98;break;case 97:HEAP[a+848]-=(HEAP[o+20]+1)*4;b=98;break;case 98:l=0;b=319;break;case 99:b= -HEAP[o+8]+2*HEAP[HEAP[o+12]+2]>f?100:101;break;case 100:l=0;b=319;break;case 101:HEAP[a]=HEAP[o+8];l=_sre_ucount(a,HEAP[o+12]+6,HEAP[HEAP[o+12]+4]);b=l<0?102:103;break;case 102:d=l;b=336;break;case 103:o=HEAP[a+840]+j;HEAP[o+16]=l;HEAP[o+8]+=2*HEAP[o+16];b=HEAP[o+16]=f?109:112;break;case 112:b=HEAP[HEAP[o+8]]!=HEAP[o+28]?109:113;break;case 113:b=HEAP[o+16]=HEAP[HEAP[o+12]+2]?124:135;break;case 135:l=0;b=319;break;case 136:b=HEAP[o+8]+2*HEAP[HEAP[o+ -12]+2]>f?137:138;break;case 137:l=0;b=319;break;case 138:HEAP[a]=HEAP[o+8];var W=o;b=HEAP[HEAP[o+12]+2]==0?139:140;break;case 139:HEAP[W+16]=0;b=145;break;case 140:l=_sre_ucount(a,HEAP[o+12]+6,HEAP[HEAP[W+12]+2]);b=l<0?141:142;break;case 141:d=l;b=336;break;case 142:o=HEAP[a+840]+j;b=HEAP[HEAP[o+12]+2]>l?143:144;break;case 143:l=0;b=319;break;case 144:HEAP[o+16]=l;HEAP[o+8]+=2*HEAP[o+16];b=145;break;case 145:b=HEAP[HEAP[o+12]+2*HEAP[HEAP[o+12]]]==1?146:147;break;case 146:HEAP[a]=HEAP[o+8];l=1;b=319; -break;case 147:HEAP[o+20]=HEAP[a+36];HEAP[o+24]=HEAP[a+32];b=161;break;case 148:HEAP[a]=HEAP[o+8];h=HEAP[a+848];b=HEAP[a+844]0?193:199;break;case 193:k=HEAP[o+20];b=HEAP[a+844]<(k+1)*4+HEAP[a+848]?194:198;break;case 194:y=_data_stack_grow(a,(k+1)*4);b=y<0?195:196;break;case 195:d=y;b=336;break;case 196:b=j!=-1?197:198;break;case 197:o=HEAP[a+840]+j;b=198;break;case 198:_llvm_memcpy_p0i8_p0i8_i32(HEAP[a+840]+HEAP[a+848],a+40,(k+1)*4,1,0);HEAP[a+848]=(k+1)*4+HEAP[a+848];b=199;break;case 199:b=HEAP[a+844]0?226:227;break;case 226:l=1;b=319;break;case 227:HEAP[a+852]=HEAP[o+28];HEAP[a]=HEAP[o+8];l=0;b=319;break;case 228:HEAP[o+28]=HEAP[a+852];b=HEAP[o+28]==0?229:230;break;case 229:d= --2;b=336;break;case 230:HEAP[a]=HEAP[o+8];HEAP[o+16]=HEAP[HEAP[o+28]]+1;b=HEAP[o+16]=HEAP[HEAP[HEAP[o+28]+4]+4]?251:253;break;case 251:b=HEAP[HEAP[HEAP[o+28]+4]+4]!=-1?252:253;break;case 252:l=0;b=319;break;case 253:HEAP[HEAP[o+28]]=HEAP[o+16];h=HEAP[a+848];b=HEAP[a+844]=f?271:270;break;case 270:b=HEAP[HEAP[o+8]]!=HEAP[M]?271:272;break;case 271:l=0;b=319;break;case 272:M+=2;HEAP[o+8]+=2;b=273;break;case 273:var Y=o;b=M=f?283:282;break;case 282:b=FUNCTION_TABLE[HEAP[a+856]](HEAP[HEAP[o+8]]);H=FUNCTION_TABLE[HEAP[a+856]](HEAP[J]);b=b!=H?283:284;break;case 283:l=0;b=319;break;case 284:J+=2;HEAP[o+8]+=2;b=285;break;case 285:var fa=o;b=J=HEAP[a+4]?307:316;break;case 307:h=HEAP[a+848];b=HEAP[a+844]0;b=l!=0?210:215;break;case 323:var la=l;b=l<0?224:225;break;case 324:b=l!=0?247:250;break;case 325:b=l!=0?259:262;break;case 326:var ra=HEAP[o+28]!=0;b=l!=0?83:89;break;case 327:b=l!=0?185:188;break;case 328:b=l!=0?237:240;break;case 329:HEAP[a+852]=HEAP[HEAP[o+28]+12];_free(HEAP[o+28]);b=l!=0?172:175;break;case 330:b=l!=0?120:123;break;case 331:b=l!=0?130:133;break;case 332:b= -l!=0?154:157;break;case 333:var ya=l;b=l<0?302:303;break;case 334:b=l!=0?313:316;break;case 335:d=l;b=336;break;case 336:return a=d;default:assert(0,"bad label: "+b)}} -function _sre_usearch(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u;c=g;d=e;h=HEAP[c+8];j=HEAP[c+12];q=p=o=n=m=l=k=0;b=HEAP[d]==17?1:9;break;case 1:q=HEAP[d+4];b=HEAP[d+6]>1?2:4;break;case 2:j+=2*(1-HEAP[d+6]);b=j<=h?3:4;break;case 3:j=h+2;b=4;break;case 4:b=(q&1)!=0?5:6;break;case 5:l=HEAP[d+10];m=HEAP[d+12];n=d+14;p=n+2*l+-2;b=8;break;case 6:b=(q&4)!=0?7:8;break;case 7:o=d+10;b=8;break;case 8:d+=2*(HEAP[d+2]+1);b=9;break;case 9:b=l>1?10:24;break;case 10:r=0;j=HEAP[c+ -12];b=22;break;case 11:var s=r,a=11;b=12;break;case 12:var t=a==11?s:v;b=HEAP[n+2*t];b=reSign(HEAP[h],16,1)!=reSign(b,16,1)?13:15;break;case 13:b=t==0?21:14;break;case 14:var v=HEAP[p+2*r];r=v;a=14;b=12;break;case 15:r=t+1;b=r==l?16:21;break;case 16:HEAP[c+8]=h+2+2*(0-l);HEAP[c]=h+2+2*(0-l)+2*m;b=(q&2)!=0?17:18;break;case 17:f=1;b=46;break;case 18:k=_sre_umatch(c,d+m*4);b=k!=0?19:20;break;case 19:f=k;b=46;break;case 20:r=HEAP[p+2*r];b=21;break;case 21:h+=2;b=22;break;case 22:b=h=j?29:28;break;case 28:b=HEAP[h]!=u?26:29;break;case 29:b=h>=j?30:31;break;case 30:f=0;b=46;break;case 31:HEAP[c+8]=h;h+=2;HEAP[c]=h;b=(q&2)!=0?32:33;break;case 32:f=1;b=46;break;case 33:k=_sre_umatch(c,d+4);b=k!=0?45:27;break;case 34:b=o!=0?35:44;break;case 35:j=HEAP[c+12];b=37;break;case 36:h+=2;b=37;break;case 37:b=h>=j?39:38;break;case 38:b=_sre_ucharset(o,HEAP[h]&65535)== -0?36:39;break;case 39:b=h>=j?40:41;break;case 40:f=0;b=46;break;case 41:HEAP[c+8]=h;HEAP[c]=h;k=_sre_umatch(c,d);b=k!=0?45:42;break;case 42:h+=2;b=37;break;case 43:HEAP[c]=h;HEAP[c+8]=HEAP[c];h+=2;k=_sre_umatch(c,d);b=k!=0?45:44;break;case 44:b=h<=j?43:45;break;case 45:f=k;b=46;break;case 46:return a=f;default:assert(0,"bad label: "+b)}} -function _sre_uliteral_template(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=3;break;case 1:b=HEAP[a]==92;a+=2;b=b!=0?2:3;break;case 2:d=0;b=5;break;case 3:b=c>0;c-=1;b=b!=0?1:4;break;case 4:d=1;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}}function _sre_codesize(){return __Py_BuildValue_SizeT(__str4126,allocate([2,0,0,0],["i32",0,0,0],ALLOC_STACK))} -function _sre_getlower(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d;c=b;var f=b+4;a=__PyArg_ParseTuple_SizeT(e,__str14127,allocate([c,0,0,0,f,0,0,0],["i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:a=(HEAP[f]&4)!=0?3:4;break;case 3:a=_sre_lower_locale(HEAP[c]);d=__Py_BuildValue_SizeT(__str24128,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK));a=7;break;case 4:var h=HEAP[c];a=(HEAP[f]&32)!=0?5:6;break;case 5:a=_sre_lower_unicode(h); -d=__Py_BuildValue_SizeT(__str24128,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK));a=7;break;case 6:a=_sre_lower(h);d=__Py_BuildValue_SizeT(__str24128,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK));a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _state_reset(g){HEAP[g+36]=-1;HEAP[g+32]=-1;HEAP[g+852]=0;_data_stack_dealloc(g)} -function _getstring(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o=a;d=g;f=e;h=b;var p=d;c=(HEAP[HEAP[d+4]+84]&268435456)!=0?1:2;break;case 1:HEAP[o]=HEAP[p+12];l=HEAP[d+8];n=2;c=15;break;case 2:k=HEAP[HEAP[p+4]+80];c=k==0?6:3;break;case 3:c=HEAP[k]==0?6:4;break;case 4:c=HEAP[k+8]==0?6:5;break;case 5:c=FUNCTION_TABLE[HEAP[k+8]](d,0)!=1?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str34129);j=0;c=16;break;case 7:m=FUNCTION_TABLE[HEAP[k]](d, -0,o);c=m<0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str44130);j=0;c=16;break;case 9:l=_PyObject_Size(d);c=(HEAP[HEAP[d+4]+84]&134217728)!=0?11:10;break;case 10:c=m==l?11:12;break;case 11:n=1;c=15;break;case 12:c=l*2==m?13:14;break;case 13:n=2;c=15;break;case 14:_PyErr_SetString(HEAP[_PyExc_TypeError],__str54131);j=0;c=16;break;case 15:HEAP[f]=l;HEAP[h]=n;j=HEAP[o];c=16;break;case 16:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _state_init(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p=d+4,q;h=g;j=e;k=b;l=a;m=c;_llvm_memset_p0i8_i32(h,0,860,1,0);HEAP[h+36]=-1;HEAP[h+32]=-1;q=_getstring(k,o,p);f=q==0?1:2;break;case 1:n=0;f=16;break;case 2:f=l<0?3:4;break;case 3:l=0;f=6;break;case 4:f=l>HEAP[o]?5:6;break;case 5:l=HEAP[o];f=6;break;case 6:f=m<0?7:8;break;case 7:m=0;f=10;break;case 8:f=m>HEAP[o]?9:10;break;case 9:m=HEAP[o];f=10;break;case 10:HEAP[h+28]= -HEAP[p];HEAP[h+4]=q;HEAP[h+8]=q+l*HEAP[h+28];HEAP[h+12]=q+m*HEAP[h+28];HEAP[k]+=1;HEAP[h+16]=k;HEAP[h+20]=l;HEAP[h+24]=m;f=(HEAP[j+28]&4)!=0?11:12;break;case 11:HEAP[h+856]=160;f=15;break;case 12:var r=h+856;f=(HEAP[j+28]&32)!=0?13:14;break;case 13:HEAP[r]=162;f=15;break;case 14:HEAP[r]=164;f=15;break;case 15:n=k;f=16;break;case 16:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _state_fini(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+16]!=0?1:3;break;case 1:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=3;break;case 3:_data_stack_dealloc(b);return;default:assert(0,"bad label: "+e)}} -function _state_getslice(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;f=f*2+-2;c=h==__Py_NoneStruct?4:1;break;case 1:c=HEAP[d+36]<=f?4:2;break;case 2:c=HEAP[d+40+f*4]==0?4:3;break;case 3:c=HEAP[d+40+(f+1)*4]==0?4:7;break;case 4:c=j!=0?5:6;break;case 5:l=m=0;c=8;break;case 6:HEAP[__Py_NoneStruct]+=1;k=__Py_NoneStruct;c=9;break;case 7:l=(HEAP[d+40+f*4]-HEAP[d+4])/HEAP[d+28]|0;m=(HEAP[d+40+(f+1)*4]-HEAP[d+4])/HEAP[d+28]|0;c=8;break;case 8:k=_PySequence_GetSlice(h,l,m); -c=9;break;case 9:return g=k;default:assert(0,"bad label: "+c)}}function _pattern_error(g){var e;for(e=-1;;)switch(e){case -1:e=g;e=e==-10?4:e==-9?2:e==-3?1:3;break;case 1:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str64132);e=4;break;case 2:_PyErr_NoMemory();e=4;break;case 3:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str74133);e=4;break;case 4:return;default:assert(0,"bad label: "+e)}} -function _pattern_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+32]!=0?1:2;break;case 1:_PyObject_ClearWeakRefs(b);e=2;break;case 2:e=HEAP[b+24]!=0?3:5;break;case 3:e=HEAP[b+24];HEAP[e]-=1;e=HEAP[e]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+24]+4]+24]](HEAP[b+24]);e=5;break;case 5:e=HEAP[b+16]!=0?6:8;break;case 6:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=8;break;case 8:e=HEAP[b+20]!=0?9:11;break;case 9:e= -HEAP[b+20];HEAP[e]-=1;e=HEAP[e]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+20]+4]+24]](HEAP[b+20]);e=11;break;case 11:_free(b);return;default:assert(0,"bad label: "+e)}} -function _pattern_match(g,e,b){var a=STACKTOP;STACKTOP+=872;_memset(a,0,872);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k,l=a+860,m=a+864,n=a+868;d=g;c=e;f=b;HEAP[m]=0;HEAP[n]=2147483647;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str84134,_kwlist_12764,allocate([l,0,0,0,m,0,0,0,n,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=10;break;case 2:c=_state_init(j,d,HEAP[l],HEAP[m],HEAP[n]);HEAP[l]=c;c=HEAP[l]==0?3:4;break;case 3:h=0;c=10; -break;case 4:HEAP[j]=HEAP[j+8];var o=d+40;c=HEAP[j+28]==1?5:6;break;case 5:k=_sre_match(j,o);c=7;break;case 6:k=_sre_umatch(j,o);c=7;break;case 7:c=_PyErr_Occurred()!=0?8:9;break;case 8:h=0;c=10;break;case 9:_state_fini(j);h=_pattern_new_match(d,j,k);c=10;break;case 10:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _pattern_search(g,e,b){var a=STACKTOP;STACKTOP+=872;_memset(a,0,872);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k,l=a+860,m=a+864,n=a+868;d=g;c=e;f=b;HEAP[m]=0;HEAP[n]=2147483647;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str124138,_kwlist_12800,allocate([l,0,0,0,m,0,0,0,n,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=10;break;case 2:c=_state_init(j,d,HEAP[l],HEAP[m],HEAP[n]);HEAP[l]=c;c=HEAP[l]==0?3:4;break;case 3:h=0;c= -10;break;case 4:var o=d+40;c=HEAP[j+28]==1?5:6;break;case 5:k=_sre_search(j,o);c=7;break;case 6:k=_sre_usearch(j,o);c=7;break;case 7:_state_fini(j);c=_PyErr_Occurred()!=0?8:9;break;case 8:h=0;c=10;break;case 9:h=_pattern_new_match(d,j,k);c=10;break;case 10:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _call(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=__str194145;c=g;d=e;b=d==0?1:2;break;case 1:f=0;b=17;break;case 2:h=_PyString_FromString(a);b=h==0?3:4;break;case 3:f=0;b=17;break;case 4:j=_PyImport_Import(h);HEAP[h]-=1;b=HEAP[h]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=6;break;case 6:b=j==0?7:8;break;case 7:f=0;b=17;break;case 8:k=_PyObject_GetAttrString(j,c);HEAP[j]-=1;b=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=10;break; -case 10:b=k==0?11:12;break;case 11:f=0;b=17;break;case 12:l=_PyObject_CallObject(k,d);HEAP[k]-=1;b=HEAP[k]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=14;break;case 14:HEAP[d]-=1;b=HEAP[d]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=16;break;case 16:f=l;b=17;break;case 17:return b=f;default:assert(0,"bad label: "+b)}} -function _join_list(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;d=_PySequence_GetSlice(e,0,0);b=d==0?1:2;break;case 1:c=0;b=23;break;case 2:b=HEAP[a+8]==0?3:6;break;case 3:HEAP[a]-=1;b=HEAP[a]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=5;break;case 5:c=d;b=23;break;case 6:f=_PyObject_GetAttrString(d,__str134139);b=f==0?7:10;break;case 7:HEAP[d]-=1;b=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=9;break;case 9:c=0;b=23;break;case 10:h=_PyTuple_New(1); -b=h==0?11:16;break;case 11:HEAP[f]-=1;b=HEAP[f]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=13;break;case 13:HEAP[d]-=1;b=HEAP[d]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=15;break;case 15:c=0;b=23;break;case 16:HEAP[h+12]=a;j=_PyObject_CallObject(f,h);HEAP[h]-=1;b=HEAP[h]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=18;break;case 18:HEAP[f]-=1;b=HEAP[f]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=20;break;case 20:HEAP[d]-= -1;b=HEAP[d]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=22;break;case 22:c=j;b=23;break;case 23:return b=c;default:assert(0,"bad label: "+b)}} -function _pattern_findall(g,e,b){var a=STACKTOP;STACKTOP+=872;_memset(a,0,872);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k,l,m,n,o=a+860,p=a+864,q=a+868,r;d=g;c=e;f=b;HEAP[p]=0;HEAP[q]=2147483647;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str144140,_kwlist_12964,allocate([o,0,0,0,p,0,0,0,q,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=35;break;case 2:c=_state_init(j,d,HEAP[o],HEAP[p],HEAP[q]);HEAP[o]=c;c=HEAP[o]==0?3:4;break;case 3:h= -0;c=35;break;case 4:k=_PyList_New(0);c=k==0?6:5;break;case 5:var u=j+8,s=j+12,t=j+8,v=j,w=j+28,x=j,y=j+8,z=j,C=j+28,A=j+8,G=j+8,E=j+8,D=j+4,R=j+28,M=j,L=j+4,I=j+28;c=30;break;case 6:_state_fini(j);h=0;c=35;break;case 7:_state_reset(j);HEAP[v]=HEAP[t];var J=d+40;c=HEAP[w]==1?8:9;break;case 8:l=_sre_search(j,J);c=10;break;case 9:l=_sre_usearch(j,J);c=10;break;case 10:c=_PyErr_Occurred()!=0?32:11;break;case 11:c=l<=0?12:14;break;case 12:c=l==0?31:13;break;case 13:_pattern_error(l);c=32;break;case 14:c= -HEAP[d+12];c=c==0?15:c==1?16:17;break;case 15:n=(HEAP[E]-HEAP[D])/HEAP[R]|0;c=(HEAP[M]-HEAP[L])/HEAP[I]|0;n=_PySequence_GetSlice(HEAP[o],n,c);c=n==0?32:24;break;case 16:n=_state_getslice(j,1,HEAP[o],1);c=n==0?32:24;break;case 17:n=_PyTuple_New(HEAP[d+12]);c=n==0?32:18;break;case 18:m=0;c=23;break;case 19:r=_state_getslice(j,m+1,HEAP[o],1);var F=n;c=r==0?20:22;break;case 20:HEAP[n]=HEAP[F]-1;c=HEAP[n]==0?21:32;break;case 21:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=32;break;case 22:HEAP[F+12+m*4]=r; -m+=1;c=23;break;case 23:c=HEAP[d+12]>m?19:24;break;case 24:l=_PyList_Append(k,n);HEAP[n]-=1;c=HEAP[n]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);c=26;break;case 26:c=l<0?32:27;break;case 27:var V=HEAP[z];c=HEAP[x]==HEAP[y]?28:29;break;case 28:HEAP[A]=V+HEAP[C];c=30;break;case 29:HEAP[G]=V;c=30;break;case 30:c=HEAP[u]<=HEAP[s]?7:31;break;case 31:_state_fini(j);h=k;c=35;break;case 32:HEAP[k]-=1;c=HEAP[k]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);c=34;break;case 34:_state_fini(j); -h=0;c=35;break;case 35:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _pattern_finditer(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;c=_pattern_scanner(g,e);b=c==0?1:2;break;case 1:a=0;b=9;break;case 2:d=_PyObject_GetAttrString(c,__str164142);HEAP[c]-=1;b=HEAP[c]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);b=4;break;case 4:b=d==0?5:6;break;case 5:a=0;b=9;break;case 6:f=_PyCallIter_New(d,__Py_NoneStruct);HEAP[d]-=1;b=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=8;break;case 8:a=f;b=9;break;case 9:return b=a;default:assert(0, -"bad label: "+b)}} -function _pattern_split(g,e,b){var a=STACKTOP;STACKTOP+=868;_memset(a,0,868);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k,l,m,n,o,p,q=a+860,r=a+864;d=g;c=e;f=b;HEAP[r]=0;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str174143,_kwlist_13116,allocate([q,0,0,0,r,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=39;break;case 2:c=_state_init(j,d,HEAP[q],0,2147483647);HEAP[q]=c;c=HEAP[q]==0?3:4;break;case 3:h=0;c=39;break;case 4:k=_PyList_New(0);c=k==0?5: -6;break;case 5:_state_fini(j);h=0;c=39;break;case 6:n=0;p=HEAP[j+8];var u=j+8,s=j,t=j+28,v=j+8,w=j,x=j+12,y=j,z=j+28,C=j+8,A=j+8,G=j+4,E=j+28,D=j+4,R=j+28,M=j,L=j+8,I=j+8;c=29;break;case 7:_state_reset(j);HEAP[s]=HEAP[u];var J=d+40;c=HEAP[t]==1?8:9;break;case 8:m=_sre_search(j,J);c=10;break;case 9:m=_sre_usearch(j,J);c=10;break;case 10:c=_PyErr_Occurred()!=0?36:11;break;case 11:c=m<=0?12:14;break;case 12:c=m==0?31:13;break;case 13:_pattern_error(m);c=36;break;case 14:c=HEAP[v]==HEAP[w]?15:17;break; -case 15:c=HEAP[x]==p?31:16;break;case 16:HEAP[C]=HEAP[y]+HEAP[z];c=29;break;case 17:l=_PySequence_GetSlice(HEAP[q],(p-HEAP[D])/HEAP[R]|0,(HEAP[A]-HEAP[G])/HEAP[E]|0);c=l==0?36:18;break;case 18:m=_PyList_Append(k,l);HEAP[l]-=1;c=HEAP[l]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=20;break;case 20:c=m<0?36:21;break;case 21:o=0;c=27;break;case 22:l=_state_getslice(j,o+1,HEAP[q],0);c=l==0?36:23;break;case 23:m=_PyList_Append(k,l);HEAP[l]-=1;c=HEAP[l]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[l+ -4]+24]](l);c=25;break;case 25:c=m<0?36:26;break;case 26:o+=1;c=27;break;case 27:c=HEAP[d+12]>o?22:28;break;case 28:n+=1;HEAP[L]=HEAP[M];p=HEAP[I];c=29;break;case 29:c=HEAP[r]==0?7:30;break;case 30:c=n0?52:36;break;case 36:f=G!=0?37:46;break; -case 37:t=_pattern_new_match(j,p,1);f=t==0?69:38;break;case 38:s=_PyTuple_Pack(1,allocate([t,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));f=s==0?39:41;break;case 39:HEAP[t]-=1;f=HEAP[t]==0?40:69;break;case 40:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=69;break;case 41:r=_PyObject_CallObject(u,s);HEAP[s]-=1;f=HEAP[s]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);f=43;break;case 43:HEAP[t]-=1;f=HEAP[t]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=45;break;case 45:var ra= -r;ra==0?(h=45,f=69):(h=45,f=47);break;case 46:r=u;HEAP[r]+=1;var ya=r,h=46;f=47;break;case 47:f=(h==45?ra:ya)!=__Py_NoneStruct?48:51;break;case 48:w=_PyList_Append(q,r);HEAP[r]-=1;f=HEAP[r]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);f=50;break;case 50:f=w<0?69:51;break;case 51:y=C;HEAP[x]+=1;f=52;break;case 52:var Da=HEAP[B];f=HEAP[ba]==HEAP[W]?53:54;break;case 53:HEAP[fa]=Da+HEAP[Y];f=55;break;case 54:HEAP[ha]=Da;f=55;break;case 55:f=m==0?21:56;break;case 56:f=HEAP[x]y?58:62;break;case 58:r=_PySequence_GetSlice(l,y,HEAP[p+24]);f=r==0?69:59;break;case 59:w=_PyList_Append(q,r);HEAP[r]-=1;f=HEAP[r]==0?60:61;break;case 60:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);f=61;break;case 61:f=w<0?69:62;break;case 62:_state_fini(p);HEAP[u]-=1;f=HEAP[u]==0?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);f=64;break;case 64:r=f=_join_list(q,l);f=f==0?65:66;break;case 65:o=0;f=74;break;case 66:f=n!=0?67:68;break;case 67:o=__Py_BuildValue_SizeT(__str214147, -allocate([r,0,0,0,HEAP[x],0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0],ALLOC_STACK));f=74;break;case 68:o=r;f=74;break;case 69:HEAP[q]-=1;f=HEAP[q]==0?70:71;break;case 70:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=71;break;case 71:_state_fini(p);HEAP[u]-=1;f=HEAP[u]==0?72:73;break;case 72:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);f=73;break;case 73:o=0;f=74;break;case 74:return g=o,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _pattern_sub(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l=a+8;d=g;c=e;f=b;HEAP[l]=0;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str224148,_kwlist_13463,allocate([j,0,0,0,k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=3;break;case 2:h=_pattern_subx(d,HEAP[j],HEAP[k],HEAP[l],0);c=3;break;case 3:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+ -c)}} -function _pattern_subn(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l=a+8;d=g;c=e;f=b;HEAP[l]=0;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str264152,_kwlist_13481,allocate([j,0,0,0,k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=3;break;case 2:h=_pattern_subx(d,HEAP[j],HEAP[k],HEAP[l],1);c=3;break;case 3:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _pattern_copy(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str274153);return 0}function _pattern_deepcopy(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str284154);return 0} -function __compile(g,e){var b=STACKTOP;STACKTOP+=24;_memset(b,0,24);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m=b,n=b+4,o=b+8,p=b+12,q=b+16,r=b+20;a=e;HEAP[n]=0;HEAP[p]=0;HEAP[q]=0;HEAP[r]=0;a=__PyArg_ParseTuple_SizeT(a,__str424168,allocate([m,0,0,0,n,0,0,0,_PyList_Type,0,0,0,o,0,0,0,p,0,0,0,q,0,0,0,r,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0], -ALLOC_STACK))==0?1:2;break;case 1:h=0;a=31;break;case 2:l=HEAP[HEAP[o]+8];a=(HEAP[_Pattern_Type+16]+3+l*HEAP[_Pattern_Type+20]&-4)>=0?3:7;break;case 3:a=(HEAP[_Pattern_Type+16]+3+l*HEAP[_Pattern_Type+20]&-4)!=0?4:5;break;case 4:d=HEAP[_Pattern_Type+16]+3+l*HEAP[_Pattern_Type+20]&-4;a=6;break;case 5:d=1;a=6;break;case 6:f=_malloc(d);a=8;break;case 7:f=0;a=8;break;case 8:j=a=_PyObject_InitVar(f,_Pattern_Type,l);a=a==0?9:10;break;case 9:h=0;a=31;break;case 10:HEAP[j+32]=0;HEAP[j+24]=0;HEAP[j+16]=0;HEAP[j+ -20]=0;HEAP[j+36]=l;k=0;a=17;break;case 11:var u=a=HEAP[HEAP[HEAP[o]+12]+4*k];a=(HEAP[HEAP[a+4]+84]&8388608)!=0?12:13;break;case 12:c=_PyInt_AsLong(u);a=14;break;case 13:c=_PyLong_AsUnsignedLong(u);a=14;break;case 14:a=c;HEAP[j+40+k*2]=a&65535;a=HEAP[j+40+k*2]!=a?15:16;break;case 15:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str434169);a=18;break;case 16:k+=1;a=17;break;case 17:a=k=d?2:3;break;case 2:f=0;b=37;break;case 3:b=HEAP[c];c+=2;b=b==9?30:b==10?12:b==11?16:b==19?4:b==26?35:b==27?7:34;break;case 4:b=c>=d?5:6;break;case 5:f=0;b=37;break;case 6:h=HEAP[c];c+=2;b=35;break;case 7:b=c>=d?8:9;break;case 8:f=0;b=37;break;case 9:h=HEAP[c];c+=2;b=c>=d?10:11;break;case 10:f=0;b=37;break;case 11:h=HEAP[c];c+=2;b=35;break;case 12:j=16;b=j*2<0?14:13;break;case 13:b= -c+2*j>d?14:15;break;case 14:f=0;b=37;break;case 15:c+=2*j;b=35;break;case 16:b=c>=d?17:18;break;case 17:f=0;b=37;break;case 18:h=HEAP[c];c+=2;j=128;b=j*2<0?20:19;break;case 19:b=c+2*j>d?20:21;break;case 20:f=0;b=37;break;case 21:k=0;a=21;b=25;break;case 22:b=HEAP[c+k]>=h?23:24;break;case 23:f=0;b=37;break;case 24:var l=k+1;k=l;a=24;b=25;break;case 25:b=(a==24?l:0)<=255?22:26;break;case 26:c+=2*j;j=Math.floor(h*32/2)&65535;b=j*2<0?28:27;break;case 27:b=c+2*j>d?28:29;break;case 28:f=0;b=37;break;case 29:c+= -2*j;b=35;break;case 30:b=c>=d?31:32;break;case 31:f=0;b=37;break;case 32:h=HEAP[c];c+=2;b=h<18?35:33;break;case 33:f=0;b=37;break;case 34:f=0;b=37;break;case 35:b=cd?1:169;break;case 1:h=0;a=171;break;case 2:a=c>=d?3:4;break;case 3:h=0;a=171;break;case 4:a=HEAP[c];c+=2;a=a==0?169:a==1?169:a==2?169:a==3?169:a==4?155:a==5?155:a==6?12:a==7?70:a==12?126:a==13?130:a==14?126:a==15?16:a==16?16:a==17?26:a==19?9:a==20?9:a==21?5:a==24?9:a==25?9:a==28?109:a==29?92:a==31?92:168;break;case 5:a=c>=d?6:7;break;case 6:h=0;a=171;break;case 7:a=HEAP[c];c+=2;a=a>f*2+ -1?8:169;break;case 8:h=0;a=171;break;case 9:a=c>=d?10:11;break;case 10:h=0;a=171;break;case 11:c+=2;a=169;break;case 12:a=c>=d?13:14;break;case 13:h=0;a=171;break;case 14:a=HEAP[c];c+=2;a=a<12?169:15;break;case 15:h=0;a=171;break;case 16:a=c>=d?17:18;break;case 17:h=0;a=171;break;case 18:j=HEAP[c];a=c+2*jd?20:21;break;case 20:h=0;a=171;break;case 21:c+=2;a=__validate_charset(c,c+2*j+-4)==0?22:23;break;case 22:h=0;a=171;break;case 23:a=HEAP[c+2*(j-2)]!=0?24:25;break; -case 24:h=0;a=171;break;case 25:c+=2*(j-1);a=169;break;case 26:a=c>=d?27:28;break;case 27:h=0;a=171;break;case 28:j=HEAP[c];a=c+2*jd?30:31;break;case 30:h=0;a=171;break;case 31:c+=2;m=c+2*j+-2;a=c>=d?32:33;break;case 32:h=0;a=171;break;case 33:a=HEAP[c];c+=2;k=a;a=c>=d?34:35;break;case 34:h=0;a=171;break;case 35:c+=2;a=c>=d?36:37;break;case 36:h=0;a=171;break;case 37:c+=2;a=(k&-8)!=0?38:39;break;case 38:h=0;a=171;break;case 39:a=(k&1)!=0?40:42;break;case 40:a=(k&4)!= -0?41:42;break;case 41:h=0;a=171;break;case 42:a=(k&2)!=0?43:45;break;case 43:a=(k&1)==0?44:45;break;case 44:h=0;a=171;break;case 45:a=(k&1)!=0?46:62;break;case 46:a=c>=d?47:48;break;case 47:h=0;a=171;break;case 48:a=HEAP[c];c+=2;n=a;a=c>=d?49:50;break;case 49:h=0;a=171;break;case 50:c+=2;a=n*2<0?52:51;break;case 51:a=c+2*n>m?52:53;break;case 52:h=0;a=171;break;case 53:c+=2*n;a=n*2<0?55:54;break;case 54:a=c+2*n>m?55:56;break;case 55:h=0;a=171;break;case 56:l=0;a=60;break;case 57:a=HEAP[c+2*l]>=n?58: -59;break;case 58:h=0;a=171;break;case 59:l+=1;a=60;break;case 60:a=l=d?72:73;break;case 72:h=0;a=171;break;case 73:j=HEAP[c];a=c+2*jd?75:76;break;case 75:h= -0;a=171;break;case 76:c+=2;a=j==0?169:77;break;case 77:a=__validate_inner(c,c+2*j+-6,f)==0?78:79;break;case 78:h=0;a=171;break;case 79:c+=2*(j-3);a=c>=d?80:81;break;case 80:h=0;a=171;break;case 81:a=HEAP[c];c+=2;a=a!=18?82:83;break;case 82:h=0;a=171;break;case 83:a=c>=d?84:85;break;case 84:h=0;a=171;break;case 85:j=HEAP[c];a=c+2*jd?87:88;break;case 87:h=0;a=171;break;case 88:c+=2;var r=c+2*j+-2;a=o==0?89:90;break;case 89:o=r;a=71;break;case 90:a=r!=o?91:71;break;case 91:h= -0;a=171;break;case 92:a=c>=d?93:94;break;case 93:h=0;a=171;break;case 94:j=HEAP[c];a=c+2*jd?96:97;break;case 96:h=0;a=171;break;case 97:c+=2;a=c>=d?98:99;break;case 98:h=0;a=171;break;case 99:a=HEAP[c];c+=2;p=a;a=c>=d?100:101;break;case 100:h=0;a=171;break;case 101:a=HEAP[c];c+=2;a=p>a?102:103;break;case 102:h=0;a=171;break;case 103:a=__validate_inner(c,c+2*j+-8,f)==0?104:105;break;case 104:h=0;a=171;break;case 105:c+=2*(j-4);a=c>=d?106:107;break;case 106:h=0;a=171; -break;case 107:a=HEAP[c];c+=2;a=a!=1?108:169;break;case 108:h=0;a=171;break;case 109:a=c>=d?110:111;break;case 110:h=0;a=171;break;case 111:j=HEAP[c];a=c+2*jd?113:114;break;case 113:h=0;a=171;break;case 114:c+=2;a=c>=d?115:116;break;case 115:h=0;a=171;break;case 116:a=HEAP[c];c+=2;q=a;a=c>=d?117:118;break;case 117:h=0;a=171;break;case 118:a=HEAP[c];c+=2;a=q>a?119:120;break;case 119:h=0;a=171;break;case 120:a=__validate_inner(c,c+2*j+-6,f)==0?121:122;break;case 121:h= -0;a=171;break;case 122:c+=2*(j-3);a=c>=d?123:124;break;case 123:h=0;a=171;break;case 124:a=HEAP[c];c+=2;a=a!=22&a!=23?125:169;break;case 125:h=0;a=171;break;case 126:a=c>=d?127:128;break;case 127:h=0;a=171;break;case 128:a=HEAP[c];c+=2;a=a>=f?129:169;break;case 129:h=0;a=171;break;case 130:a=c>=d?131:132;break;case 131:h=0;a=171;break;case 132:a=HEAP[c];c+=2;a=a>=f?133:134;break;case 133:h=0;a=171;break;case 134:a=c>=d?135:136;break;case 135:h=0;a=171;break;case 136:j=HEAP[c];a=c+2*j+-2d?138:139;break;case 138:h=0;a=171;break;case 139:c+=2;c+=-2;a=j<=2?152:140;break;case 140:a=c+2*j+-6=d?145:146;break;case 145:h=0;a=171;break;case 146:j=HEAP[c];a=c+2*jd?148:149;break;case 148:h=0;a=171;break;case 149:c+=2;a=__validate_inner(c,c+2*j+-2,f)==0?150:151;break; -case 150:h=0;a=171;break;case 151:c+=2*(j-1);a=169;break;case 152:a=__validate_inner(c+2,c+2*j+-2,f)==0?153:154;break;case 153:h=0;a=171;break;case 154:c+=2*(j-1);a=169;break;case 155:a=c>=d?156:157;break;case 156:h=0;a=171;break;case 157:j=HEAP[c];a=c+2*jd?159:160;break;case 159:h=0;a=171;break;case 160:c+=2;a=c>=d?161:162;break;case 161:h=0;a=171;break;case 162:c+=2;c+=-2;a=__validate_inner(c+2,c+2*j+-4,f)==0?163:164;break;case 163:h=0;a=171;break;case 164:c+=2* -(j-2);a=c>=d?165:166;break;case 165:h=0;a=171;break;case 166:a=HEAP[c];c+=2;a=a!=1?167:169;break;case 167:h=0;a=171;break;case 168:h=0;a=171;break;case 169:a=c100?3:1;break;case 1:a=c>=d?3:2;break;case 2:a=HEAP[d+-2]!=1?3:4;break;case 3:h=0;a=7;break;case 4:a=f==0?5:6;break;case 5:f=100;a=6;break;case 6:h=__validate_inner(c,d+-2,f);a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function __validate(g){var e;for(e=-1;;)switch(e){case -1:var b;e=g;e=__validate_outer(e+40,e+40+2*HEAP[e+36],HEAP[e+12])==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str444170);b=0;e=3;break;case 2:b=1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function _match_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+16]!=0?1:3;break;case 1:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=3;break;case 3:e=HEAP[b+12]!=0?4:6;break;case 4:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=6;break;case 6:e=HEAP[b+20];HEAP[e]-=1;e=HEAP[e]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+20]+4]+24]](HEAP[b+20]); -e=8;break;case 8:_free(b);return;default:assert(0,"bad label: "+e)}} -function _match_getslice_by_index(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=d<0?2:1;break;case 1:a=HEAP[c+36]<=d?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_IndexError],__str454171);h=0;a=7;break;case 3:d*=2;a=HEAP[c+12]==__Py_NoneStruct?5:4;break;case 4:a=HEAP[c+40+d*4]<0?5:6;break;case 5:HEAP[f]+=1;h=f;a=7;break;case 6:h=_PySequence_GetSlice(HEAP[c+12],HEAP[c+40+d*4],HEAP[c+40+(d+1)*4]);a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _match_getindex(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=(HEAP[HEAP[c+4]+84]&8388608)!=0?1:2;break;case 1:d=_PyInt_AsSsize_t(c);b=11;break;case 2:f=-1;b=HEAP[HEAP[a+20]+16]!=0?3:10;break;case 3:c=_PyObject_GetItem(HEAP[HEAP[a+20]+16],c);b=c!=0?4:9;break;case 4:b=(HEAP[HEAP[c+4]+84]&8388608)!=0?6:5;break;case 5:b=(HEAP[HEAP[c+4]+84]&16777216)!=0?6:7;break;case 6:f=_PyInt_AsSsize_t(c);b=7;break;case 7:HEAP[c]-=1;b=HEAP[c]==0?8:10;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+ -4]+24]](c);b=10;break;case 9:_PyErr_Clear();b=10;break;case 10:d=f;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}}function _match_getslice(g,e,b){e=_match_getindex(g,e);return _match_getslice_by_index(g,e,b)}function _match_expand(g,e){var b=_PyTuple_Pack(3,allocate([HEAP[g+20],0,0,0,g,0,0,0,e,0,0,0],["%struct.PatternObject*",0,0,0,"%struct.MatchObject*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));return _call(__str464172,b)} -function _match_group(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;b=j=HEAP[c+8];b=b==0?1:b==1?2:3;break;case 1:f=_match_getslice(a,__Py_ZeroStruct,__Py_NoneStruct);b=12;break;case 2:f=_match_getslice(a,HEAP[c+12],__Py_NoneStruct);b=12;break;case 3:f=_PyTuple_New(j);b=f==0?4:5;break;case 4:d=0;b=13;break;case 5:h=0;b=11;break;case 6:k=_match_getslice(a,HEAP[c+12+h*4],__Py_NoneStruct);var l=f;b=k==0?7:10;break;case 7:HEAP[f]=HEAP[l]-1;b=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=9;break;case 9:d=0;b=13;break;case 10:HEAP[l+12+h*4]=k;h+=1;b=11;break;case 11:b=hk?5:11;break;case 11:h=j;c=12;break;case 12:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _match_groupdict(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m=a,n,o,p;d=g;c=e;f=b;HEAP[m]=__Py_NoneStruct;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str494175,_kwlist_14364,allocate([m,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=25;break;case 2:j=_PyDict_New();c=j==0?4:3;break;case 3:c=HEAP[HEAP[d+20]+16]==0?4:5;break;case 4:h=j;c=25;break;case 5:k=__PyObject_CallMethod_SizeT(HEAP[HEAP[d+20]+16], -__str504176,0,allocate(1,"i32",ALLOC_STACK));c=k==0?22:6;break;case 6:l=0;c=15;break;case 7:o=HEAP[HEAP[q+12]+4*l];c=o==0?19:8;break;case 8:p=_match_getslice(d,o,HEAP[m]);c=p==0?9:11;break;case 9:HEAP[o]-=1;c=HEAP[o]==0?10:19;break;case 10:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=19;break;case 11:n=_PyDict_SetItem(j,o,p);HEAP[p]-=1;c=HEAP[p]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=13;break;case 13:c=n<0?19:14;break;case 14:l+=1;c=15;break;case 15:var q=k;c=HEAP[k+8]>l?7:16;break; -case 16:HEAP[k]=HEAP[q]-1;c=HEAP[k]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);c=18;break;case 18:h=j;c=25;break;case 19:c=k!=0?20:22;break;case 20:HEAP[k]-=1;c=HEAP[k]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);c=22;break;case 22:HEAP[j]-=1;c=HEAP[j]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);c=24;break;case 24:h=0;c=25;break;case 25:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _match_start(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;a=e;HEAP[h]=__Py_ZeroStruct;a=_PyArg_UnpackTuple(a,__str514177,0,1,allocate([h,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:f=_match_getindex(c,HEAP[h]);a=f<0?4:3;break;case 3:a=HEAP[c+36]<=f?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_IndexError],__str454171);d=0;a=6;break;case 5:d=__Py_BuildValue_SizeT(__str24128,allocate([HEAP[c+ -40+f*8],0,0,0],["i32",0,0,0],ALLOC_STACK));a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _match_end(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;a=e;HEAP[h]=__Py_ZeroStruct;a=_PyArg_UnpackTuple(a,__str524178,0,1,allocate([h,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:f=_match_getindex(c,HEAP[h]);a=f<0?4:3;break;case 3:a=HEAP[c+36]<=f?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_IndexError],__str454171);d=0;a=6;break;case 5:d=__Py_BuildValue_SizeT(__str24128,allocate([HEAP[c+ -40+(f*2+1)*4],0,0,0],["i32",0,0,0],ALLOC_STACK));a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __pair(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=_PyTuple_New(2);b=f==0?1:2;break;case 1:d=0;b=8;break;case 2:h=_PyInt_FromSsize_t(a);b=h==0?5:3;break;case 3:HEAP[f+12]=h;h=_PyInt_FromSsize_t(c);b=h==0?5:4;break;case 4:HEAP[f+12+4]=h;d=f;b=8;break;case 5:HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:d=0;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _match_span(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b;c=g;a=e;HEAP[h]=__Py_ZeroStruct;a=_PyArg_UnpackTuple(a,__str534179,0,1,allocate([h,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:f=_match_getindex(c,HEAP[h]);a=f<0?4:3;break;case 3:a=HEAP[c+36]<=f?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_IndexError],__str454171);d=0;a=6;break;case 5:d=__pair(HEAP[c+40+f*8],HEAP[c+40+(f*2+1)*4]); -a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _match_regs(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=_PyTuple_New(HEAP[b+36]);e=c==0?1:2;break;case 1:a=0;e=10;break;case 2:f=0;e=8;break;case 3:d=__pair(HEAP[b+40+f*8],HEAP[b+40+(f*2+1)*4]);var h=c;e=d==0?4:7;break;case 4:HEAP[c]=HEAP[h]-1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:a=0;e=10;break;case 7:HEAP[h+12+f*4]=d;f+=1;e=8;break;case 8:e=HEAP[b+36]>f?3:9;break;case 9:HEAP[c]+=1;a=HEAP[b+16]=c;e=10;break;case 10:return g=a; -default:assert(0,"bad label: "+e)}}function _match_copy(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str544180);return 0}function _match_deepcopy(){_PyErr_SetString(HEAP[_PyExc_TypeError],__str554181);return 0} -function _match_lastindex_get(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+32]>=0?1:2;break;case 1:a=__Py_BuildValue_SizeT(__str24128,allocate([HEAP[b+32],0,0,0],["i32",0,0,0],ALLOC_STACK));e=3;break;case 2:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _match_lastgroup_get(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[HEAP[b+20]+20]!=0?1:5;break;case 1:e=HEAP[b+32]>=0?2:5;break;case 2:c=_PySequence_GetItem(HEAP[HEAP[b+20]+20],HEAP[b+32]);e=c!=0?3:4;break;case 3:a=c;e=6;break;case 4:_PyErr_Clear();e=5;break;case 5:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=6;break;case 6:return g=a;default:assert(0,"bad label: "+e)}} -function _match_regs_get(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+16]!=0?1:2;break;case 1:HEAP[HEAP[c+16]]+=1;a=HEAP[b+16];e=3;break;case 2:a=_match_regs(c);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _pattern_new_match(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;f=b;a=f>0?1:17;break;case 1:var q=(HEAP[c+12]+1)*2;a=(HEAP[_Match_Type+16]+3+HEAP[_Match_Type+20]*2*(HEAP[c+12]+1)&-4)>=0?2:6;break;case 2:a=(HEAP[_Match_Type+16]+3+HEAP[_Match_Type+20]*2*(HEAP[c+12]+1)&-4)!=0?3:4;break;case 3:j=HEAP[_Match_Type+16]+3+HEAP[_Match_Type+20]*2*(HEAP[c+12]+1)&-4;a=5;break;case 4:j=1;a=5;break;case 5:k=_malloc(j);a=7;break;case 6:k=0;a=7;break;case 7:l=a=_PyObject_InitVar(k, -_Match_Type,q);a=a==0?8:9;break;case 8:h=0;a=20;break;case 9:HEAP[c]+=1;HEAP[l+20]=c;HEAP[HEAP[d+16]]+=1;HEAP[l+12]=HEAP[d+16];HEAP[l+16]=0;HEAP[l+36]=HEAP[c+12]+1;o=HEAP[d+4];p=HEAP[d+28];HEAP[l+40]=(HEAP[d+8]-o)/p|0;HEAP[l+40+4]=(HEAP[d]-o)/p|0;m=n=0;a=HEAP[c+12]>m?10:16;break;case 10:a=n+1>HEAP[d+36]?14:11;break;case 11:a=HEAP[d+40+n*4]==0?14:12;break;case 12:a=HEAP[d+40+(n+1)*4]==0?14:13;break;case 13:HEAP[l+40+(n+2)*4]=(HEAP[d+40+n*4]-o)/p|0;HEAP[l+40+(n+3)*4]=(HEAP[d+40+(n+1)*4]-o)/p|0;a=15; -break;case 14:HEAP[l+40+(n+3)*4]=-1;HEAP[l+40+(n+2)*4]=HEAP[l+40+(n+3)*4];a=15;break;case 15:m+=1;n+=2;a=HEAP[c+12]>m?10:16;break;case 16:HEAP[l+24]=HEAP[d+20];HEAP[l+28]=HEAP[d+24];HEAP[l+32]=HEAP[d+32];h=l;a=20;break;case 17:a=f==0?18:19;break;case 18:HEAP[__Py_NoneStruct]+=1;h=__Py_NoneStruct;a=20;break;case 19:_pattern_error(f);h=0;a=20;break;case 20:return g=h;default:assert(0,"bad label: "+a)}} -function _scanner_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_state_fini(b+12);e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_free(b);return;default:assert(0,"bad label: "+e)}} -function _scanner_match(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=b+12;_state_reset(c);HEAP[c]=HEAP[c+8];var h=HEAP[b+8]+40,j=c;e=HEAP[c+28]==1?1:2;break;case 1:f=_sre_match(j,h);e=3;break;case 2:f=_sre_umatch(j,h);e=3;break;case 3:e=_PyErr_Occurred()!=0?4:5;break;case 4:a=0;e=10;break;case 5:d=_pattern_new_match(HEAP[b+8],c,f);e=f==0?7:6;break;case 6:e=HEAP[c]==HEAP[c+8]?7:8;break;case 7:HEAP[c+8]=HEAP[c]+HEAP[c+28];e=9;break;case 8:HEAP[c+8]=HEAP[c];e=9;break;case 9:a=d;e=10;break; -case 10:return g=a;default:assert(0,"bad label: "+e)}} -function _scanner_search(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=b+12;_state_reset(c);HEAP[c]=HEAP[c+8];var h=HEAP[b+8]+40,j=c;e=HEAP[c+28]==1?1:2;break;case 1:f=_sre_search(j,h);e=3;break;case 2:f=_sre_usearch(j,h);e=3;break;case 3:e=_PyErr_Occurred()!=0?4:5;break;case 4:a=0;e=10;break;case 5:d=_pattern_new_match(HEAP[b+8],c,f);e=f==0?7:6;break;case 6:e=HEAP[c]==HEAP[c+8]?7:8;break;case 7:HEAP[c+8]=HEAP[c]+HEAP[c+28];e=9;break;case 8:HEAP[c+8]=HEAP[c];e=9;break;case 9:a=d;e=10; -break;case 10:return g=a;default:assert(0,"bad label: "+e)}} -function _pattern_scanner(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b,l=b+4,m=b+8;c=g;a=e;HEAP[l]=0;HEAP[m]=2147483647;a=__PyArg_ParseTuple_SizeT(a,__str644190,allocate([k,0,0,0,l,0,0,0,m,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;a=15;break;case 2:a=HEAP[_Scanner_Type+16]>=0?3:7;break;case 3:a=HEAP[_Scanner_Type+16]!=0?4:5;break;case 4:d=HEAP[_Scanner_Type+16];a=6;break;case 5:d= -1;a=6;break;case 6:f=_malloc(d);a=8;break;case 7:f=0;a=8;break;case 8:j=a=_PyObject_Init(f,_Scanner_Type);a=a==0?9:10;break;case 9:h=0;a=15;break;case 10:HEAP[j+8]=0;a=_state_init(j+12,c,HEAP[k],HEAP[l],HEAP[m]);HEAP[k]=a;a=HEAP[k]==0?11:14;break;case 11:HEAP[j]-=1;a=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=13;break;case 13:h=0;a=15;break;case 14:HEAP[c]+=1;HEAP[j+8]=c;h=j;a=15;break;case 15:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _init_sre(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;g=_PyType_Ready(_Pattern_Type)!=0?13:1;break;case 1:g=_PyType_Ready(_Match_Type)!=0?13:2;break;case 2:g=_PyType_Ready(_Scanner_Type)!=0?13:3;break;case 3:e=_Py_InitModule4(__str684194,__functions,0,0,1013);g=e==0?13:4;break;case 4:b=_PyModule_GetDict(e);a=_PyInt_FromLong(20031017);g=a!=0?5:7;break;case 5:_PyDict_SetItemString(b,__str694195,a);HEAP[a]-=1;g=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=7;break;case 7:a= -g=_PyInt_FromLong(2);g=g!=0?8:10;break;case 8:_PyDict_SetItemString(b,__str704196,a);HEAP[a]-=1;g=HEAP[a]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=10;break;case 10:a=g=_PyString_FromString(_copyright);g=g!=0?11:13;break;case 11:_PyDict_SetItemString(b,__str714197,a);HEAP[a]-=1;g=HEAP[a]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=13;break;case 13:return;default:assert(0,"bad label: "+g)}} -function _PyString_FromStringAndSize(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l=b,m=b+4;d=g;f=e;a=f<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str4199);j=0;a=27;break;case 2:var n=f;n==0?(c=2,a=3):(c=2,a=6);break;case 3:k=HEAP[_nullstring];a=k!=0?4:5;break;case 4:HEAP[k]+=1;j=k;a=27;break;case 5:var o=f,c=5;a=6;break;case 6:a=((c==5?o:n)|0)==1?7:10;break;case 7:a=(d|0)!=0?8:10;break;case 8:k=reSign(HEAP[d],8,1);k=HEAP[_characters+ -(k&255)*4];a=(k|0)!=0?9:10;break;case 9:HEAP[k]+=1;j=k;a=27;break;case 10:a=f>2147483626?11:12;break;case 11:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str14200);j=0;a=27;break;case 12:a=f+21>=0?13:16;break;case 13:a=f!=-21?14:15;break;case 14:h=f+21;a=17;break;case 15:h=1;a=17;break;case 16:k=0;a=18;break;case 17:k=a=_malloc(h);a=a==0?18:19;break;case 18:j=_PyErr_NoMemory();a=27;break;case 19:HEAP[k+8]=f;HEAP[k+4]=_PyString_Type;HEAP[k]=1;HEAP[k+12]=-1;HEAP[k+16]=0;a=d!=0?20:21;break;case 20:_llvm_memcpy_p0i8_p0i8_i32(k+ -20,d,f,1,0);a=21;break;case 21:HEAP[k+20+f]=0;a=f==0?22:23;break;case 22:HEAP[l]=k;_PyString_InternInPlace(l);k=HEAP[l];HEAP[_nullstring]=k;HEAP[k]+=1;a=26;break;case 23:a=f==1?24:26;break;case 24:a=d!=0?25:26;break;case 25:HEAP[m]=k;_PyString_InternInPlace(m);k=HEAP[m];a=reSign(HEAP[d],8,1);HEAP[_characters+(a&255)*4]=k;HEAP[k]+=1;a=26;break;case 26:j=k;a=27;break;case 27:return c=j,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyString_FromString(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k=e,l=e+4;c=g;h=_strlen(c);b=h>2147483626?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str24201);f=0;b=21;break;case 2:var m=h;m==0?(a=2,b=3):(a=2,b=6);break;case 3:j=HEAP[_nullstring];b=j!=0?4:5;break;case 4:HEAP[j]+=1;f=j;b=21;break;case 5:var n=h,a=5;b=6;break;case 6:b=(a==5?n:m)==1?7:9;break;case 7:j=HEAP[_characters+(HEAP[c]&255)*4];b=j!=0?8:9;break; -case 8:HEAP[j]+=1;f=j;b=21;break;case 9:b=h+21>=0?10:13;break;case 10:b=h!=-21?11:12;break;case 11:d=h+21;b=14;break;case 12:d=1;b=14;break;case 13:j=0;b=15;break;case 14:j=b=_malloc(d);b=b==0?15:16;break;case 15:f=_PyErr_NoMemory();b=21;break;case 16:HEAP[j+8]=h;HEAP[j+4]=_PyString_Type;HEAP[j]=1;HEAP[j+12]=-1;HEAP[j+16]=0;_llvm_memcpy_p0i8_p0i8_i32(j+20,c,h+1,1,0);b=h==0?17:18;break;case 17:HEAP[k]=j;_PyString_InternInPlace(k);j=HEAP[k];HEAP[_nullstring]=j;HEAP[j]+=1;b=20;break;case 18:b=h==1?19: -20;break;case 19:HEAP[l]=j;_PyString_InternInPlace(l);j=HEAP[l];HEAP[_characters+(HEAP[c]&255)*4]=j;HEAP[j]+=1;b=20;break;case 20:f=j;b=21;break;case 21:return g=f,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyString_FromFormatV(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m=b,n,o,p=b+4;o=b+8;var q,r,u,s,t,v;c=g;d=e;n=0;HEAP[o]=d;_llvm_va_copy(m,o);o=c;a=29;break;case 1:a=HEAP[o]==37?2:27;break;case 2:q=0;r=o;a=3;break;case 3:o+=1;a=HEAP[o]==0?6:4;break;case 4:a=HEAP[o]==37?6:5;break;case 5:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[o]]&1024)==0?3:6;break;case 6:var w=o;a=HEAP[o]==108?7:14;break;case 7:a=HEAP[w+1]==100?9:8;break;case 8:a= -HEAP[o+1]==117?9:10;break;case 9:o+=1;a=18;break;case 10:a=HEAP[o+1]==108?11:18;break;case 11:a=HEAP[o+2]==100?13:12;break;case 12:a=HEAP[o+2]==117?13:18;break;case 13:q=1;o+=2;a=18;break;case 14:a=HEAP[w]==122?15:18;break;case 15:a=HEAP[o+1]==100?17:16;break;case 16:a=HEAP[o+1]==117?17:18;break;case 17:o+=1;a=18;break;case 18:a=HEAP[o];a=a==37?20:a==99?19:a==100?21:a==105?21:a==112?25:a==115?24:a==117?21:a==120?21:26;break;case 19:a=HEAP[m];HEAP[m]=a+4;a=20;break;case 20:n+=1;a=28;break;case 21:l= -HEAP[m];HEAP[m]=l+4;l=n;a=q!=0?22:23;break;case 22:n=l+21;a=28;break;case 23:n=l+20;a=28;break;case 24:k=HEAP[m];HEAP[m]=k+4;k=HEAP[k];a=_strlen(k);n+=a;a=28;break;case 25:a=HEAP[m];HEAP[m]=a+4;n+=19;a=28;break;case 26:a=_strlen(r);n+=a;a=30;break;case 27:n+=1;a=28;break;case 28:o+=1;a=29;break;case 29:a=HEAP[o]!=0?1:30;break;case 30:a=_PyString_FromStringAndSize(0,n);HEAP[p]=a;a=a==0?31:32;break;case 31:j=0;a=92;break;case 32:k=_PyString_AsString(HEAP[p]);o=c;a=88;break;case 33:var x=o;a=HEAP[o]== -37?34:86;break;case 34:h=x;o+=1;n=v=t=s=0;var y=___ctype_b_loc();a=(HEAP[HEAP[y]+2*HEAP[o]]&2048)!=0?35:36;break;case 35:n=n*10+-48+HEAP[o];o+=1;a=(HEAP[HEAP[y]+2*HEAP[o]]&2048)!=0?35:36;break;case 36:a=HEAP[o]==46?37:40;break;case 37:o+=1;n=0;var z=___ctype_b_loc();a=(HEAP[HEAP[z]+2*HEAP[o]]&2048)!=0?38:40;break;case 38:n=n*10+-48+HEAP[o];o+=1;a=(HEAP[HEAP[z]+2*HEAP[o]]&2048)!=0?38:40;break;case 39:o+=1;a=40;break;case 40:a=HEAP[o]==0?43:41;break;case 41:a=HEAP[o]==37?43:42;break;case 42:a=___ctype_b_loc(); -a=(HEAP[HEAP[a]+2*HEAP[o]]&1024)==0?39:43;break;case 43:var C=o;a=HEAP[o]==108?44:51;break;case 44:a=HEAP[C+1]==100?46:45;break;case 45:a=HEAP[o+1]==117?46:47;break;case 46:s=1;o+=1;a=55;break;case 47:a=HEAP[o+1]==108?48:55;break;case 48:a=HEAP[o+2]==100?50:49;break;case 49:a=HEAP[o+2]==117?50:55;break;case 50:t=1;o+=2;a=55;break;case 51:a=HEAP[C]==122?52:55;break;case 52:a=HEAP[o+1]==100?54:53;break;case 53:a=HEAP[o+1]==117?54:55;break;case 54:v=1;o+=1;a=55;break;case 55:a=HEAP[o];a=a==37?84:a== -99?56:a==100?57:a==105?73:a==112?79:a==115?75:a==117?65:a==120?74:85;break;case 56:a=d;d=a+4;HEAP[k]=HEAP[a]&255;k+=1;a=87;break;case 57:a=s!=0?58:59;break;case 58:a=d;d=a+4;_sprintf(k,__str34202,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=64;break;case 59:a=t!=0?60:61;break;case 60:a=d;d=a+8;_sprintf(k,__str44203,allocate([HEAP[a],0,0,0,0,0,0,0],["i64",0,0,0,0,0,0,0],ALLOC_STACK));a=64;break;case 61:var A=d;a=v!=0?62:63;break;case 62:a=A;d=a+4;_sprintf(k,__str54204,allocate([HEAP[a],0, -0,0],["i32",0,0,0],ALLOC_STACK));a=64;break;case 63:a=A;d=a+4;_sprintf(k,__str64205,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=64;break;case 64:a=_strlen(k);k+=a;a=87;break;case 65:a=s!=0?66:67;break;case 66:a=d;d=a+4;_sprintf(k,__str74206,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=72;break;case 67:a=t!=0?68:69;break;case 68:a=d;d=a+8;_sprintf(k,__str84207,allocate([HEAP[a],0,0,0,0,0,0,0],["i64",0,0,0,0,0,0,0],ALLOC_STACK));a=72;break;case 69:var G=d;a=v!=0?70:71;break;case 70:a= -G;d=a+4;_sprintf(k,__str94208,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=72;break;case 71:a=G;d=a+4;_sprintf(k,__str104209,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=72;break;case 72:a=_strlen(k);k+=a;a=87;break;case 73:a=d;d=a+4;_sprintf(k,__str114210,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=_strlen(k);k+=a;a=87;break;case 74:a=d;d=a+4;_sprintf(k,__str124211,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=_strlen(k);k+=a;a=87;break;case 75:h=d;d=h+4;h= -HEAP[h];u=_strlen(h);a=n>0?76:78;break;case 76:a=u>n?77:78;break;case 77:u=n;a=78;break;case 78:_llvm_memcpy_p0i8_p0i8_i32(k,h,u,1,0);k+=u;a=87;break;case 79:f=d;d=f+4;_sprintf(k,__str134212,allocate([HEAP[f],0,0,0],["i8*",0,0,0],ALLOC_STACK));f=k+1;a=HEAP[k+1]==88?80:81;break;case 80:HEAP[f]=120;a=83;break;case 81:a=HEAP[f]!=120?82:83;break;case 82:a=_strlen(k)+1;_llvm_memmove_p0i8_p0i8_i32(k+2,k,a,1,0);HEAP[k]=48;HEAP[k+1]=120;a=83;break;case 83:a=_strlen(k);k+=a;a=87;break;case 84:HEAP[k]=37;k+= -1;a=87;break;case 85:_strcpy(k,h);a=_strlen(k);k+=a;a=89;break;case 86:HEAP[k]=HEAP[x];k+=1;a=87;break;case 87:o+=1;a=88;break;case 88:a=HEAP[o]!=0?33:89;break;case 89:a=__PyString_Resize(p,k-(HEAP[p]+20))!=0?90:91;break;case 90:j=0;a=92;break;case 91:j=HEAP[p];a=92;break;case 92:return c=j,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyString_FromFormat(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);HEAP[e]=arguments[_PyString_FromFormat.length];var b=_PyString_FromFormatV(g,HEAP[e]);STACKTOP=e;return b} -function _PyString_Decode(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;c=g;d=e;f=b;h=a;d=_PyString_FromStringAndSize(c,d);c=d==0?1:2;break;case 1:j=0;c=5;break;case 2:k=_PyString_AsDecodedString(d,f,h);HEAP[d]-=1;c=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);c=4;break;case 4:j=k;c=5;break;case 5:return g=j;default:assert(0,"bad label: "+c)}} -function _PyString_AsDecodedObject(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&134217728)==0?1:2;break;case 1:_PyErr_BadArgument();a=6;break;case 2:a=d==0?3:4;break;case 3:d=_PyUnicodeUCS2_GetDefaultEncoding();a=4;break;case 4:j=a=_PyCodec_Decode(c,d,f);a=a==0?6:5;break;case 5:h=j;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _PyString_AsDecodedString(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;d=_PyString_AsDecodedObject(g,e,b);a=d==0?9:1;break;case 1:a=(HEAP[HEAP[d+4]+84]&268435456)!=0?2:5;break;case 2:f=d;d=_PyUnicodeUCS2_AsEncodedString(d,0,0);HEAP[f]-=1;a=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=4;break;case 4:a=d==0?9:5;break;case 5:var h=d;a=(HEAP[HEAP[d+4]+84]&134217728)==0?6:8;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str144213,allocate([HEAP[HEAP[h+4]+12], -0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[d]-=1;a=HEAP[d]==0?7:9;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=9;break;case 8:c=h;a=10;break;case 9:c=0;a=10;break;case 10:return g=c;default:assert(0,"bad label: "+a)}} -function _PyString_Encode(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;c=g;d=e;f=b;h=a;d=_PyString_FromStringAndSize(c,d);c=d==0?1:2;break;case 1:j=0;c=5;break;case 2:k=_PyString_AsEncodedString(d,f,h);HEAP[d]-=1;c=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);c=4;break;case 4:j=k;c=5;break;case 5:return g=j;default:assert(0,"bad label: "+c)}} -function _PyString_AsEncodedObject(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&134217728)==0?1:2;break;case 1:_PyErr_BadArgument();a=6;break;case 2:a=d==0?3:4;break;case 3:d=_PyUnicodeUCS2_GetDefaultEncoding();a=4;break;case 4:j=a=_PyCodec_Encode(c,d,f);a=a==0?6:5;break;case 5:h=j;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _PyString_AsEncodedString(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;d=_PyString_AsEncodedObject(g,e,b);a=d==0?9:1;break;case 1:a=(HEAP[HEAP[d+4]+84]&268435456)!=0?2:5;break;case 2:f=d;d=_PyUnicodeUCS2_AsEncodedString(d,0,0);HEAP[f]-=1;a=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=4;break;case 4:a=d==0?9:5;break;case 5:var h=d;a=(HEAP[HEAP[d+4]+84]&134217728)==0?6:8;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str154214,allocate([HEAP[HEAP[h+4]+12], -0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[d]-=1;a=HEAP[d]==0?7:9;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=9;break;case 8:c=h;a=10;break;case 9:c=0;a=10;break;case 10:return g=c;default:assert(0,"bad label: "+a)}} -function _string_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+16];e=e==0?5:e==1?1:e==2?3:4;break;case 1:HEAP[b]=3;e=_PyDict_DelItem(HEAP[_interned],b)!=0?2:5;break;case 2:throw _Py_FatalError(__str164215),"Reached an unreachable!";case 3:throw _Py_FatalError(__str174216),"Reached an unreachable!";case 4:throw _Py_FatalError(__str184217),"Reached an unreachable!";case 5:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);return;default:assert(0,"bad label: "+e)}} -function _PyString_DecodeEscape(g,e,b,a,c){a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r=a,u,s,t,v,w,x;f=g;h=e;j=b;k=c;var y=h;d=k!=0?1:2;break;case 1:m=y*4;d=3;break;case 2:m=y;d=3;break;case 3:u=m;d=_PyString_FromStringAndSize(0,u);HEAP[r]=d;d=d==0?4:5;break;case 4:l=0;d=71;break;case 5:o=p=_PyString_AsString(HEAP[r]);q=f+h;d=64;break;case 6:d=HEAP[f]!=92?7:21;break;case 7:d=k==0?20:8;break;case 8:d=HEAP[f]>=0?20:9;break;case 9:v=f;d=11;break; -case 10:v+=1;d=11;break;case 11:d=v>=q?13:12;break;case 12:d=HEAP[v]<0?10:13;break;case 13:s=d=_PyUnicodeUCS2_DecodeUTF8(f,v-f,j);d=d==0?68:14;break;case 14:t=_PyUnicodeUCS2_AsEncodedString(s,k,j);HEAP[s]-=1;d=HEAP[s]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=16;break;case 16:d=t==0?68:17;break;case 17:d=t+20;w=HEAP[t+8];_llvm_memcpy_p0i8_p0i8_i32(o,d,w,1,0);o+=w;HEAP[t]-=1;d=HEAP[t]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);d=19;break;case 19:f=v;d=64;break; -case 20:HEAP[o]=HEAP[f];o+=1;f+=1;d=64;break;case 21:f+=1;d=f==q?22:23;break;case 22:_PyErr_SetString(HEAP[_PyExc_ValueError],__str194218);d=68;break;case 23:d=HEAP[f];f+=1;d=d==10?64:d==34?26:d==39?25:d==48?34:d==49?34:d==50?34:d==51?34:d==52?34:d==53?34:d==54?34:d==55?34:d==92?24:d==97?33:d==98?27:d==102?28:d==110?30:d==114?31:d==116?29:d==118?32:d==120?42:63;break;case 24:HEAP[o]=92;o+=1;d=64;break;case 25:HEAP[o]=39;o+=1;d=64;break;case 26:HEAP[o]=34;o+=1;d=64;break;case 27:HEAP[o]=8;o+=1;d=64; -break;case 28:HEAP[o]=12;o+=1;d=64;break;case 29:HEAP[o]=9;o+=1;d=64;break;case 30:HEAP[o]=10;o+=1;d=64;break;case 31:HEAP[o]=13;o+=1;d=64;break;case 32:HEAP[o]=11;o+=1;d=64;break;case 33:HEAP[o]=7;o+=1;d=64;break;case 34:n=HEAP[f+-1]-48;d=f47?36:41;break;case 36:d=HEAP[f]<=55?37:41;break;case 37:n=n*8+-48+HEAP[f];f+=1;d=f47?39:41;break;case 39:d=HEAP[f]<=55?40:41;break;case 40:n=n*8+-48+HEAP[f];f+=1;d=41;break;case 41:HEAP[o]=n&255; -o+=1;d=64;break;case 42:d=f+1-1?22:26;break;case 26:p=-1;f=76;break;case 27:v=x-1;r=v-1;q=0;f=o!=2?28:51;break;case 28:s=0;var G=l;s< -v?(h=28,f=29):(h=28,f=32);break;case 29:q|=1<<(HEAP[(h==31?E:G)+s]&31);f=HEAP[l+s]==HEAP[l+v]?30:31;break;case 30:r=v+-1+(0-s);f=31;break;case 31:s+=1;var E=l;s>>(HEAP[j+(m+s)]&31)&1)==0?45:46;break;case 45:s=m+D;f=49;break;case 46:s=r+D;f=49;break;case 47:f=(q>>>(HEAP[j+(m+s)]&31)&1)==0?48:49;break;case 48:s=m+s;f=49;break;case 49:s+=1;f=50;break;case 50:f=s<=w?33:73;break;case 51:q|=1<<(HEAP[l]&31);s=v;f=v>0?52:55;break;case 52:q|=1<<(HEAP[l+s]&31);f=HEAP[l+s]==HEAP[l]?53:54;break;case 53:r=s-1;f=54;break;case 54:s=f=s-1;f=f>0?52:55;break;case 55:var R=w;s=R;h=55; -f=72;break;case 56:f=HEAP[j+s]==HEAP[l]?57:68;break;case 57:var M=v;t=M;h=57;f=60;break;case 58:var L=t;HEAP[j+(t+s)]!=HEAP[l+L]?(h=58,f=62):(h=58,f=59);break;case 59:var I=t-1;t=I;h=59;f=60;break;case 60:f=(h==59?I:M)>0?58:61;break;case 61:var J=t,h=61;f=62;break;case 62:var F=s;f=(h==61?J:L)==0?63:64;break;case 63:p=F;f=76;break;case 64:f=F<=0?67:65;break;case 65:f=(q>>>(HEAP[j+(s-1)]&31)&1)!=0?67:66;break;case 66:s-=m;f=71;break;case 67:s-=r;f=71;break;case 68:f=s>0?69:71;break;case 69:f=(q>>> -(HEAP[j+(s-1)]&31)&1)==0?70:71;break;case 70:s-=m;f=71;break;case 71:var V=s-1;s=V;h=71;f=72;break;case 72:f=(h==71?V:R)>=0?56:73;break;case 73:f=o!=0?74:75;break;case 74:p=-1;f=76;break;case 75:p=u;f=76;break;case 76:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_count4399(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o;f=g;h=e;j=b;k=a;l=c;d=h<0?1:2;break;case 1:n=0;d=10;break;case 2:d=k==0?3:7;break;case 3:d=h=0?5:6;break;case 5:n=l+n;d=6;break;case 6:m=n;d=7;break;case 7:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_rfind4401(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;l=c;d=h<0?1:2;break;case 1:m=-1;d=7;break;case 2:d=k==0?3:4;break;case 3:m=l+h;d=7;break;case 4:n=_fastsearch4398(f,h,j,k,-1,2);d=n>=0?5:6;break;case 5:n=l+n;d=6;break;case 6:m=n;d=7;break;case 7:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_find_slice4402(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=n>j?1:2;break;case 1:n=j;f=5;break;case 2:f=n<0?3:5;break;case 3:n=j+n;f=n<0?4:5;break;case 4:n=0;f=5;break;case 5:f=m<0?6:8;break;case 6:m=j+m;f=m<0?7:8;break;case 7:m=0;f=8;break;case 8:return g=_stringlib_find4400(h+m,n-m,k,l,m);default:assert(0,"bad label: "+f)}} -function _stringlib_rfind_slice4403(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=n>j?1:2;break;case 1:n=j;f=5;break;case 2:f=n<0?3:5;break;case 3:n=j+n;f=n<0?4:5;break;case 4:n=0;f=5;break;case 5:f=m<0?6:8;break;case 6:m=j+m;f=m<0?7:8;break;case 7:m=0;f=8;break;case 8:return g=_stringlib_rfind4401(h+m,n-m,k,l,m);default:assert(0,"bad label: "+f)}}function _stringlib_contains_obj(g,e){return _stringlib_find4400(g+20,HEAP[g+8],e+20,HEAP[e+8],0)!=-1} -function _stringlib_parse_args_finds4404(g,e,b,a,c){var d=STACKTOP;STACKTOP+=70;_memset(d,0,70);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o=d+4,p=d+8,q=d+12,r=d+16,u=d+20,s;f=g;h=e;j=b;k=a;l=c;HEAP[o]=0;HEAP[p]=2147483647;HEAP[q]=__Py_NoneStruct;HEAP[r]=__Py_NoneStruct;_llvm_memcpy_p0i8_p0i8_i32(u,__str795277,50,1,0);s=_strlen(u);_strncpy(u+s,f,49-s);HEAP[u+49]=0;f=__PyArg_ParseTuple_SizeT(h,u,allocate([n,0,0,0,q,0,0,0,r,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0, -0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:m=0;f=9;break;case 2:f=HEAP[q]!=__Py_NoneStruct?3:5;break;case 3:f=__PyEval_SliceIndex(HEAP[q],o)==0?4:5;break;case 4:m=0;f=9;break;case 5:f=HEAP[r]!=__Py_NoneStruct?6:8;break;case 6:f=__PyEval_SliceIndex(HEAP[r],p)==0?7:8;break;case 7:m=0;f=9;break;case 8:HEAP[k]=HEAP[o];HEAP[l]=HEAP[p];HEAP[j]=HEAP[n];m=1;f=9;break;case 9:return g=m,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _stringlib_partition4405(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q;h=g;j=e;k=b;l=a;m=c;n=d;f=n==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str294228);o=0;f=11;break;case 2:p=_PyTuple_New(3);f=p==0?3:4;break;case 3:o=0;f=11;break;case 4:q=_fastsearch4398(j,k,m,n,-1,1);f=q<0?5:6;break;case 5:HEAP[h]+=1;HEAP[p+12]=h;HEAP[HEAP[_nullstring]]+=1;HEAP[p+12+4]=HEAP[_nullstring];HEAP[HEAP[_nullstring]]+=1;HEAP[p+12+8]=HEAP[_nullstring];o=p;f=11;break; -case 6:var r=p;f=_PyString_FromStringAndSize(j,q);HEAP[r+12]=f;HEAP[l]+=1;HEAP[p+12+4]=l;q=n+q;r=p;f=_PyString_FromStringAndSize(j+q,k-q);HEAP[r+12+8]=f;f=_PyErr_Occurred();r=p;f=f!=0?7:10;break;case 7:HEAP[p]=HEAP[r]-1;f=HEAP[p]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);f=9;break;case 9:o=0;f=11;break;case 10:o=r;f=11;break;case 11:return g=o;default:assert(0,"bad label: "+f)}} -function _stringlib_rpartition4406(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q;h=g;j=e;k=b;l=a;m=c;n=d;f=n==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str294228);o=0;f=11;break;case 2:p=_PyTuple_New(3);f=p==0?3:4;break;case 3:o=0;f=11;break;case 4:q=_fastsearch4398(j,k,m,n,-1,2);f=q<0?5:6;break;case 5:HEAP[HEAP[_nullstring]]+=1;HEAP[p+12]=HEAP[_nullstring];HEAP[HEAP[_nullstring]]+=1;HEAP[p+12+4]=HEAP[_nullstring];HEAP[h]+=1;HEAP[p+12+8]=h;o=p;f=11;break; -case 6:var r=p;f=_PyString_FromStringAndSize(j,q);HEAP[r+12]=f;HEAP[l]+=1;HEAP[p+12+4]=l;q=n+q;r=p;f=_PyString_FromStringAndSize(j+q,k-q);HEAP[r+12+8]=f;f=_PyErr_Occurred();r=p;f=f!=0?7:10;break;case 7:HEAP[p]=HEAP[r]-1;f=HEAP[p]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);f=9;break;case 9:o=0;f=11;break;case 10:o=r;f=11;break;case 11:return g=o;default:assert(0,"bad label: "+f)}} -function _stringlib_split_whitespace4407(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;j=a;o=0;c=j<=11?1:2;break;case 1:l=j+1;c=3;break;case 2:l=12;c=3;break;case 3:p=c=_PyList_New(l);c=c==0?4:5;break;case 4:k=0;c=46;break;case 5:m=n=0;c=27;break;case 6:m+=1;c=7;break;case 7:c=m>=h?9:8;break;case 8:c=(HEAP[__Py_ctype_table+HEAP[f+m]*4]&8)!=0?6:9;break;case 9:c=m==h?28:10;break;case 10:n=m;m+=1;c=12;break;case 11:m+=1;c=12;break;case 12:c=m>=h?14:13;break;case 13:c= -(HEAP[__Py_ctype_table+HEAP[f+m]*4]&8)==0?11:14;break;case 14:c=n==0?15:18;break;case 15:c=m==h?16:18;break;case 16:c=HEAP[d+4]==_PyString_Type?17:18;break;case 17:HEAP[d]+=1;HEAP[HEAP[p+12]]=d;o+=1;c=28;break;case 18:q=c=_PyString_FromStringAndSize(f+n,m-n);c=c==0?43:19;break;case 19:var r=p;c=o<=11?20:21;break;case 20:HEAP[HEAP[r+12]+4*o]=q;c=26;break;case 21:c=_PyList_Append(r,q)!=0;HEAP[q]-=1;var u=HEAP[q]==0;c=c?22:24;break;case 22:c=u?23:43;break;case 23:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q); -c=43;break;case 24:c=u?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=26;break;case 26:o+=1;c=27;break;case 27:c=j>0;j-=1;c=c!=0?7:28;break;case 28:c=m=h?32:31;break;case 31:c=(HEAP[__Py_ctype_table+HEAP[f+m]*4]&8)!=0?29:32;break;case 32:c=m!=h?33:42;break;case 33:q=_PyString_FromStringAndSize(f+m,h-m);c=q==0?43:34;break;case 34:var s=p;c=o<=11?35:36;break;case 35:HEAP[HEAP[s+12]+4*o]=q;c=41;break;case 36:c=_PyList_Append(s,q)!=0;HEAP[q]-= -1;var t=HEAP[q]==0;c=c?37:39;break;case 37:c=t?38:43;break;case 38:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=43;break;case 39:c=t?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=41;break;case 41:o+=1;c=42;break;case 42:HEAP[p+8]=o;k=p;c=46;break;case 43:HEAP[p]-=1;c=HEAP[p]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=45;break;case 45:k=0;c=46;break;case 46:return g=k;default:assert(0,"bad label: "+c)}} -function _stringlib_split_char4408(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u;f=g;h=e;j=b;k=a;l=c;q=0;d=l<=11?1:2;break;case 1:n=l+1;d=3;break;case 2:n=12;d=3;break;case 3:r=d=_PyList_New(n);d=d==0?4:5;break;case 4:m=0;d=37;break;case 5:o=p=0;d=18;break;case 6:var s=p;d=HEAP[h+p]==k?7:16;break;case 7:u=_PyString_FromStringAndSize(h+o,s-o);d=u==0?34:8;break;case 8:var t=r;d=q<=11?9:10;break;case 9:HEAP[HEAP[t+12]+4*q]=u;d=15;break;case 10:d=_PyList_Append(t,u)!=0;HEAP[u]-= -1;var v=HEAP[u]==0;d=d?11:13;break;case 11:d=v?12:34;break;case 12:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=34;break;case 13:d=v?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=15;break;case 15:q+=1;p+=1;o=p;d=18;break;case 16:p=s+1;d=17;break;case 17:d=p=j?20:19;break;case 19:d=l>0;l-=1;d=d!=0?17:20;break;case 20:d=q!=0?23:21;break;case 21:d=HEAP[f+4]!=_PyString_Type?23:22;break;case 22:HEAP[f]+=1;HEAP[HEAP[r+12]]=f;q+=1;d=33;break;case 23:d=o<=j?24:33;break; -case 24:u=_PyString_FromStringAndSize(h+o,j-o);d=u==0?34:25;break;case 25:var w=r;d=q<=11?26:27;break;case 26:HEAP[HEAP[w+12]+4*q]=u;d=32;break;case 27:d=_PyList_Append(w,u)!=0;HEAP[u]-=1;var x=HEAP[u]==0;d=d?28:30;break;case 28:d=x?29:34;break;case 29:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=34;break;case 30:d=x?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=32;break;case 32:q+=1;d=33;break;case 33:HEAP[r+8]=q;m=r;d=37;break;case 34:HEAP[r]-=1;d=HEAP[r]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[r+ -4]+24]](r);d=36;break;case 36:m=0;d=37;break;case 37:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_split4409(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v;h=g;j=e;k=b;l=a;m=c;n=d;s=0;f=m==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str294228);p=0;f=37;break;case 2:f=m==1?3:4;break;case 3:p=_stringlib_split_char4408(h,j,k,HEAP[l]&255,n);f=37;break;case 4:f=n<=11?5:6;break;case 5:o=n+1;f=7;break;case 6:o=12;f=7;break;case 7:t=f=_PyList_New(o);f=f==0?8:9;break;case 8:p=0;f=37;break;case 9:q=r=0;f=20;break;case 10:u=_fastsearch4398(j+ -q,k-q,l,m,-1,1);f=u<0?21:11;break;case 11:r=u+q;v=_PyString_FromStringAndSize(j+q,r-q);f=v==0?34:12;break;case 12:var w=t;f=s<=11?13:14;break;case 13:HEAP[HEAP[w+12]+4*s]=v;f=19;break;case 14:f=_PyList_Append(w,v)!=0;HEAP[v]-=1;var x=HEAP[v]==0;f=f?15:17;break;case 15:f=x?16:34;break;case 16:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=34;break;case 17:f=x?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=19;break;case 19:s+=1;q=m+r;f=20;break;case 20:f=n>0;n-=1;f=f!=0?10:21;break;case 21:f= -s!=0?24:22;break;case 22:f=HEAP[h+4]!=_PyString_Type?24:23;break;case 23:HEAP[h]+=1;HEAP[HEAP[t+12]]=h;s+=1;f=33;break;case 24:v=f=_PyString_FromStringAndSize(j+q,k-q);f=f==0?34:25;break;case 25:var y=t;f=s<=11?26:27;break;case 26:HEAP[HEAP[y+12]+4*s]=v;f=32;break;case 27:f=_PyList_Append(y,v)!=0;HEAP[v]-=1;var z=HEAP[v]==0;f=f?28:30;break;case 28:f=z?29:34;break;case 29:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=34;break;case 30:f=z?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=32;break; -case 32:s+=1;f=33;break;case 33:HEAP[t+8]=s;p=t;f=37;break;case 34:HEAP[t]-=1;f=HEAP[t]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=36;break;case 36:p=0;f=37;break;case 37:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_rsplit_whitespace4410(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r;f=g;h=e;j=b;k=a;p=0;c=k<=11?1:2;break;case 1:m=k+1;c=3;break;case 2:m=12;c=3;break;case 3:q=c=_PyList_New(m);c=c==0?4:5;break;case 4:l=0;c=48;break;case 5:n=o=j-1;c=28;break;case 6:var u=n-1;n=u;d=6;c=8;break;case 7:var s=n,d=7;c=8;break;case 8:c=(d==7?s:u)<0?10:9;break;case 9:c=(HEAP[__Py_ctype_table+HEAP[h+n]*4]&8)!=0?6:10;break;case 10:c=n<0?43:11;break;case 11:o=n;var t=n-1;n= -t;d=11;c=13;break;case 12:var v=n-1;n=v;d=12;c=13;break;case 13:c=(d==12?v:t)<0?15:14;break;case 14:c=(HEAP[__Py_ctype_table+HEAP[h+n]*4]&8)==0?12:15;break;case 15:c=j-1==o?16:19;break;case 16:c=n<0?17:19;break;case 17:c=HEAP[f+4]==_PyString_Type?18:19;break;case 18:HEAP[f]+=1;HEAP[HEAP[q+12]]=f;p+=1;c=29;break;case 19:r=c=_PyString_FromStringAndSize(h+(n+1),0-n+o);c=c==0?45:20;break;case 20:var w=q;c=p<=11?21:22;break;case 21:HEAP[HEAP[w+12]+4*p]=r;c=27;break;case 22:c=_PyList_Append(w,r)!=0;HEAP[r]-= -1;var x=HEAP[r]==0;c=c?23:25;break;case 23:c=x?24:45;break;case 24:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=45;break;case 25:c=x?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=27;break;case 27:p+=1;c=28;break;case 28:c=k>0;k-=1;c=c!=0?7:29;break;case 29:var y=n;y>=0?(d=29,c=31):(d=29,c=43);break;case 30:var z=n-1;n=z;d=30;c=31;break;case 31:c=(d==30?z:y)<0?33:32;break;case 32:c=(HEAP[__Py_ctype_table+HEAP[h+n]*4]&8)!=0?30:33;break;case 33:c=n>=0?34:43;break;case 34:r=_PyString_FromStringAndSize(h, -n+1);c=r==0?45:35;break;case 35:var C=q;c=p<=11?36:37;break;case 36:HEAP[HEAP[C+12]+4*p]=r;c=42;break;case 37:c=_PyList_Append(C,r)!=0;HEAP[r]-=1;var A=HEAP[r]==0;c=c?38:40;break;case 38:c=A?39:45;break;case 39:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=45;break;case 40:c=A?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=42;break;case 42:p+=1;c=43;break;case 43:HEAP[q+8]=p;c=_PyList_Reverse(q)<0?45:44;break;case 44:l=q;c=48;break;case 45:HEAP[q]-=1;c=HEAP[q]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[q+ -4]+24]](q);c=47;break;case 47:l=0;c=48;break;case 48:return g=l;default:assert(0,"bad label: "+c)}} -function _stringlib_rsplit_char4411(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u,s;h=g;j=e;k=b;l=a;m=c;r=0;d=m<=11?1:2;break;case 1:o=m+1;d=3;break;case 2:o=12;d=3;break;case 3:u=d=_PyList_New(o);d=d==0?4:5;break;case 4:n=0;d=40;break;case 5:var t=q=k-1;p=t;f=5;d=20;break;case 6:d=HEAP[j+p]==l?7:16;break;case 7:s=_PyString_FromStringAndSize(j+(p+1),0-p+q);d=s==0?37:8;break;case 8:var v=u;d=r<=11?9:10;break;case 9:HEAP[HEAP[v+12]+4*r]=s;d=15;break;case 10:d=_PyList_Append(v, -s)!=0;HEAP[s]-=1;var w=HEAP[s]==0;d=d?11:13;break;case 11:d=w?12:37;break;case 12:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=37;break;case 13:d=w?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=15;break;case 15:r+=1;p-=1;var x=p;q=x;f=15;d=20;break;case 16:var y=p-1;p=y;f=16;d=18;break;case 17:var z=p,f=17;d=18;break;case 18:d=(f==17?z:y)>=0?6:19;break;case 19:var C=p,f=19;d=20;break;case 20:d=(f==5?t:f==19?C:x)<0?22:21;break;case 21:d=m>0;m-=1;d=d!=0?17:22;break;case 22:d=r!=0?25:23;break; -case 23:d=HEAP[h+4]!=_PyString_Type?25:24;break;case 24:HEAP[h]+=1;HEAP[HEAP[u+12]]=h;r+=1;d=35;break;case 25:d=q>=-1?26:35;break;case 26:s=_PyString_FromStringAndSize(j,q+1);d=s==0?37:27;break;case 27:var A=u;d=r<=11?28:29;break;case 28:HEAP[HEAP[A+12]+4*r]=s;d=34;break;case 29:d=_PyList_Append(A,s)!=0;HEAP[s]-=1;var G=HEAP[s]==0;d=d?30:32;break;case 30:d=G?31:37;break;case 31:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=37;break;case 32:d=G?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d= -34;break;case 34:r+=1;d=35;break;case 35:HEAP[u+8]=r;d=_PyList_Reverse(u)<0?37:36;break;case 36:n=u;d=40;break;case 37:HEAP[u]-=1;d=HEAP[u]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=39;break;case 39:n=0;d=40;break;case 40:return g=n;default:assert(0,"bad label: "+d)}} -function _stringlib_rsplit4412(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t;h=g;j=e;k=b;l=a;m=c;n=d;u=0;f=m==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str294228);p=0;f=38;break;case 2:f=m==1?3:4;break;case 3:p=_stringlib_rsplit_char4411(h,j,k,HEAP[l]&255,n);f=38;break;case 4:f=n<=11?5:6;break;case 5:o=n+1;f=7;break;case 6:o=12;f=7;break;case 7:s=f=_PyList_New(o);f=f==0?8:9;break;case 8:p=0;f=38;break;case 9:q=k;f=20;break;case 10:r=_fastsearch4398(j, -q,l,m,-1,2);f=r<0?21:11;break;case 11:t=_PyString_FromStringAndSize(j+(m+r),0-m+(0-r)+q);f=t==0?35:12;break;case 12:var v=s;f=u<=11?13:14;break;case 13:HEAP[HEAP[v+12]+4*u]=t;f=19;break;case 14:f=_PyList_Append(v,t)!=0;HEAP[t]-=1;var w=HEAP[t]==0;f=f?15:17;break;case 15:f=w?16:35;break;case 16:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=35;break;case 17:f=w?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=19;break;case 19:u+=1;q=r;f=20;break;case 20:f=n>0;n-=1;f=f!=0?10:21;break;case 21:f= -u!=0?24:22;break;case 22:f=HEAP[h+4]!=_PyString_Type?24:23;break;case 23:HEAP[h]+=1;HEAP[HEAP[s+12]]=h;u+=1;f=33;break;case 24:t=f=_PyString_FromStringAndSize(j,q);f=f==0?35:25;break;case 25:var x=s;f=u<=11?26:27;break;case 26:HEAP[HEAP[x+12]+4*u]=t;f=32;break;case 27:f=_PyList_Append(x,t)!=0;HEAP[t]-=1;var y=HEAP[t]==0;f=f?28:30;break;case 28:f=y?29:35;break;case 29:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=35;break;case 30:f=y?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=32;break;case 32:u+= -1;f=33;break;case 33:HEAP[s+8]=u;f=_PyList_Reverse(s)<0?35:34;break;case 34:p=s;f=38;break;case 35:HEAP[s]-=1;f=HEAP[s]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);f=37;break;case 37:p=0;f=38;break;case 38:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_splitlines4413(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p;d=g;f=e;h=b;j=a;n=_PyList_New(0);c=n==0?1:2;break;case 1:k=0;c=31;break;case 2:l=m=0;c=26;break;case 3:l+=1;c=4;break;case 4:c=l>=h?7:5;break;case 5:c=HEAP[f+l]==10?7:6;break;case 6:c=HEAP[f+l]!=13?3:7;break;case 7:p=l;c=l=h?12:10;break;case 10:c=HEAP[f+(l+1)]!=10?12:11;break;case 11:l+=2;c=13;break;case 12:l+=1;c=13;break;case 13:c=j!= -0?14:15;break;case 14:p=l;c=15;break;case 15:c=m==0?16:19;break;case 16:c=p==h?17:19;break;case 17:c=HEAP[d+4]==_PyString_Type?18:19;break;case 18:c=_PyList_Append(n,d)!=0?28:27;break;case 19:o=c=_PyString_FromStringAndSize(f+m,p-m);c=c==0?28:20;break;case 20:c=_PyList_Append(n,o)!=0;HEAP[o]-=1;var q=HEAP[o]==0;c=c?21:23;break;case 21:c=q?22:28;break;case 22:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=28;break;case 23:c=q?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=25;break;case 25:m= -l;c=26;break;case 26:c=l=o?E:o;v=v>=1?v:1;C=v<=C?v:C;v=C-E>=0?C-E:0;A=C<=E?C:E;A=A>=0?A:0;j=x!=0?3:4;break;case 3:s=G;j=5;break;case 4:s=0;j=5;break;case 5:t=v+ -s+A+t;j=k!=0?6:10;break;case 6:j=x!=0?7:8;break;case 7:u=p;j=9;break;case 8:u=0;j=9;break;case 9:_fill(z,y,A,v,u,G);j=10;break;case 10:x=1;E=j=E-A;o-=C;j=j<=0?11:13;break;case 11:j=o<=0?12:13;break;case 12:w=1;j=24;break;case 13:o-=G;j=14;break;case 14:C=j=__GroupGenerator_next(D);j=j>0?2:15;break;case 15:j=w==0?16:24;break;case 16:C=E>=o?E:o;C=C>=1?C:1;v=C-E>=0?C-E:0;A=C<=E?C:E;A=A>=0?A:0;j=x!=0?17:18;break;case 17:r=G;j=19;break;case 18:r=0;j=19;break;case 19:t=v+r+A+t;j=k!=0?20:24;break;case 20:j= -x!=0?21:22;break;case 21:q=p;j=23;break;case 22:q=0;j=23;break;case 23:_fill(z,y,A,v,q,G);j=24;break;case 24:return g=t,STACKTOP=h,g;default:assert(0,"bad label: "+j)}}function __Py_InsertThousandsGroupingLocale(g,e,b,a,c){var d;d=_localeconv();return __PyString_InsertThousandsGrouping(g,e,b,a,c,HEAP[d+8],HEAP[d+4])} -function _string_print(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;a=HEAP[c+4]!=_PyString_Type?1:6;break;case 1:c=_PyObject_Str(c);a=c==0?2:3;break;case 2:h=-1;a=25;break;case 3:n=_string_print(c,d,f);HEAP[c]-=1;a=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=5;break;case 5:h=n;a=25;break;case 6:a=(f&1)!=0?7:8;break;case 7:a=c+20;h=HEAP[c+8];_fwrite(a,1,h,d);h=0;a=25;break;case 8:m=39;a=_memchr(c+20,39,HEAP[c+8])!=0?9:11;break;case 9:a=_memchr(c+ -20,34,HEAP[c+8])==0?10:11;break;case 10:m=34;a=11;break;case 11:k=HEAP[c+8];_fputc(m,d);j=0;a=jk?10:22;break;case 10:l=HEAP[c+20+k];a=l==n|l==92?11:12;break;case 11:HEAP[m]=92;m+=1;HEAP[m]=l;m+=1;a=21;break;case 12:a=l==9?13:14;break;case 13:HEAP[m]=92;m+=1;HEAP[m]=116;m+=1;a=21;break;case 14:a=l==10?15:16;break;case 15:HEAP[m]=92;m+=1;HEAP[m]=110;m+=1;a=21;break;case 16:a=l==13?17:18;break;case 17:HEAP[m]=92;m+=1;HEAP[m]=114;m+=1;a=21;break;case 18:a=l<=31|l==127?19:20;break;case 19:_sprintf(m,__str344233, -allocate([l&255,0,0,0],["i32",0,0,0],ALLOC_STACK));m+=4;a=21;break;case 20:HEAP[m]=l;m+=1;a=21;break;case 21:k+=1;a=HEAP[c+8]>k?10:22;break;case 22:HEAP[m]=n&255;m+=1;HEAP[m]=0;a=__PyString_Resize(j,m-(HEAP[j]+20))!=0?23:24;break;case 23:f=0;a=25;break;case 24:f=HEAP[j];a=25;break;case 25:return d=f,STACKTOP=b,d;default:assert(0,"bad label: "+a)}}function _string_repr(g){return _PyString_Repr(g,1)} -function _string_str(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+4]==_PyString_Type?1:2;break;case 1:HEAP[b]=HEAP[c]+1;a=b;e=3;break;case 2:e=c;a=_PyString_FromStringAndSize(e+20,HEAP[e+8]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _string_length(g){return HEAP[g+8]} -function _string_concat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=(HEAP[HEAP[c+4]+84]&134217728)==0?1:7;break;case 1:b=(HEAP[HEAP[c+4]+84]&268435456)!=0?2:3;break;case 2:f=_PyUnicodeUCS2_Concat(a,c);b=28;break;case 3:b=HEAP[c+4]==_PyByteArray_Type?5:4;break;case 4:b=_PyType_IsSubtype(HEAP[c+4],_PyByteArray_Type)!=0?5:6;break;case 5:f=_PyByteArray_Concat(a,c);b=28;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str364235,allocate([HEAP[HEAP[c+4]+12],0,0,0],["i8*",0,0,0], -ALLOC_STACK));f=0;b=28;break;case 7:b=HEAP[a+8]==0?9:8;break;case 8:b=HEAP[c+8]==0?9:14;break;case 9:b=HEAP[a+4]==_PyString_Type?10:14;break;case 10:b=HEAP[c+4]==_PyString_Type?11:14;break;case 11:b=HEAP[a+8]==0?12:13;break;case 12:HEAP[c]+=1;f=c;b=28;break;case 13:HEAP[a]+=1;f=a;b=28;break;case 14:h=HEAP[c+8]+HEAP[a+8];b=HEAP[a+8]<0?17:15;break;case 15:b=HEAP[c+8]<0?17:16;break;case 16:b=HEAP[a+8]>2147483647-HEAP[c+8]?17:18;break;case 17:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str374236);f= -0;b=28;break;case 18:b=h>2147483626?19:20;break;case 19:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str374236);f=0;b=28;break;case 20:b=h+21>=0?21:24;break;case 21:b=h!=-21?22:23;break;case 22:d=h+21;b=25;break;case 23:d=1;b=25;break;case 24:j=0;b=26;break;case 25:j=b=_malloc(d);b=b==0?26:27;break;case 26:f=_PyErr_NoMemory();b=28;break;case 27:HEAP[j+8]=h;HEAP[j+4]=_PyString_Type;HEAP[j]=1;HEAP[j+12]=-1;HEAP[j+16]=0;_llvm_memcpy_p0i8_p0i8_i32(j+20,a+20,HEAP[a+8],1,0);_llvm_memcpy_p0i8_p0i8_i32(j+ -20+HEAP[a+8],c+20,HEAP[c+8],1,0);HEAP[j+20+h]=0;f=j;b=28;break;case 28:return a=f;default:assert(0,"bad label: "+b)}} -function _string_repeat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;var m=c=e;b=m<0?1:2;break;case 1:j=c=0;b=5;break;case 2:j=HEAP[a+8]*m;b=m!=0?3:5;break;case 3:b=(j/c|0)!=HEAP[a+8]?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str384237);f=0;b=25;break;case 5:b=HEAP[a+8]==j?6:8;break;case 6:b=HEAP[a+4]==_PyString_Type?7:8;break;case 7:HEAP[a]+=1;f=a;b=25;break;case 8:l=j;b=l+21<=l?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str384237);f=0; -b=25;break;case 10:b=l+21>=0?11:14;break;case 11:b=l!=-21?12:13;break;case 12:d=l+21;b=15;break;case 13:d=1;b=15;break;case 14:k=0;b=16;break;case 15:k=b=_malloc(d);b=b==0?16:17;break;case 16:f=_PyErr_NoMemory();b=25;break;case 17:HEAP[k+8]=j;HEAP[k+4]=_PyString_Type;HEAP[k]=1;HEAP[k+12]=-1;HEAP[k+16]=0;HEAP[k+20+j]=0;b=HEAP[a+8]==1?18:20;break;case 18:b=c>0?19:20;break;case 19:f=c;b=reSign(HEAP[a+20],8,1)&255;_llvm_memset_p0i8_i32(k+20,b,f,1,0);f=k;b=25;break;case 20:h=0;b=h0?14:15;break;case 14:l=HEAP[d+20]-HEAP[f+20];a=l==0?16:21;break;case 15:l=0;a=17;break;case 16:l=a=_memcmp(d+20,f+20,o);a=a==0?17:21;break;case 17:a=m>=n?18:19;break;case 18:k=m>n;a=20;break;case 19:k=-1;a=20;break;case 20:l=k;a=21;break;case 21:a=h;a=a==0?22:a==1?23:a==2?28:a==3?24:a==4?25:a==5?26:27;break; -case 22:var u=l<0;l=u;c=22;a=29;break;case 23:var s=l<=0;l=s;c=23;a=29;break;case 24:var t=l!=0;l=t;c=24;a=29;break;case 25:var v=l>0;l=v;c=25;a=29;break;case 26:var w=l>=0;l=w;c=26;a=29;break;case 27:p=__Py_NotImplementedStruct;a=33;break;case 28:var x=l,c=28;a=29;break;case 29:a=(c==28?x:c==26?w:c==25?v:c==24?t:c==23?s:u)!=0?30:31;break;case 30:j=__Py_TrueStruct;a=32;break;case 31:j=__Py_ZeroStruct;a=32;break;case 32:p=j;a=33;break;case 33:return HEAP[p]+=1,g=p;default:assert(0,"bad label: "+a)}} -function __PyString_Eq(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=b=e;b=HEAP[a+8]!=HEAP[d+8]?4:1;break;case 1:b=HEAP[a+20]!=HEAP[d+20]?4:2;break;case 2:b=_memcmp(a+20,d+20,HEAP[a+8])!=0?4:3;break;case 3:c=1;b=5;break;case 4:c=0;b=5;break;case 5:return c;default:assert(0,"bad label: "+b)}} -function _string_hash(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h=b=g;e=HEAP[b+12]!=-1?1:2;break;case 1:a=HEAP[h+12];e=7;break;case 2:c=HEAP[h+8];d=b+20;f=HEAP[d]<<7;c=e=c-1;e=e>=0?3:4;break;case 3:f=f*1000003&4294967295;f^=unSign(HEAP[d],8,1);d=d+1&4294967295;c=e=c-1;e=e>=0?3:4;break;case 4:f=e=f^HEAP[b+8];e=e==-1?5:6;break;case 5:f=-2;e=6;break;case 6:a=HEAP[b+12]=f;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _string_subscript(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k=b,l=b+4,m=b+8,n=b+12,o,p,q,r;d=g;f=e;a=HEAP[HEAP[f+4]+48]==0?10:1;break;case 1:a=(HEAP[HEAP[f+4]+84]&131072)==0?10:2;break;case 2:a=HEAP[HEAP[HEAP[f+4]+48]+152]==0?10:3;break;case 3:var u=j=_PyNumber_AsSsize_t(f,HEAP[_PyExc_IndexError]);u==-1?(c=3,a=4):(c=3,a=7);break;case 4:a=_PyErr_Occurred()!=0?5:6;break;case 5:h=0;a=28;break;case 6:var s=j,c=6;a=7;break;case 7:a= -(c==6?s:u)<0?8:9;break;case 8:j+=HEAP[d+8];a=9;break;case 9:h=_string_item(d,j);a=28;break;case 10:a=HEAP[f+4]==_PySlice_Type?11:27;break;case 11:a=_PySlice_GetIndicesEx(f,HEAP[d+8],k,l,m,n)<0?12:13;break;case 12:h=0;a=28;break;case 13:a=HEAP[n]<=0?14:15;break;case 14:h=_PyString_FromStringAndSize(__str414240,0);a=28;break;case 15:a=HEAP[k]!=0?20:16;break;case 16:a=HEAP[m]!=1?22:17;break;case 17:a=HEAP[d+8]!=HEAP[n]?20:18;break;case 18:a=HEAP[d+4]!=_PyString_Type?20:19;break;case 19:HEAP[d]+=1;h= -d;a=28;break;case 20:a=HEAP[m]==1?21:22;break;case 21:h=_PyString_FromStringAndSize(d+20+HEAP[k],HEAP[n]);a=28;break;case 22:q=_PyString_AsString(d);r=a=_PyMem_Malloc(HEAP[n]);a=a==0?23:24;break;case 23:h=_PyErr_NoMemory();a=28;break;case 24:o=HEAP[k];p=0;a=pr?44:45;break;case 44:_llvm_memcpy_p0i8_p0i8_i32(o,l,m,1,0);o+=m;b=45;break;case 45:r+=1;var A=d;r0?9:10;break;case 9:h=_stringlib_find_slice4402(t,s,u,r,q,p);c=11;break;case 10:h=_stringlib_rfind_slice4403(t,s,u,r,q,p);c=11;break;case 11:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _string_find(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_string_find_internal(g,e,1);b=c==-2?1:2;break;case 1:a=0;b=3;break;case 2:a=_PyInt_FromSsize_t(c);b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _string_index(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_string_find_internal(g,e,1);b=c==-2?1:2;break;case 1:a=0;b=5;break;case 2:b=c==-1?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str534258);a=0;b=5;break;case 4:a=_PyInt_FromSsize_t(c);b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _string_rfind(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_string_find_internal(g,e,-1);b=c==-2?1:2;break;case 1:a=0;b=3;break;case 2:a=_PyInt_FromSsize_t(c);b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _string_rindex(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_string_find_internal(g,e,-1);b=c==-2?1:2;break;case 1:a=0;b=5;break;case 2:b=c==-1?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str534258);a=0;b=5;break;case 4:a=_PyInt_FromSsize_t(c);b=5;break;case 5:return b=a;default:assert(0,"bad label: "+b)}} -function _do_xstrip(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;a=b;h=c+20;j=HEAP[c+8];k=a+20;l=HEAP[a+8];m=0;a=d!=1?3:1;break;case 1:n=j;a=6;break;case 2:m+=1;a=3;break;case 3:a=m>=j?5:4;break;case 4:a=_memchr(k,HEAP[h+m],l)!=0?2:5;break;case 5:n=j;a=d!=0?6:9;break;case 6:n-=1;a=n=h?5:4;break;case 4:b=___ctype_b_loc();b=(HEAP[HEAP[b]+2*HEAP[f+j]]&8192)!=0?2:5;break;case 5:k=h;b=c!=0?6:9;break;case 6:k-=1;b=k0?3:7;break;case 3:e=HEAP[c];c+=1;var j=___ctype_b_loc(),k=e;e=(HEAP[HEAP[j]+2*e]&512)!=0?4:5;break;case 4:e=_toupper(k);HEAP[d]=e&255;e=6;break;case 5:HEAP[d]=k&255;e=6;break;case 6:d+=1;e=7;break;case 7:f=1;e=f=0?29:32;break;case 29:m=HEAP[h];h+=1;HEAP[j]=HEAP[HEAP[k]+m];a=HEAP[j]!=m;j+=1;a=a!=0?31:30;break;case 30:l=a=l-1;a=a>=0?29:32;break;case 31:n=1;a=30;break;case 32:a=n!=0?34:33;break;case 33:a=HEAP[o+4]!=_PyString_Type?34:35;break; -case 34:f=HEAP[t];a=57;break;case 35:a=HEAP[t];HEAP[a]-=1;a=HEAP[a]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[HEAP[t]+4]+24]](HEAP[t]);a=37;break;case 37:HEAP[o]+=1;f=o;a=57;break;case 38:a=G==0;l=0;a=a?39:40;break;case 39:HEAP[v+l*4]=l&255;l=a=l+1;a=a<=255?39:41;break;case 40:HEAP[v+l*4]=HEAP[HEAP[k]+l];l=a=l+1;a=a<=255?40:41;break;case 41:l=0;a=l=0?44:48;break;case 44:m=HEAP[h];h+= -1;a=HEAP[v+m*4]!=-1?45:47;break;case 45:HEAP[j]=HEAP[v+m*4]&255;a=HEAP[j]==m;j+=1;a=a!=0?46:47;break;case 46:l=a=l-1;a=a>=0?44:48;break;case 47:n=1;a=46;break;case 48:a=n==0?49:53;break;case 49:a=HEAP[o+4]==_PyString_Type?50:53;break;case 50:a=HEAP[t];HEAP[a]-=1;a=HEAP[a]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[HEAP[t]+4]+24]](HEAP[t]);a=52;break;case 52:HEAP[o]+=1;f=o;a=57;break;case 53:a=r>0?54:56;break;case 54:a=__PyString_Resize(t,j-p)!=0?55:56;break;case 55:f=0;a=57;break;case 56:f=HEAP[t]; -a=57;break;case 57:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _return_self4418(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+4]==_PyString_Type?1:2;break;case 1:HEAP[c]+=1;a=b;e=3;break;case 2:a=_PyString_FromStringAndSize(b+20,HEAP[c+8]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _countchar4419(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;c=e;f=b;h=a;j=0;k=d;d+=c;c=3;break;case 1:j+=1;c=j>=h?4:2;break;case 2:k+=1;c=3;break;case 3:k=c=_memchr(k,f,d-k);c=c!=0?1:4;break;case 4:return g=j;default:assert(0,"bad label: "+c)}} -function _replace_interleave4420(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u;d=g;f=e;h=b;j=a;n=HEAP[d+8];p=n+1;c=j0;f-=1;a=a!=0?5:8;break;case 8:_llvm_memcpy_p0i8_p0i8_i32(k, -l,n-l,1,0);h=p;a=9;break;case 9:return g=h;default:assert(0,"bad label: "+a)}} -function _replace_delete_substring4422(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r;d=g;f=e;h=b;j=a;p=HEAP[d+8];l=d+20;j=_stringlib_count4399(l,p,f,h,j);c=j==0?1:2;break;case 1:k=_return_self4418(d);c=9;break;case 2:q=p-h*j;q=_PyString_FromStringAndSize(0,q);c=q==0?3:4;break;case 3:k=0;c=9;break;case 4:m=q+20;n=l;o=l+p;c=7;break;case 5:r=_stringlib_find4400(n,o-n,f,h,0);c=r==-1?8:6;break;case 6:c=n+r;_llvm_memcpy_p0i8_p0i8_i32(m,n,c-n,1,0);m+=c-n;n=c+h;c=7;break;case 7:c= -j>0;j-=1;c=c!=0?5:8;break;case 8:_llvm_memcpy_p0i8_p0i8_i32(m,n,o-n,1,0);k=q;c=9;break;case 9:return g=k;default:assert(0,"bad label: "+c)}} -function _replace_single_character_in_place4423(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;j=a;l=d+20;p=HEAP[d+8];o=_memchr(l,f,p);c=o==0?1:2;break;case 1:k=_return_self4418(d);c=9;break;case 2:q=_PyString_FromStringAndSize(0,p);c=q==0?3:4;break;case 3:k=0;c=9;break;case 4:m=q+20;_llvm_memcpy_p0i8_p0i8_i32(m,l,p,1,0);n=m+(o-l);HEAP[n]=h;n+=1;m+=p;c=7;break;case 5:o=_memchr(n,f,m-n);c=o==0?8:6;break;case 6:HEAP[o]=h;n=o+1;c=7;break;case 7:j=c=j-1;c=c>0?5:8;break; -case 8:k=q;c=9;break;case 9:return g=k;default:assert(0,"bad label: "+c)}} -function _replace_substring_in_place4424(g,e,b,a,c,d){for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r,u;f=g;h=e;j=b;k=a;l=d;p=f+20;q=HEAP[f+8];r=_stringlib_find4400(p,q,h,j,0);c=r==-1?1:2;break;case 1:m=_return_self4418(f);c=9;break;case 2:u=_PyString_FromStringAndSize(0,q);c=u==0?3:4;break;case 3:m=0;c=9;break;case 4:n=u+20;_llvm_memcpy_p0i8_p0i8_i32(n,p,q,1,0);o=n+r;_llvm_memcpy_p0i8_p0i8_i32(o,k,j,1,0);o+=j;n+=q;c=7;break;case 5:r=_stringlib_find4400(o,n-o,h,j,0);c=r==-1?8:6;break;case 6:_llvm_memcpy_p0i8_p0i8_i32(o+ -r,k,j,1,0);o+=j+r;c=7;break;case 7:l=c=l-1;c=c>0?5:8;break;case 8:m=u;c=9;break;case 9:return g=m;default:assert(0,"bad label: "+c)}} -function _replace_single_character4425(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;f=g;h=e;j=b;k=a;l=c;n=f+20;u=HEAP[f+8];l=_countchar4419(n,u,h&255,l);d=l==0?1:2;break;case 1:m=_return_self4418(f);d=15;break;case 2:t=(k-1)*l;d=(t/(k-1)|0)!=l?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str594271);m=0;d=15;break;case 4:s=t+u;d=s<0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str594271);m=0;d=15;break;case 6:v=_PyString_FromStringAndSize(0, -s);d=v==0?7:8;break;case 7:m=0;d=15;break;case 8:o=v+20;p=n;r=n+u;d=13;break;case 9:q=_memchr(p,h,r-p);d=q==0?14:10;break;case 10:d=q==p?11:12;break;case 11:_llvm_memcpy_p0i8_p0i8_i32(o,j,k,1,0);o+=k;p+=1;d=13;break;case 12:_llvm_memcpy_p0i8_p0i8_i32(o,p,q-p,1,0);o+=q-p;_llvm_memcpy_p0i8_p0i8_i32(o,j,k,1,0);o+=k;p=q+1;d=13;break;case 13:d=l>0;l-=1;d=d!=0?9:14;break;case 14:_llvm_memcpy_p0i8_p0i8_i32(o,p,r-p,1,0);m=v;d=15;break;case 15:return g=m;default:assert(0,"bad label: "+d)}} -function _replace_substring4426(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y;h=g;j=e;k=b;l=a;m=c;n=d;p=h+20;t=HEAP[h+8];n=_stringlib_count4399(p,t,j,k,n);f=n==0?1:2;break;case 1:o=_return_self4418(h);f=15;break;case 2:x=(m-k)*n;f=(x/(m-k)|0)!=n?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str594271);o=0;f=15;break;case 4:v=x+t;f=v<0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str594271);o=0;f=15;break;case 6:y=_PyString_FromStringAndSize(0, -v);f=y==0?7:8;break;case 7:o=0;f=15;break;case 8:q=y+20;r=p;s=p+t;f=13;break;case 9:w=_stringlib_find4400(r,s-r,j,k,0);f=w==-1?14:10;break;case 10:u=r+w;f=u==r?11:12;break;case 11:_llvm_memcpy_p0i8_p0i8_i32(q,l,m,1,0);q+=m;r+=k;f=13;break;case 12:_llvm_memcpy_p0i8_p0i8_i32(q,r,u-r,1,0);q+=u-r;_llvm_memcpy_p0i8_p0i8_i32(q,l,m,1,0);q+=m;r=u+k;f=13;break;case 13:f=n>0;n-=1;f=f!=0?9:14;break;case 14:_llvm_memcpy_p0i8_p0i8_i32(q,r,s-r,1,0);o=y;f=15;break;case 15:return g=o;default:assert(0,"bad label: "+ -f)}} -function _replace4427(g,e,b,a,c,d){var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p;j=g;k=e;l=b;m=a;n=c;o=d;f=o<0?1:2;break;case 1:o=2147483647;f=6;break;case 2:f=o==0?4:3;break;case 3:f=HEAP[j+8]==0?4:5;break;case 4:p=_return_self4418(j);f=25;break;case 5:f=o==0?9:6;break;case 6:f=l!=0?7:8;break;case 7:var q=j,h=7;f=12;break;case 8:f=n==0?9:10;break;case 9:p=_return_self4418(j);f=25;break;case 10:var r=j;l==0?(h=10,f=11):(h=10,f=12);break;case 11:p=_replace_interleave4420(r,m,n,o);f=25; -break;case 12:f=HEAP[(h==7?q:r)+8]==0?13:14;break;case 13:p=_return_self4418(j);f=25;break;case 14:var u=l;f=n==0?15:18;break;case 15:f=u==1?16:17;break;case 16:p=_replace_delete_single_character4421(j,HEAP[k]&255,o);f=25;break;case 17:p=_replace_delete_substring4422(j,k,l,o);f=25;break;case 18:var s=l==1;f=u==n?19:22;break;case 19:f=s?20:21;break;case 20:p=_replace_single_character_in_place4423(j,HEAP[k]&255,HEAP[m]&255,o);f=25;break;case 21:p=_replace_substring_in_place4424(j,k,l,m,n,o);f=25;break; -case 22:f=s?23:24;break;case 23:p=_replace_single_character4425(j,HEAP[k]&255,m,n,o);f=25;break;case 24:p=_replace_substring4426(j,k,l,m,n,o);f=25;break;case 25:return g=p;default:assert(0,"bad label: "+f)}} -function _string_replace(g,e){var b=STACKTOP;STACKTOP+=28;_memset(b,0,28);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k=b+12,l=b+16,m=b+20,n=b+24;c=g;a=e;HEAP[f]=-1;a=__PyArg_ParseTuple_SizeT(a,__str604273,allocate([h,0,0,0,j,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=15;break;case 2:a=(HEAP[HEAP[HEAP[h]+4]+84]&134217728)!=0?3:4;break;case 3:HEAP[k]=HEAP[h]+20;HEAP[m]=HEAP[HEAP[h]+8];a=4;break; -case 4:a=(HEAP[HEAP[HEAP[h]+4]+84]&268435456)!=0?5:6;break;case 5:d=_PyUnicodeUCS2_Replace(c,HEAP[h],HEAP[j],HEAP[f]);a=15;break;case 6:a=_PyObject_AsCharBuffer(HEAP[h],k,m)!=0?7:8;break;case 7:d=0;a=15;break;case 8:var o=HEAP[j];a=(HEAP[HEAP[HEAP[j]+4]+84]&134217728)!=0?9:10;break;case 9:HEAP[l]=o+20;HEAP[n]=HEAP[HEAP[j]+8];a=14;break;case 10:a=(HEAP[HEAP[o+4]+84]&268435456)!=0?11:12;break;case 11:d=_PyUnicodeUCS2_Replace(c,HEAP[h],HEAP[j],HEAP[f]);a=15;break;case 12:a=_PyObject_AsCharBuffer(HEAP[j], -l,n)!=0?13:14;break;case 13:d=0;a=15;break;case 14:d=_replace4427(c,HEAP[k],HEAP[m],HEAP[l],HEAP[n],HEAP[f]);a=15;break;case 15:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function __string_tailmatch(g,e,b,a,c){var d=STACKTOP;STACKTOP+=8;_memset(d,0,8);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p=d,q=d+4,r;h=g;j=e;k=b;l=a;m=c;o=HEAP[h+8];var u=j;f=(HEAP[HEAP[j+4]+84]&134217728)!=0?1:2;break;case 1:HEAP[q]=u+20;HEAP[p]=HEAP[j+8];f=6;break;case 2:f=(HEAP[HEAP[u+4]+84]&268435456)!=0?3:4;break;case 3:n=_PyUnicodeUCS2_Tailmatch(h,j,k,l,m);f=25;break;case 4:f=_PyObject_AsCharBuffer(j,q,p)!=0?5:6;break;case 5:n=-1;f=25;break;case 6:r=h+20;f=l>o?7:8;break;case 7:l= -o;f=11;break;case 8:f=l<0?9:11;break;case 9:l=o+l;f=l<0?10:11;break;case 10:l=0;f=11;break;case 11:f=k<0?12:14;break;case 12:k=o+k;f=k<0?13:14;break;case 13:k=0;f=14;break;case 14:f=m<0?15:17;break;case 15:f=k+HEAP[p]>o?16:22;break;case 16:n=0;f=25;break;case 17:f=l-ko?19:20;break;case 19:n=0;f=25;break;case 20:f=l-HEAP[p]>k?21:22;break;case 21:k=l-HEAP[p];f=22;break;case 22:f=l-k>=HEAP[p]?23:24;break;case 23:n=_memcmp(r+k,HEAP[q],HEAP[p])==0;f=25;break;case 24:n= -0;f=25;break;case 25:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _string_startswith(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k,l;c=g;a=e;HEAP[f]=0;HEAP[h]=2147483647;a=_stringlib_parse_args_finds4404(__str614275,a,j,f,h)==0?1:2;break;case 1:d=0;a=16;break;case 2:a=(HEAP[HEAP[HEAP[j]+4]+84]&67108864)!=0?3:11;break;case 3:l=0;a=9;break;case 4:k=__string_tailmatch(c,HEAP[HEAP[j]+12+l*4],HEAP[f],HEAP[h],-1);a=k==-1?5:6;break;case 5:d=0;a=16;break;case 6:a=k!=0?7:8;break;case 7:HEAP[__Py_TrueStruct]+= -1;d=__Py_TrueStruct;a=16;break;case 8:l+=1;a=9;break;case 9:a=HEAP[HEAP[j]+8]>l?4:10;break;case 10:HEAP[__Py_ZeroStruct]+=1;d=__Py_ZeroStruct;a=16;break;case 11:k=__string_tailmatch(c,HEAP[j],HEAP[f],HEAP[h],-1);a=k==-1?12:15;break;case 12:a=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?13:14;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str624276,allocate([HEAP[HEAP[HEAP[j]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=14;break;case 14:d=0;a=16;break;case 15:d=_PyBool_FromLong(k);a=16; -break;case 16:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _string_endswith(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k,l;c=g;a=e;HEAP[f]=0;HEAP[h]=2147483647;a=_stringlib_parse_args_finds4404(__str634278,a,j,f,h)==0?1:2;break;case 1:d=0;a=16;break;case 2:a=(HEAP[HEAP[HEAP[j]+4]+84]&67108864)!=0?3:11;break;case 3:l=0;a=9;break;case 4:k=__string_tailmatch(c,HEAP[HEAP[j]+12+l*4],HEAP[f],HEAP[h],1);a=k==-1?5:6;break;case 5:d=0;a=16;break;case 6:a=k!=0?7:8;break;case 7:HEAP[__Py_TrueStruct]+= -1;d=__Py_TrueStruct;a=16;break;case 8:l+=1;a=9;break;case 9:a=HEAP[HEAP[j]+8]>l?4:10;break;case 10:HEAP[__Py_ZeroStruct]+=1;d=__Py_ZeroStruct;a=16;break;case 11:k=__string_tailmatch(c,HEAP[j],HEAP[f],HEAP[h],1);a=k==-1?12:15;break;case 12:a=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?13:14;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str644279,allocate([HEAP[HEAP[HEAP[j]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=14;break;case 14:d=0;a=16;break;case 15:d=_PyBool_FromLong(k);a=16;break; -case 16:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _string_encode(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l;d=g;c=e;f=b;HEAP[j]=0;HEAP[k]=0;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str654281,_kwlist_13266,allocate([j,0,0,0,k,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=10;break;case 2:l=_PyString_AsEncodedObject(d,HEAP[j],HEAP[k]);c=l==0?9:3;break;case 3:c=(HEAP[HEAP[l+4]+84]&134217728)==0?4:8;break;case 4:c=(HEAP[HEAP[l+4]+84]&268435456)==0? -5:8;break;case 5:_PyErr_Format(HEAP[_PyExc_TypeError],__str684284,allocate([HEAP[HEAP[l+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[l]-=1;c=HEAP[l]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=7;break;case 7:h=0;c=10;break;case 8:h=l;c=10;break;case 9:h=0;c=10;break;case 10:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _string_decode(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l;d=g;c=e;f=b;HEAP[j]=0;HEAP[k]=0;c=__PyArg_ParseTupleAndKeywords_SizeT(c,f,__str694286,_kwlist_13307,allocate([j,0,0,0,k,0,0,0],["i8**",0,0,0,"i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:h=0;c=10;break;case 2:l=_PyString_AsDecodedObject(d,HEAP[j],HEAP[k]);c=l==0?9:3;break;case 3:c=(HEAP[HEAP[l+4]+84]&134217728)==0?4:8;break;case 4:c=(HEAP[HEAP[l+4]+84]&268435456)==0? -5:8;break;case 5:_PyErr_Format(HEAP[_PyExc_TypeError],__str704287,allocate([HEAP[HEAP[l+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[l]-=1;c=HEAP[l]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=7;break;case 7:h=0;c=10;break;case 8:h=l;c=10;break;case 9:h=0;c=10;break;case 10:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _string_expandtabs(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p=b;c=g;a=e;HEAP[p]=8;a=__PyArg_ParseTuple_SizeT(a,__str714289,allocate([p,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=34;break;case 2:m=l=0;f=c+20+HEAP[c+8];h=c+20;a=13;break;case 3:a=HEAP[h]==9?4:7;break;case 4:a=HEAP[p]>0?5:12;break;case 5:n=HEAP[p]-m%HEAP[p];a=2147483647-n0?20:28;break;case 20:l=HEAP[p]-m%HEAP[p];m=l+m;a=23;break;case 21:a=k>=j?31:22;break;case 22:HEAP[k]= -32;k+=1;a=23;break;case 23:l=a=l-1;a=a!=-1?21:28;break;case 24:a=k>=j?31:25;break;case 25:HEAP[k]=HEAP[h];k+=1;m+=1;a=HEAP[h]==10?27:26;break;case 26:a=HEAP[h]==13?27:28;break;case 27:m=0;a=28;break;case 28:h+=1;a=29;break;case 29:a=h=HEAP[f]?3:5;break;case 3:a=HEAP[c+4]==_PyString_Type?4:5;break;case 4:HEAP[c]+=1;d=c;a=6;break;case 5:d=_pad4428(c,0,HEAP[f]-HEAP[c+8],HEAP[h]&255);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0, -"bad label: "+a)}} -function _string_rjust(g,e){var b=STACKTOP;STACKTOP+=5;_memset(b,0,5);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=e;HEAP[h]=32;a=__PyArg_ParseTuple_SizeT(a,__str744294,allocate([f,0,0,0,h,0,0,0],["i32*",0,0,0,"i8*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:a=HEAP[c+8]>=HEAP[f]?3:5;break;case 3:a=HEAP[c+4]==_PyString_Type?4:5;break;case 4:HEAP[c]+=1;d=c;a=6;break;case 5:d=_pad4428(c,HEAP[f]-HEAP[c+8],0,HEAP[h]&255);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0, -"bad label: "+a)}} -function _string_center(g,e){var b=STACKTOP;STACKTOP+=5;_memset(b,0,5);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=e;HEAP[h]=32;a=__PyArg_ParseTuple_SizeT(a,__str754296,allocate([f,0,0,0,h,0,0,0],["i32*",0,0,0,"i8*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:a=HEAP[c+8]>=HEAP[f]?3:5;break;case 3:a=HEAP[c+4]==_PyString_Type?4:5;break;case 4:HEAP[c]+=1;d=c;a=6;break;case 5:d=HEAP[f]-HEAP[c+8];a=(HEAP[f]&1&d)+(d/2|0);d=_pad4428(c,a,d-a,HEAP[h]&255);a=6;break;case 6:return c= -d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _string_zfill(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k=b;c=g;a=__PyArg_ParseTuple_SizeT(e,__str764298,allocate([k,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=12;break;case 2:a=HEAP[c+8]>=HEAP[k]?3:6;break;case 3:var l=c;a=HEAP[c+4]==_PyString_Type?4:5;break;case 4:HEAP[l]+=1;d=c;a=12;break;case 5:d=_PyString_FromStringAndSize(c+20,HEAP[l+8]);a=12;break;case 6:f=HEAP[k]-HEAP[c+8];h=_pad4428(c,f,0,48);a=h==0?7:8;break; -case 7:d=0;a=12;break;case 8:j=h+20;a=HEAP[j+f]==43?10:9;break;case 9:a=HEAP[j+f]==45?10:11;break;case 10:HEAP[j]=HEAP[j+f];HEAP[j+f]=48;a=11;break;case 11:d=h;a=12;break;case 12:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _string_isspace(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=b+20;e=HEAP[b+8]==1?1:3;break;case 1:e=___ctype_b_loc();e=(HEAP[HEAP[e]+2*HEAP[c]]&8192)!=0?2:3;break;case 2:a=_PyBool_FromLong(1);e=11;break;case 3:e=HEAP[b+8]==0?4:5;break;case 4:a=_PyBool_FromLong(0);e=11;break;case 5:d=c+HEAP[b+8];e=9;break;case 6:e=___ctype_b_loc();e=(HEAP[HEAP[e]+2*HEAP[c]]&8192)==0?7:8;break;case 7:a=_PyBool_FromLong(0);e=11;break;case 8:c+=1;e=9;break;case 9:e=c=HEAP[b+4]?1:2;break;case 1:a=-1;e=13;break;case 2:f=HEAP[b];e=11;break;case 3:e=HEAP[f]<=47?5:4;break;case 4:e=HEAP[f]>57?5:6;break;case 5:d=-1;e=7;break;case 6:d=HEAP[f]-48;e=HEAP[f]-48<0?7:8;break;case 7:a=-1;e=13;break;case 8:e=c;c*=10;e=((c+10)/10|0)!=e+1?9:10;break;case 9:_PyErr_Format(HEAP[_PyExc_ValueError],__str814305,allocate(1,"i32",ALLOC_STACK));a=-1;e=13;break;case 10:c=d+c;f+=1;e=11;break; -case 11:e=HEAP[b+4]>f?3:12;break;case 12:a=c;e=13;break;case 13:return g=a;default:assert(0,"bad label: "+e)}}function _getattr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_SubString_new_object(e);b=f==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyObject_GetAttr(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}} -function _getitem_sequence(g,e){return _PySequence_GetItem(g,e)}function _getitem_idx(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_PyLong_FromSsize_t(e);b=f==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyObject_GetItem(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}} -function _getitem_str(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_SubString_new_object(e);b=f==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyObject_GetItem(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}}function _FieldNameIterator_init(g,e,b){_SubString_init(g,e,b);HEAP[g+8]=HEAP[g]} -function __FieldNameIterator_attr(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;HEAP[c]=HEAP[a+8];b=3;break;case 1:b=HEAP[a+8];d=HEAP[b];HEAP[a+8]=b+1;b=d==46?2:d==91?2:3;break;case 2:HEAP[a+8]+=-1;b=4;break;case 3:b=HEAP[a+8]=HEAP[d+4]?1:2;break;case 1:k=1;c=15;break;case 2:c=HEAP[HEAP[d+8]];HEAP[d+8]+=1;c=c==46?3:c==91?6:11;break;case 3:HEAP[f]=1;c=__FieldNameIterator_attr(d,j)==0?4:5;break;case 4:k=0;c=15;break;case 5:HEAP[h]=-1;c=12;break;case 6:HEAP[f]=0;c=__FieldNameIterator_item(d,j)==0?7:8;break;case 7:k=0;c=15;break;case 8:c=_get_integer4429(j);HEAP[h]=c;c=HEAP[h]==-1?9:12;break;case 9:c=_PyErr_Occurred()!= -0?10:12;break;case 10:k=0;c=15;break;case 11:_PyErr_SetString(HEAP[_PyExc_ValueError],__str834307);k=0;c=15;break;case 12:c=HEAP[j]==HEAP[j+4]?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_ValueError],__str844308);k=0;c=15;break;case 14:k=2;c=15;break;case 15:return g=k;default:assert(0,"bad label: "+c)}} -function _field_name_split(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s;h=g;j=e;k=b;l=a;m=c;n=d;r=h;j=h+j;f=3;break;case 1:f=HEAP[r];r+=1;f=f==46?2:f==91?2:3;break;case 2:r+=-1;f=4;break;case 3:f=r=HEAP[k+4];f=HEAP[k]>=HEAP[k+4]!=0?9:8;break;case 8:f=HEAP[l]!= --1?9:10;break;case 9:p=1;f=11;break;case 10:p=0;f=11;break;case 11:s=p;f=n!=0?12:23;break;case 12:f=HEAP[n]==0?13:18;break;case 13:f=s!=0?14:21;break;case 14:f=u!=0?15:16;break;case 15:o=1;f=17;break;case 16:o=2;f=17;break;case 17:HEAP[n]=o;f=18;break;case 18:f=s!=0?19:21;break;case 19:f=_autonumber_state_error(HEAP[n],u)!=0?20:21;break;case 20:q=0;f=24;break;case 21:f=u!=0?22:23;break;case 22:f=HEAP[n+4];HEAP[l]=f;HEAP[n+4]=f+1;f=23;break;case 23:q=1;f=24;break;case 24:return g=q;default:assert(0, -"bad label: "+f)}} -function _get_field_object(g,e,b,a){var c=STACKTOP;STACKTOP+=36;_memset(c,0,36);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o=c,p=c+4,q=c+12,r=c+20,u=c+24,s,t;d=g;h=e;j=b;k=a;m=0;d=_field_name_split(HEAP[d],HEAP[d+4]-HEAP[d],q,r,u,k)==0?25:1;break;case 1:d=HEAP[r]==-1?2:10;break;case 2:s=_SubString_new_object(q);d=s==0?25:3;break;case 3:d=j==0?5:4;break;case 4:m=_PyDict_GetItem(j,s);d=m==0?5:7;break;case 5:_PyErr_SetObject(HEAP[_PyExc_KeyError],s);HEAP[s]-=1;d=HEAP[s]==0?6:25;break; -case 6:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=25;break;case 7:HEAP[s]-=1;d=HEAP[s]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=9;break;case 9:HEAP[m]+=1;d=22;break;case 10:m=_PySequence_GetItem(h,HEAP[r]);d=m==0?28:22;break;case 11:d=HEAP[o]!=0?12:13;break;case 12:var v=_getattr(m,p);t=v;f=12;d=18;break;case 13:var w=m;d=HEAP[r]==-1?14:15;break;case 14:var x=_getitem_str(w,p);t=x;f=14;d=18;break;case 15:d=_PySequence_Check(w);var y=HEAP[r],z=m;d=d!=0?16:17;break;case 16:var C=_getitem_sequence(z, -y);t=C;f=16;d=18;break;case 17:var A=_getitem_idx(z,y);t=A;f=17;d=18;break;case 18:d=(f==17?A:f==16?C:f==14?x:v)==0?25:19;break;case 19:HEAP[m]-=1;d=HEAP[m]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);d=21;break;case 21:m=t;d=22;break;case 22:n=d=_FieldNameIterator_next(u,o,r,p);d=d==2?11:23;break;case 23:d=n==1?24:25;break;case 24:l=m;d=29;break;case 25:d=m!=0?26:28;break;case 26:HEAP[m]-=1;d=HEAP[m]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);d=28;break;case 28:l= -0;d=29;break;case 29:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _render_field(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;n=m=l=k=0;o=HEAP[f];a=HEAP[f]!=0?1:2;break;case 1:j=HEAP[f+4]-HEAP[f];a=3;break;case 2:j=0;a=3;break;case 3:p=j;a=HEAP[d+4]==_PyString_Type?4:5;break;case 4:n=166;a=12;break;case 5:a=HEAP[d+4]==_PyInt_Type?6:7;break;case 6:n=168;a=12;break;case 7:a=HEAP[d+4]==_PyLong_Type?8:9;break;case 8:n=170;a=12;break;case 9:a=HEAP[d+4]==_PyFloat_Type?10:11;break;case 10:n=172;a=12;break;case 11:a=n!= -0?12:13;break;case 12:var r=FUNCTION_TABLE[n](d,o,p);l=r;c=12;a=15;break;case 13:m=_PyString_FromStringAndSize(o,p);a=m==0?23:14;break;case 14:var u=_PyObject_Format(d,m);l=u;c=14;a=15;break;case 15:a=(c==14?u:r)==0?20:16;break;case 16:q=_PyObject_Str(l);a=q==0?20:17;break;case 17:HEAP[l]-=1;a=HEAP[l]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=19;break;case 19:l=q;k=_output_data(h,l+20,HEAP[l+8]);a=20;break;case 20:a=m!=0?21:23;break;case 21:HEAP[m]-=1;a=HEAP[m]==0?22:23;break; -case 22:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=23;break;case 23:a=l!=0?24:26;break;case 24:HEAP[l]-=1;a=HEAP[l]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=26;break;case 26:return g=k;default:assert(0,"bad label: "+a)}} -function _parse_field(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;j=a;l=0;HEAP[j]=0;_SubString_init(h,0,0);HEAP[f]=HEAP[d];c=2;break;case 1:c=HEAP[d];var m=l=HEAP[c];HEAP[d]=c+1;c=m==33?3:m==58?3:2;break;case 2:c=HEAP[d]=HEAP[h+4]?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError],__str854309);k=0;c=12;break; -case 7:c=HEAP[h];HEAP[j]=HEAP[c];HEAP[h]=c+1;c=HEAP[h]=HEAP[k+4]?1:2;break;case 1:r=1;j=28;break;case 2:t=HEAP[k];j=5;break;case 3:j=HEAP[k];var z=s=HEAP[j];HEAP[k]=j+1;j=z==123?4:z==125?4:5;break;case 4:x=1;j=6;break;case 5:j=HEAP[k]=HEAP[k+4];w=HEAP[k]-t;j=s==125?7:10;break;case 7:j=u!=0?9:8;break;case 8:j=HEAP[HEAP[k]]!=s?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_ValueError],__str874311);r=0;j=28;break;case 10:j=u!=0?11:14;break;case 11:j=s==123?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ValueError],__str884312);r=0;j=28;break;case 13:j=u==0?14:17;break;case 14:j=HEAP[HEAP[k]]==s?15:16;break;case 15:HEAP[k]+=1;x=0;j=17;break;case 16:w-=1;j=17;break;case 17:HEAP[l]=t;HEAP[l+4]=t+w;j=x==0?18:19;break; -case 18:r=2;j=28;break;case 19:v=HEAP[m]=1;t=HEAP[k];j=26;break;case 20:j=HEAP[k];z=s=HEAP[j];HEAP[k]=j+1;j=z==123?21:z==125?22:26;break;case 21:HEAP[q]=1;v+=1;j=26;break;case 22:v-=1;j=v<=0?23:26;break;case 23:_SubString_init(y,t,HEAP[k]+-1-t);j=_parse_field(y,n,o,p)==0?24:25;break;case 24:r=0;j=28;break;case 25:r=2;j=28;break;case 26:j=HEAP[k]=0?8:12;break;case 8:b=c!=-21?9:10;break;case 9:d=c+21;b=11;break;case 10:d=1;b=11; -break;case 11:f=_realloc(j,d);b=13;break;case 12:f=0;b=13;break;case 13:HEAP[a]=f;b=HEAP[a]==0?14:15;break;case 14:_PyObject_Free(j);_PyErr_NoMemory();h=-1;b=16;break;case 15:HEAP[HEAP[a]]=1;b=HEAP[a];HEAP[b+8]=c;HEAP[b+20+c]=0;HEAP[b+12]=-1;h=0;b=16;break;case 16:return a=h;default:assert(0,"bad label: "+b)}} -function _getnextarg(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=HEAP[f];a=j1?17:19; -break;case 17:x=1;v-=1;f=20;break;case 18:x=2;w-=2;f=20;break;case 19:f=x!=0?20:22;break;case 20:r+=x;t-=x;f=s!=0?21:22;break;case 21:HEAP[r]=45;f=22;break;case 22:f=l>v?23:36;break;case 23:y=_PyString_FromStringAndSize(0,l+w);f=y==0?24:27;break;case 24:HEAP[q]-=1;f=HEAP[q]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=26;break;case 26:p=0;f=43;break;case 27:z=y+20;u=0;f=uu?30:31;break;case 30:HEAP[z]= -48;z+=1;u+=1;f=l-v>u?30:31;break;case 31:u=0;f=u96?39:41;break;case 39:f=HEAP[r+u]<=120?40:41;break;case 40:HEAP[r+u]-=32;f=41;break;case 41:u+=1;f=u=0?10:8;break;case 8:f=n==120|n==88|n==111?9:10;break;case 9:u=__str28;f=11;break;case 10:u=__str414240;f=11;break;case 11:f=m<0?12:13;break;case 12:m=1;f=13;break;case 13:f=(l&8)==0?16:14;break;case 14:f=n==120|n==88?15:16;break;case 15:_PyOS_snprintf(r,64,__str1444370,allocate([u,0,0,0,n,0,0,0,m,0,0,0,n,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));f=20;break;case 16:f=(l&8)!=0?17:18;break;case 17:p=__str1454371;f=19;break;case 18:p=__str414240; -f=19;break;case 19:_PyOS_snprintf(r,64,__str1464372,allocate([u,0,0,0,p,0,0,0,m,0,0,0,n,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));f=20;break;case 20:f=k<=14?22:21;break;case 21:f=m+3>=k?22:23;break;case 22:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str1474373);q=-1;f=27;break;case 23:f=HEAP[u]!=0?24:25;break;case 24:_PyOS_snprintf(j,k,r,allocate([0-s,0,0,0],["i32",0,0,0],ALLOC_STACK));f=26;break;case 25:_PyOS_snprintf(j,k,r,allocate([s,0,0,0],["i32",0,0,0],ALLOC_STACK)); -f=26;break;case 26:q=_strlen(j);f=27;break;case 27:return g=q,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _formatchar(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;b=e;var d=a,f=b;b=(HEAP[HEAP[b+4]+84]&134217728)!=0?1:3;break;case 1:b=__PyArg_Parse_SizeT(f,__str1484374,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK))==0?2:5;break;case 2:c=-1;b=6;break;case 3:b=__PyArg_Parse_SizeT(f,__str1494375,allocate([d,0,0,0],["i8*",0,0,0],ALLOC_STACK))==0?4:5;break;case 4:c=-1;b=6;break;case 5:HEAP[a+1]=0;c=1;b=6;break;case 6:return a=c;default:assert(0,"bad label: "+b)}} -function _PyString_Format(g,e){var b=STACKTOP;STACKTOP+=136;_memset(b,0,136);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m=b,n,o,p,q,r=b+4,u,s,t,v,w,x,y,z,C,A,G,E,D=b+8,R,M,L=b+12,I,J,F,V,Q,Z,K,N=b+132,H,ba;d=g;f=e;v=q=0;a=d==0?3:1;break;case 1:a=(HEAP[HEAP[d+4]+84]&134217728)==0?3:2;break;case 2:a=f==0?3:4;break;case 3:__PyErr_BadInternalCall(__str254224,4223);h=0;a=244;break;case 4:u=f;j=d+20;p=HEAP[d+8];n=o=p+100;a=_PyString_FromStringAndSize(0,n);HEAP[r]=a;a=HEAP[r]==0?5:6;break; -case 5:h=0;a=244;break;case 6:k=_PyString_AsString(HEAP[r]);a=(HEAP[HEAP[f+4]+84]&67108864)!=0?7:8;break;case 7:l=HEAP[f+8];HEAP[m]=0;a=9;break;case 8:l=-1;HEAP[m]=-2;a=9;break;case 9:a=HEAP[HEAP[f+4]+56]!=0?10:14;break;case 10:a=(HEAP[HEAP[f+4]+84]&67108864)==0?11:14;break;case 11:a=HEAP[f+4]!=_PyBaseString_Type?12:14;break;case 12:a=_PyType_IsSubtype(HEAP[f+4],_PyBaseString_Type)==0?13:14;break;case 13:v=f;a=14;break;case 14:var W=L,B=L;a=205;break;case 15:a=HEAP[j]!=37?16:21;break;case 16:o-=1; -a=o<0?17:20;break;case 17:o=p+100;n=o+n;a=__PyString_Resize(r,n)!=0?18:19;break;case 18:h=0;a=244;break;case 19:k=HEAP[r]+20+n+(0-o);o-=1;a=20;break;case 20:HEAP[k]=HEAP[j];k+=1;j+=1;a=205;break;case 21:w=0;y=x=-1;E=G=z=0;I=j;J=HEAP[m];j+=1;a=HEAP[j]==40?22:50;break;case 22:Z=1;a=v==0?23:24;break;case 23:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1504376);a=238;break;case 24:j+=1;p-=1;F=j;a=30;break;case 25:a=HEAP[j]==41?26:27;break;case 26:Z-=1;a=29;break;case 27:a=HEAP[j]==40?28:29;break;case 28:Z+= -1;a=29;break;case 29:j+=1;a=30;break;case 30:a=Z<=0?32:31;break;case 31:p-=1;a=p>=0?25:32;break;case 32:V=j+-1+(0-F);a=p<0?34:33;break;case 33:a=Z>0?34:35;break;case 34:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1514377);a=238;break;case 35:Q=_PyString_FromStringAndSize(F,V);a=Q==0?238:36;break;case 36:a=q!=0?37:40;break;case 37:HEAP[f]-=1;a=HEAP[f]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=39;break;case 39:q=0;a=40;break;case 40:f=_PyObject_GetItem(v,Q);HEAP[Q]-=1;a=HEAP[Q]== -0?41:42;break;case 41:FUNCTION_TABLE[HEAP[HEAP[Q+4]+24]](Q);a=42;break;case 42:a=f==0?238:43;break;case 43:q=1;l=-1;HEAP[m]=-2;a=50;break;case 44:var Y=z=HEAP[j];j+=1;Y==32?(c=44,a=47):Y==35?(c=44,a=48):Y==43?(c=44,a=46):Y==45?(c=44,a=45):Y==48?(c=44,a=49):(c=44,a=52);break;case 45:w|=1;a=50;break;case 46:w|=2;a=50;break;case 47:w|=4;a=50;break;case 48:w|=8;a=50;break;case 49:w|=16;a=50;break;case 50:p=a=p-1;a=a>=0?44:51;break;case 51:var fa=z,c=51;a=52;break;case 52:a=(c==51?fa:Y)==42?53:60;break; -case 53:G=_getnextarg(f,l,m);a=G==0?238:54;break;case 54:a=(HEAP[HEAP[G+4]+84]&8388608)==0?55:56;break;case 55:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1524378);a=238;break;case 56:x=_PyInt_AsLong(G);a=x<0?57:58;break;case 57:w|=1;x=0-x;a=58;break;case 58:p=a=p-1;a=a>=0?59:68;break;case 59:var ha=HEAP[j];z=ha;j+=1;c=59;a=69;break;case 60:a=z>=0?61:89;break;case 61:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*z]&2048)!=0?62:68;break;case 62:x=z-48;a=67;break;case 63:z=HEAP[j];j+=1;a=___ctype_b_loc();a= -(HEAP[HEAP[a]+2*z]&2048)==0?68:64;break;case 64:a=(x*10/10|0)!=x?65:66;break;case 65:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1534379);a=238;break;case 66:x=x*10+-48+z;a=67;break;case 67:p=a=p-1;a=a>=0?63:68;break;case 68:var la=z,c=68;a=69;break;case 69:a=(c==68?la:ha)==46?70:89;break;case 70:y=0;p-=1;a=p>=0?71:72;break;case 71:var ra=HEAP[j];z=ra;j+=1;c=71;a=73;break;case 72:var ya=z,c=72;a=73;break;case 73:a=(c==72?ya:ra)==42?74:81;break;case 74:G=_getnextarg(f,l,m);a=G==0?238:75;break;case 75:a= -(HEAP[HEAP[G+4]+84]&8388608)==0?76:77;break;case 76:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1524378);a=238;break;case 77:y=_PyInt_AsLong(G);a=y<0?78:79;break;case 78:y=0;a=79;break;case 79:p=a=p-1;a=a>=0?80:94;break;case 80:z=HEAP[j];j+=1;a=89;break;case 81:a=z>=0?82:89;break;case 82:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*z]&2048)!=0?83:89;break;case 83:y=z-48;a=88;break;case 84:z=HEAP[j];j+=1;a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*z]&2048)==0?89:85;break;case 85:a=(y*10/10|0)!=y?86:87;break;case 86:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str1544380);a=238;break;case 87:y=y*10+-48+z;a=88;break;case 88:p=a=p-1;a=a>=0?84:94;break;case 89:a=p>=0?90:94;break;case 90:a=z==104|z==108|z==76?91:93;break;case 91:p-=1;a=p>=0?92:94;break;case 92:z=HEAP[j];j+=1;a=93;break;case 93:a=p<0?94:95;break;case 94:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1554381);a=238;break;case 95:a=z!=37?97:96;break;case 96:R=0;C=32;a=99;break;case 97:G=_getnextarg(f,l,m);a=G==0?238:98;break;case 98:a=z;R=0;C=32;a=a==37?99:a==69?141:a==70?141:a==71?141:a==115? -100:a==99?144:a==114?108:a==101?141:a==102?141:a==103?141:a==105?117:a==88?118:a==100?118:a==111?118:a==117?118:a==120?118:147;break;case 99:HEAP[D]=__str35;M=1;a=148;break;case 100:a=(HEAP[HEAP[G+4]+84]&268435456)!=0?101:102;break;case 101:j=I;HEAP[m]=J;a=215;break;case 102:E=__PyObject_Str(G);a=E!=0?103:107;break;case 103:a=(HEAP[HEAP[E+4]+84]&268435456)!=0?104:107;break;case 104:HEAP[E]-=1;a=HEAP[E]==0?105:106;break;case 105:FUNCTION_TABLE[HEAP[HEAP[E+4]+24]](E);a=106;break;case 106:j=I;HEAP[m]= -J;a=215;break;case 107:a=z==114?108:109;break;case 108:var Da=_PyObject_Repr(G);E=Da;c=108;a=110;break;case 109:var Ua=E,c=109;a=110;break;case 110:a=(c==109?Ua:Da)==0?238:111;break;case 111:a=(HEAP[HEAP[E+4]+84]&134217728)==0?112:114;break;case 112:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1574383);HEAP[E]-=1;a=HEAP[E]==0?113:238;break;case 113:FUNCTION_TABLE[HEAP[HEAP[E+4]+24]](E);a=238;break;case 114:HEAP[D]=E+20;M=HEAP[E+8];a=y>=0?115:148;break;case 115:a=M>y?116:148;break;case 116:M=y;a=148; -break;case 117:z=100;a=118;break;case 118:A=0;a=_PyNumber_Check(G)!=0?119:137;break;case 119:K=0;a=(HEAP[HEAP[G+4]+84]&8388608)!=0?121:120;break;case 120:a=(HEAP[HEAP[G+4]+84]&16777216)!=0?121:122;break;case 121:K=G;HEAP[K]+=1;var Na=K,c=121;a=124;break;case 122:K=_PyNumber_Int(G);a=K==0?123:125;break;case 123:var Pa=_PyNumber_Long(G);K=Pa;c=123;a=124;break;case 124:a=(c==123?Pa:Na)!=0?125:137;break;case 125:a=(HEAP[HEAP[K+4]+84]&8388608)!=0?126:130;break;case 126:A=1;HEAP[D]=W;M=_formatint(HEAP[D], -w,y,z,K);HEAP[K]-=1;a=HEAP[K]==0?127:128;break;case 127:FUNCTION_TABLE[HEAP[HEAP[K+4]+24]](K);a=128;break;case 128:a=M<0?238:129;break;case 129:R=1;a=137;break;case 130:a=(HEAP[HEAP[K+4]+84]&16777216)!=0?131:135;break;case 131:A=1;E=__PyString_FormatLong(K,w,y,z,D,N);HEAP[K]-=1;a=HEAP[K]==0?132:133;break;case 132:FUNCTION_TABLE[HEAP[HEAP[K+4]+24]](K);a=133;break;case 133:M=HEAP[N];a=E==0?238:134;break;case 134:R=1;a=137;break;case 135:HEAP[K]-=1;a=HEAP[K]==0?136:137;break;case 136:FUNCTION_TABLE[HEAP[HEAP[K+ -4]+24]](K);a=137;break;case 137:a=A==0?138:139;break;case 138:_PyErr_Format(HEAP[_PyExc_TypeError],__str1584384,allocate([z,0,0,0,HEAP[HEAP[G+4]+12],0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=238;break;case 139:a=(w&16)!=0?140:148;break;case 140:C=48;a=148;break;case 141:E=a=_formatfloat(G,w,y,z);a=a==0?238:142;break;case 142:HEAP[D]=E+20;M=HEAP[E+8];R=1;a=(w&16)!=0?143:149;break;case 143:C=48;a=148;break;case 144:a=(HEAP[HEAP[G+4]+84]&268435456)!=0?145:146;break;case 145:j=I;HEAP[m]=J;a=215; -break;case 146:HEAP[D]=B;M=_formatchar(HEAP[D],G);a=M<0?238:148;break;case 147:a=j+-1;var wa=_PyString_AsString(d);_PyErr_Format(HEAP[_PyExc_ValueError],__str1594385,allocate([z,0,0,0,z,0,0,0,a-wa,0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));a=238;break;case 148:a=R!=0?149:157;break;case 149:a=HEAP[HEAP[D]]==45?151:150;break;case 150:a=HEAP[HEAP[D]]==43?151:152;break;case 151:a=HEAP[D];R=HEAP[a];HEAP[D]=a+1;M-=1;a=157;break;case 152:a=(w&2)!=0?153:154;break;case 153:R=43;a=157;break; -case 154:a=(w&4)!=0?155:156;break;case 155:R=32;a=157;break;case 156:R=0;a=157;break;case 157:a=xM?177:178;break;case 177:x-=1;a=178;break;case 178:a=(w&8)!=0?179:185;break;case 179:a=z==120|z==88?180:185;break;case 180:a= -C!=32?181:182;break;case 181:a=HEAP[D];HEAP[k]=HEAP[a];k+=1;HEAP[D]=a+1;a=HEAP[D];HEAP[k]=HEAP[a];k+=1;HEAP[D]=a+1;a=182;break;case 182:o-=2;x=a=x-2;a=a<0?183:184;break;case 183:x=0;a=184;break;case 184:M-=2;a=185;break;case 185:a=x>M?186:188;break;case 186:a=(w&1)==0?187:188;break;case 187:o-=1;HEAP[k]=C&255;k+=1;x-=1;a=x>M?187:188;break;case 188:a=C==32?189:194;break;case 189:a=R!=0?190:191;break;case 190:HEAP[k]=R&255;k+=1;a=191;break;case 191:a=(w&8)!=0?192:194;break;case 192:a=z==120|z==88?193: -194;break;case 193:a=HEAP[D];HEAP[k]=HEAP[a];k+=1;HEAP[D]=a+1;a=HEAP[D];HEAP[k]=HEAP[a];k+=1;HEAP[D]=a+1;a=194;break;case 194:_llvm_memcpy_p0i8_p0i8_i32(k,HEAP[D],M,1,0);k+=M;o-=M;x-=1;a=x>=M?195:196;break;case 195:o-=1;HEAP[k]=32;k+=1;x-=1;a=x>=M?195:196;break;case 196:a=v!=0?197:202;break;case 197:a=HEAP[m]=0?15:206;break;case 206:a=HEAP[m]=0?223:224;break;case 223:a=HEAP[u+12+(ba+HEAP[m])*4];HEAP[a]+=1;HEAP[H+12+ -ba*4]=a;ba=a=ba-1;a=a>=0?223:224;break;case 224:f=H;a=226;break;case 225:HEAP[u]+=1;f=u;a=226;break;case 226:q=1;o=k-(HEAP[r]+20);a=__PyString_Resize(r,o)!=0?238:227;break;case 227:p=0-j+HEAP[d+8]+(0-(0-(d+20)));d=_PyUnicodeUCS2_Decode(j,p,0,0);a=d==0?238:228;break;case 228:s=_PyUnicodeUCS2_Format(d,f);HEAP[d]-=1;a=HEAP[d]==0?229:230;break;case 229:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=230;break;case 230:a=s==0?238:231;break;case 231:t=_PyUnicodeUCS2_Concat(HEAP[r],s);a=HEAP[r];HEAP[a]-=1;a=HEAP[a]== -0?232:233;break;case 232:FUNCTION_TABLE[HEAP[HEAP[HEAP[r]+4]+24]](HEAP[r]);a=233;break;case 233:HEAP[s]-=1;a=HEAP[s]==0?234:235;break;case 234:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);a=235;break;case 235:HEAP[f]-=1;a=HEAP[f]==0?236:237;break;case 236:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=237;break;case 237:h=t;a=244;break;case 238:a=HEAP[r];HEAP[a]-=1;a=HEAP[a]==0?239:240;break;case 239:FUNCTION_TABLE[HEAP[HEAP[HEAP[r]+4]+24]](HEAP[r]);a=240;break;case 240:a=q!=0?241:243;break;case 241:HEAP[f]-=1; -a=HEAP[f]==0?242:243;break;case 242:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=243;break;case 243:h=0;a=244;break;case 244:return c=h,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyString_InternInPlace(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=HEAP[b];e=a==0?2:1;break;case 1:e=(HEAP[HEAP[a+4]+84]&134217728)==0?2:3;break;case 2:throw _Py_FatalError(__str1614387),"Reached an unreachable!";case 3:e=HEAP[a+4]!=_PyString_Type?15:4;break;case 4:e=HEAP[a+16]!=0?15:5;break;case 5:e=HEAP[_interned]==0?6:8;break;case 6:e=_PyDict_New();HEAP[_interned]=e;e=HEAP[_interned]==0?7:8;break;case 7:_PyErr_Clear();e=15;break;case 8:c=e=_PyDict_GetItem(HEAP[_interned],a); -e=e!=0?9:12;break;case 9:HEAP[c]+=1;e=HEAP[b];HEAP[e]-=1;e=HEAP[e]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[b]+4]+24]](HEAP[b]);e=11;break;case 11:HEAP[b]=c;e=15;break;case 12:e=_PyDict_SetItem(HEAP[_interned],a,a)<0?13:14;break;case 13:_PyErr_Clear();e=15;break;case 14:HEAP[a]-=2;HEAP[a+16]=1;e=15;break;case 15:return;default:assert(0,"bad label: "+e)}} -function _PyString_InternImmortal(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_PyString_InternInPlace(b);e=HEAP[HEAP[b]+16]!=2?1:2;break;case 1:HEAP[HEAP[b]+16]=2;HEAP[HEAP[b]]+=1;e=2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _PyString_InternFromString(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b;for(b=-1;;)switch(b){case -1:var a,c=e;b=_PyString_FromString(g);HEAP[c]=b;b=HEAP[c]==0?1:2;break;case 1:a=0;b=3;break;case 2:_PyString_InternInPlace(c);a=HEAP[c];b=3;break;case 3:return g=a,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyString_Fini(){var g;for(g=-1;;)switch(g){case -1:var e;e=0;g=1;break;case 1:g=HEAP[_characters+e*4]!=0?2:4;break;case 2:g=HEAP[_characters+e*4];HEAP[g]-=1;g=HEAP[g]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[_characters+e*4]+4]+24]](HEAP[_characters+e*4]);g=4;break;case 4:HEAP[_characters+e*4]=0;e=g=e+1;g=g<=255?1:5;break;case 5:g=HEAP[_nullstring]!=0?6:8;break;case 6:g=HEAP[_nullstring];HEAP[g]-=1;g=HEAP[g]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[_nullstring]+4]+24]](HEAP[_nullstring]); -g=8;break;case 8:HEAP[_nullstring]=0;return;default:assert(0,"bad label: "+g)}} -function __Py_ReleaseInternedStrings(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;f=d=0;g=HEAP[_interned]==0?17:1;break;case 1:g=(HEAP[HEAP[HEAP[_interned]+4]+84]&536870912)==0?17:2;break;case 2:e=_PyDict_Keys(HEAP[_interned]);g=e==0?4:3;break;case 3:g=(HEAP[HEAP[e+4]+84]&33554432)==0?4:5;break;case 4:_PyErr_Clear();g=17;break;case 5:c=HEAP[e+8];_fprintf(HEAP[_stderr],__str1624388,allocate([c,0,0,0],["i32",0,0,0],ALLOC_STACK));a=0;g=11;break;case 6:b=HEAP[HEAP[e+12]+4*a];g=HEAP[b+16];g=g== -0?10:g==1?8:g==2?7:9;break;case 7:HEAP[b]+=1;d+=HEAP[b+8];g=10;break;case 8:HEAP[b]+=2;f+=HEAP[b+8];g=10;break;case 9:throw _Py_FatalError(__str184217),"Reached an unreachable!";case 10:HEAP[b+16]=0;a+=1;g=11;break;case 11:g=a127|k<-128?21:93;break;case 21:a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str64443,1)<0?22:93;break;case 22:h=-1;a=94;break;case 23:l=_PyInt_AsLong(f);a=l==-1?24:26;break;case 24:a=_PyErr_Occurred()!=0?25:26;break;case 25:h=-1;a=94;break;case 26:HEAP[c]=l&255;a=l>255|l<0?27:93;break;case 27:a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning], -__str74444,1)<0?28:93;break;case 28:h=-1;a=94;break;case 29:m=_PyInt_AsLong(f);a=m==-1?30:32;break;case 30:a=_PyErr_Occurred()!=0?31:32;break;case 31:h=-1;a=94;break;case 32:HEAP[c]=m&65535;a=m>32767|m<-32768?33:93;break;case 33:a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str84445,1)<0?34:93;break;case 34:h=-1;a=94;break;case 35:n=_PyInt_AsLong(f);a=n==-1?36:38;break;case 36:a=_PyErr_Occurred()!=0?37:38;break;case 37:h=-1;a=94;break;case 38:HEAP[c]=n&65535;a=n>65535|n<0?39:93;break;case 39:a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning], -__str94446,1)<0?40:93;break;case 40:h=-1;a=94;break;case 41:o=_PyInt_AsLong(f);a=o==-1?42:44;break;case 42:a=_PyErr_Occurred()!=0?43:44;break;case 43:h=-1;a=94;break;case 44:HEAP[c]=o;a=93;break;case 45:p=_PyLong_AsUnsignedLong(f);a=p!=-1?52:46;break;case 46:a=_PyErr_Occurred()==0?52:47;break;case 47:_PyErr_Clear();p=_PyLong_AsLong(f);a=p==-1?48:50;break;case 48:a=_PyErr_Occurred()!=0?49:50;break;case 49:h=-1;a=94;break;case 50:HEAP[c]=p;a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning],__str104447,1)< -0?51:93;break;case 51:h=-1;a=94;break;case 52:HEAP[c]=p;a=93;break;case 53:a=c;var s=_PyLong_AsLong(f);HEAP[a]=s;a=HEAP[c]==-1?54:93;break;case 54:a=_PyErr_Occurred()!=0?55:93;break;case 55:h=-1;a=94;break;case 56:a=c;s=_PyLong_AsUnsignedLong(f);HEAP[a]=s;a=HEAP[c]==-1?57:93;break;case 57:a=_PyErr_Occurred()!=0?58:93;break;case 58:_PyErr_Clear();a=c;s=_PyLong_AsLong(f);HEAP[a]=s;a=HEAP[c]==-1?59:61;break;case 59:a=_PyErr_Occurred()!=0?60:61;break;case 60:h=-1;a=94;break;case 61:a=_PyErr_WarnEx(HEAP[_PyExc_RuntimeWarning], -__str104447,1)<0?62:93;break;case 62:h=-1;a=94;break;case 63:a=c;s=_PyInt_AsSsize_t(f);HEAP[a]=s;a=HEAP[c]==-1?64:93;break;case 64:a=_PyErr_Occurred()!=0?65:93;break;case 65:h=-1;a=94;break;case 66:q=_PyFloat_AsDouble(f);a=q==-1?67:69;break;case 67:a=_PyErr_Occurred()!=0?68:69;break;case 68:h=-1;a=94;break;case 69:HEAP[c]=q;a=93;break;case 70:a=c;s=_PyFloat_AsDouble(f);HEAP[a]=s;a=HEAP[c]==-1?71:93;break;case 71:a=_PyErr_Occurred()!=0?72:93;break;case 72:h=-1;a=94;break;case 73:a=f!=0?74:75;break; -case 74:HEAP[f]+=1;a=75;break;case 75:j=HEAP[c];HEAP[c]=f;a=j!=0?76:93;break;case 76:HEAP[j]-=1;a=HEAP[j]==0?77:93;break;case 77:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=93;break;case 78:a=(HEAP[HEAP[f+4]+84]&134217728)==0?81:79;break;case 79:a=_PyString_Size(f)!=1?81:80;break;case 80:a=_PyString_AsString(f);HEAP[c]=HEAP[a];a=93;break;case 81:_PyErr_BadArgument();h=-1;a=94;break;case 82:_PyErr_SetString(HEAP[_PyExc_TypeError],__str34440);h=-1;a=94;break;case 83:s=c;a=_PyLong_AsLongLong(f);HEAP[s]= -a;a=a==-1?84:93;break;case 84:a=_PyErr_Occurred()!=0?85:93;break;case 85:h=-1;a=94;break;case 86:var t=c,v=f;a=(HEAP[HEAP[f+4]+84]&16777216)!=0?87:88;break;case 87:r=_PyLong_AsUnsignedLongLong(v);HEAP[t]=r;a=89;break;case 88:r=_PyInt_AsLong(v);HEAP[t]=r;a=89;break;case 89:a=r==-1?90:93;break;case 90:a=_PyErr_Occurred()!=0?91:93;break;case 91:h=-1;a=94;break;case 92:_PyErr_Format(HEAP[_PyExc_SystemError],__str114448,allocate([HEAP[d],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=-1;a=94;break;case 93:h=0;a= -94;break;case 94:return g=h;default:assert(0,"bad label: "+a)}}function _PyStructSequence_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=__PyObject_New(b);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:e=c;a=_PyDict_GetItemString(HEAP[b+132],_visible_length_key);a=_PyInt_AsLong(a);HEAP[e+8]=a;a=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _structseq_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=_PyDict_GetItemString(HEAP[HEAP[b+4]+132],_real_length_key);c=_PyInt_AsLong(a);a=0;e=aq?15:22;break;case 15:_PyErr_Format(HEAP[_PyExc_TypeError],__str94461,allocate([HEAP[d+12],0,0,0, -q,0,0,0,o,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=17;break;case 17:j=0;c=37;break;case 18:c=s!=t?19:22;break;case 19:_PyErr_Format(HEAP[_PyExc_TypeError],__str104462,allocate([HEAP[d+12],0,0,0,p,0,0,0,o,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=21;break; -case 21:j=0;c=37;break;case 22:n=c=_PyStructSequence_New(d);c=c==0?23:24;break;case 23:j=0;c=37;break;case 24:r=0;c=rj?6:26;break;case 26:HEAP[f]-=1;b=HEAP[f]==0?27:28; -break;case 27:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=28;break;case 28:b=k!=0?29:30;break;case 29:n+=-2;b=30;break;case 30:HEAP[n]=41;n+=1;HEAP[n]=0;d=_PyString_FromString(l);b=31;break;case 31:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _structseq_concat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;b=e;a=_make_tuple(a);c=_PySequence_Concat(a,b);HEAP[a]-=1;b=HEAP[a]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}} -function _structseq_repeat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;b=e;a=_make_tuple(a);c=_PySequence_Repeat(a,b);HEAP[a]-=1;b=HEAP[a]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=2;break;case 2:return a=c;default:assert(0,"bad label: "+b)}} -function _structseq_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;b=g;a=e;d=_make_tuple(b);b=d==0?1:2;break;case 1:c=-1;b=5;break;case 2:f=_PySequence_Contains(d,a);HEAP[d]-=1;b=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=4;break;case 4:c=f;b=5;break;case 5:return a=c;default:assert(0,"bad label: "+b)}} -function _structseq_hash(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;a=_make_tuple(g);e=a==0?1:2;break;case 1:b=-1;e=5;break;case 2:c=_PyObject_Hash(a);HEAP[a]-=1;e=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=4;break;case 4:b=c;e=5;break;case 5:return g=b;default:assert(0,"bad label: "+e)}} -function _structseq_richcompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d;c=g;a=e;d=b;c=_make_tuple(c);d=_PyObject_RichCompare(c,a,d);HEAP[c]-=1;a=HEAP[c]==0?1:2;break;case 1:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=2;break;case 2:return g=d;default:assert(0,"bad label: "+a)}} -function _structseq_reduce(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m;a=g;j=_PyDict_GetItemString(HEAP[HEAP[a+4]+132],_real_length_key);j=_PyInt_AsLong(j);k=HEAP[a+8];d=_PyDict_GetItemString(HEAP[HEAP[a+4]+132],_unnamed_fields_key);l=_PyInt_AsLong(d);d=_PyTuple_New(k);e=d==0?1:2;break;case 1:c=0;e=15;break;case 2:f=_PyDict_New();e=f==0?3:6;break;case 3:HEAP[d]-=1;e=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=5;break;case 5:c=0;e=15;break;case 6:m=0; -e=m=0?6:9;break;case 6:b=(j+1+(0-k))*20!=0?7:8;break;case 7:d=(j+1+(0-k))*20;b=11;break;case 8:d=1;b=11;break;case 9:h=0;b=26;break;case 10:h=0;b=26;break;case 11:h=b=_malloc(d);b=b==0?26:12;break;case 12:l=m=0;b=lo?9:24;break;case 15:a=_symtable_visit_expr(m,HEAP[d+4])==0?29:24;break;case 16:var u=HEAP[d+4];n=u;o=0;c=16;a=19;break;case 17:a=_symtable_visit_stmt(m,HEAP[n+4+o*4])==0?29:18;break;case 18:o+=1;var s= -n,c=18;a=19;break;case 19:a=(c==18?s:u)!=0?20:21;break;case 20:j=HEAP[n];a=22;break;case 21:j=0;a=22;break;case 22:a=j>o?17:24;break;case 23:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str124511);a=29;break;case 24:a=_symtable_exit_block(m,d);var t=m;a=a==0?25:26;break;case 25:_PySymtable_Free(t);l=0;a=30;break;case 26:a=_symtable_analyze(t);var v=m;a=a!=0?27:28;break;case 27:l=v;a=30;break;case 28:_PySymtable_Free(v);l=0;a=30;break;case 29:_symtable_exit_block(m,d);_PySymtable_Free(m);l=0;a=30; -break;case 30:return g=l;default:assert(0,"bad label: "+a)}} -function _PySymtable_Free(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+12]!=0?1:3;break;case 1:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=3;break;case 3:e=HEAP[b+16]!=0?4:6;break;case 4:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+16]+4]+24]](HEAP[b+16]);e=6;break;case 6:_PyMem_Free(b);return;default:assert(0,"bad label: "+e)}} -function _PySymtable_Lookup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;d=_PyLong_FromVoidPtr(e);b=d==0?1:2;break;case 1:c=0;b=8;break;case 2:f=_PyDict_GetItem(HEAP[a+12],d);b=f!=0?3:4;break;case 3:HEAP[f]+=1;b=5;break;case 4:_PyErr_SetString(HEAP[_PyExc_KeyError],__str134512);b=5;break;case 5:HEAP[d]-=1;b=HEAP[d]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=7;break;case 7:c=f;b=8;break;case 8:return b=c;default:assert(0,"bad label: "+b)}} -function _PyST_GetScope(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;c=_PyDict_GetItem(HEAP[g+12],e);b=c==0?1:2;break;case 1:a=0;b=3;break;case 2:a=HEAP[c+8]>>11&7;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _analyze_name(g,e,b,a,c,d,f,h){var j;for(j=-1;;)switch(j){case -1:var k,l,m,n,o,p,q,r,u,s,t,v,w;k=g;l=e;m=b;j=a;n=c;o=d;p=f;q=h;var x=j;j=(j&1)!=0?1:18;break;case 1:j=(x&4)!=0?2:3;break;case 2:_PyErr_Format(HEAP[_PyExc_SyntaxError],__str144513,allocate([m+20,0,0,0],["i8*",0,0,0],ALLOC_STACK));_PyErr_SyntaxLocation(HEAP[HEAP[k+56]],HEAP[k+44]);r=0;j=68;break;case 3:u=_PyInt_FromLong(2);j=u==0?4:5;break;case 4:r=0;j=68;break;case 5:j=_PyDict_SetItem(l,m,u)<0;HEAP[u]-=1;var y=HEAP[u]==0;j=j? -6:9;break;case 6:j=y?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);j=8;break;case 8:r=0;j=68;break;case 9:j=y?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);j=11;break;case 11:j=_PyDict_SetItem(q,m,__Py_NoneStruct)<0?12:13;break;case 12:r=0;j=68;break;case 13:j=n!=0?14:17;break;case 14:j=_PyDict_GetItem(n,m)!=0?15:17;break;case 15:j=_PyDict_DelItem(n,m)<0?16:17;break;case 16:r=0;j=68;break;case 17:r=1;j=68;break;case 18:j=(x&70)!=0?19:33;break;case 19:s=_PyInt_FromLong(1);j=s== -0?20:21;break;case 20:r=0;j=68;break;case 21:j=_PyDict_SetItem(l,m,s)<0;HEAP[s]-=1;var z=HEAP[s]==0;j=j?22:25;break;case 22:j=z?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);j=24;break;case 24:r=0;j=68;break;case 25:j=z?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);j=27;break;case 27:j=_PyDict_SetItem(o,m,__Py_NoneStruct)<0?28:29;break;case 28:r=0;j=68;break;case 29:j=_PyDict_GetItem(q,m)!=0?30:32;break;case 30:j=_PyDict_DelItem(q,m)<0?31:32;break;case 31:r=0;j=68;break;case 32:r= -1;j=68;break;case 33:j=n==0?46:34;break;case 34:j=_PyDict_GetItem(n,m)==0?46:35;break;case 35:t=_PyInt_FromLong(4);j=t==0?36:37;break;case 36:r=0;j=68;break;case 37:j=_PyDict_SetItem(l,m,t)<0;HEAP[t]-=1;var C=HEAP[t]==0;j=j?38:41;break;case 38:j=C?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);j=40;break;case 40:r=0;j=68;break;case 41:j=C?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);j=43;break;case 43:HEAP[k+40]=HEAP[k+40]&-2|1;j=_PyDict_SetItem(p,m,__Py_NoneStruct)<0?44:45; -break;case 44:r=0;j=68;break;case 45:r=1;j=68;break;case 46:j=q==0?57:47;break;case 47:j=_PyDict_GetItem(q,m)==0?57:48;break;case 48:v=_PyInt_FromLong(3);j=v==0?49:50;break;case 49:r=0;j=68;break;case 50:j=_PyDict_SetItem(l,m,v)<0;HEAP[v]-=1;var A=HEAP[v]==0;j=j?51:54;break;case 51:j=A?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);j=53;break;case 53:r=0;j=68;break;case 54:j=A?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);j=56;break;case 56:r=1;j=68;break;case 57:j=HEAP[k+36]!= -0?58:59;break;case 58:HEAP[k+40]=HEAP[k+40]&-2|1;j=59;break;case 59:w=j=_PyInt_FromLong(3);j=j==0?60:61;break;case 60:r=0;j=68;break;case 61:j=_PyDict_SetItem(l,m,w)<0;HEAP[w]-=1;var G=HEAP[w]==0;j=j?62:65;break;case 62:j=G?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);j=64;break;case 64:r=0;j=68;break;case 65:j=G?66:67;break;case 66:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);j=67;break;case 67:r=1;j=68;break;case 68:return g=r;default:assert(0,"bad label: "+j)}} -function _analyze_cells(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k,l,m=b+8;c=g;d=e;l=0;HEAP[m]=0;k=_PyInt_FromLong(5);a=k==0?1:6;break;case 1:f=0;a=11;break;case 2:a=HEAP[HEAP[j]+8];a=a!=1?6:3;break;case 3:a=_PyDict_GetItem(d,HEAP[h])==0?6:4;break;case 4:a=_PyDict_SetItem(c,HEAP[h],k)<0?8:5;break;case 5:_PyDict_DelItem(d,HEAP[h]);a=6;break;case 6:a=_PyDict_Next(c,m,h,j)!=0?2:7;break;case 7:l=1;a=8;break;case 8:HEAP[k]-=1;a=HEAP[k]==0? -9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=10;break;case 10:f=l;a=11;break;case 11:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _check_unoptimized(g){var e=STACKTOP;STACKTOP+=300;_memset(e,0,300);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f=e,h;a=g;b=(HEAP[a+28]|0)!=0?4:1;break;case 1:b=(HEAP[a+32]|0)==0?4:2;break;case 2:b=reSign(HEAP[a+40]<<31>>>0>>>31&1,1,1)!=0?5:3;break;case 3:b=reSign(HEAP[a+40]<<30>>>0>>>31&1,1,1)==0?4:5;break;case 4:d=1;b=14;break;case 5:b=reSign(HEAP[a+40]<<30>>>0>>>31&1,1,1)!=0?6:7;break;case 6:c=__str154514;b=8;break;case 7:c=__str164515;b=8;break;case 8:h=c;b=HEAP[a+32];b=b==1?10:b==2? -9:b==4?11:b==8?9:12;break;case 9:d=1;b=14;break;case 10:_PyOS_snprintf(f,300,__str174516,allocate([HEAP[a+16]+20,0,0,0,h,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=13;break;case 11:_PyOS_snprintf(f,300,__str184517,allocate([HEAP[a+16]+20,0,0,0,h,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=13;break;case 12:_PyOS_snprintf(f,300,__str194518,allocate([HEAP[a+16]+20,0,0,0,h,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=13;break;case 13:_PyErr_SetString(HEAP[_PyExc_SyntaxError],f);_PyErr_SyntaxLocation(HEAP[HEAP[a+ -56]],HEAP[a+48]);d=0;b=14;break;case 14:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _update_symbols(g,e,b,a,c){var d=STACKTOP;STACKTOP+=12;_memset(d,0,12);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p=d+4,q,r,u=d+8,s;h=g;j=e;k=b;l=a;m=c;r=0;HEAP[u]=0;f=9;break;case 1:q=HEAP[HEAP[p]+8];f=_PyDict_GetItem(j,HEAP[o]);f=HEAP[f+8];q|=f<<11;q=_PyInt_FromLong(q);f=q==0?2:3;break;case 2:n=0;f=37;break;case 3:f=_PyDict_SetItem(h,HEAP[o],q)<0;HEAP[q]-=1;var t=HEAP[q]==0;f=f?4:7;break;case 4:f=t?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=6;break;case 6:n=0; -f=37;break;case 7:f=t?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=9;break;case 9:f=_PyDict_Next(h,u,o,p)!=0?1:10;break;case 10:r=_PyInt_FromLong(8192);f=r==0?11:12;break;case 11:n=0;f=37;break;case 12:HEAP[u]=0;f=33;break;case 13:s=_PyDict_GetItem(h,HEAP[o]);f=s!=0?14:28;break;case 14:f=m!=0?15:33;break;case 15:f=(HEAP[s+8]&71)!=0?16:33;break;case 16:s=HEAP[s+8]|32;s=_PyInt_FromLong(s);f=s==0?17:20;break;case 17:HEAP[r]-=1;f=HEAP[r]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[r+4]+ -24]](r);f=19;break;case 19:n=0;f=37;break;case 20:f=_PyDict_SetItem(h,HEAP[o],s)<0;HEAP[s]-=1;var v=HEAP[s]==0;f=f?21:26;break;case 21:f=v?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);f=23;break;case 23:HEAP[r]-=1;f=HEAP[r]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);f=25;break;case 25:n=0;f=37;break;case 26:f=v?27:33;break;case 27:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);f=33;break;case 28:f=_PyDict_GetItem(k,HEAP[o])==0?33:29;break;case 29:f=_PyDict_SetItem(h,HEAP[o], -r)<0?30:33;break;case 30:HEAP[r]-=1;f=HEAP[r]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);f=32;break;case 32:n=0;f=37;break;case 33:f=_PyDict_Next(l,u,o,p)!=0?13:34;break;case 34:HEAP[r]-=1;f=HEAP[r]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);f=36;break;case 36:n=1;f=37;break;case 37:return g=n,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _analyze_block(g,e,b,a){var c=STACKTOP;STACKTOP+=12;_memset(c,0,12);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l=c,m=c+4,n,o,p,q,r,u,s,t,v=c+8,w;f=g;h=e;j=b;k=a;t=u=r=q=p=o=0;HEAP[v]=0;n=_PyDict_New();d=n==0?35:1;break;case 1:o=_PyDict_New();d=o==0?32:2;break;case 2:q=_PyDict_New();d=q==0?32:3;break;case 3:p=_PyDict_New();d=p==0?32:4;break;case 4:r=_PyDict_New();d=r==0?32:5;break;case 5:d=HEAP[f+28]==1?6:10;break;case 6:d=_PyDict_Update(q,k)<0?32:7;break;case 7:d=h!=0?8:10;break;case 8:d= -_PyDict_Update(p,h)<0?32:10;break;case 9:d=HEAP[HEAP[m]+8];d=_analyze_name(f,o,HEAP[l],d,h,n,j,k)==0?32:10;break;case 10:d=_PyDict_Next(HEAP[f+12],v,l,m)!=0?9:11;break;case 11:d=HEAP[f+28]!=1?12:17;break;case 12:d=HEAP[f+28]==0?13:14;break;case 13:d=_PyDict_Update(p,n)<0?32:14;break;case 14:d=h!=0?15:16;break;case 15:d=_PyDict_Update(p,h)<0?32:16;break;case 16:d=_PyDict_Update(q,k)<0?32:17;break;case 17:u=d=_PyDict_New();d=d==0?32:18;break;case 18:s=0;d=24;break;case 19:w=HEAP[HEAP[HEAP[f+24]+12]+ -4*s];d=_analyze_child_block(w,p,r,q,u)==0?32:20;break;case 20:d=reSign(HEAP[w+40]<<31>>>0>>>31&1,1,1)!=0?22:21;break;case 21:d=reSign(HEAP[w+40]<<30>>>0>>>31&1,1,1)!=0?22:23;break;case 22:HEAP[f+40]=HEAP[f+40]&-3|2;d=23;break;case 23:s+=1;d=24;break;case 24:d=HEAP[HEAP[f+24]+8]>s?19:25;break;case 25:d=_PyDict_Update(r,u)<0?32:26;break;case 26:d=HEAP[f+28]==0?27:28;break;case 27:d=_analyze_cells(o,r)==0?32:28;break;case 28:d=_update_symbols(HEAP[f+12],o,h,r,HEAP[f+28]==1)==0?32:29;break;case 29:d= -_check_unoptimized(f)==0?32:30;break;case 30:d=_PyDict_Update(j,r)<0?32:31;break;case 31:t=1;d=32;break;case 32:d=n!=0?33:35;break;case 33:HEAP[n]-=1;d=HEAP[n]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);d=35;break;case 35:d=o!=0?36:38;break;case 36:HEAP[o]-=1;d=HEAP[o]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=38;break;case 38:d=p!=0?39:41;break;case 39:HEAP[p]-=1;d=HEAP[p]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=41;break;case 41:d=q!= -0?42:44;break;case 42:HEAP[q]-=1;d=HEAP[q]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=44;break;case 44:d=r!=0?45:47;break;case 45:HEAP[r]-=1;d=HEAP[r]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);d=47;break;case 47:d=u!=0?48:50;break;case 48:HEAP[u]-=1;d=HEAP[u]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=50;break;case 50:return g=t,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _analyze_child_block(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;l=c;p=o=0;n=_PyDict_New();d=n==0?18:1;break;case 1:d=_PyDict_Update(n,h)<0?15:2;break;case 2:p=_PyDict_New();d=p==0?15:3;break;case 3:d=_PyDict_Update(p,j)<0?15:4;break;case 4:o=_PyDict_New();d=o==0?15:5;break;case 5:d=_PyDict_Update(o,k)<0?15:6;break;case 6:d=_analyze_block(f,n,p,o)==0?15:7;break;case 7:d=_PyDict_Update(l,p)<0?15:8;break;case 8:HEAP[n]-=1;d=HEAP[n]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[n+ -4]+24]](n);d=10;break;case 10:HEAP[p]-=1;d=HEAP[p]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=12;break;case 12:HEAP[o]-=1;d=HEAP[o]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=14;break;case 14:m=1;d=25;break;case 15:d=n!=0?16:18;break;case 16:HEAP[n]-=1;d=HEAP[n]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);d=18;break;case 18:d=p!=0?19:21;break;case 19:HEAP[p]-=1;d=HEAP[p]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);d=21;break; -case 21:d=o!=0?22:24;break;case 22:HEAP[o]-=1;d=HEAP[o]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);d=24;break;case 24:m=0;d=25;break;case 25:return g=m;default:assert(0,"bad label: "+d)}} -function _symtable_analyze(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=_PyDict_New();e=c==0?1:2;break;case 1:a=0;e=11;break;case 2:d=_PyDict_New();e=d==0?3:6;break;case 3:HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:a=0;e=11;break;case 6:f=_analyze_block(HEAP[b+8],0,c,d);HEAP[c]-=1;e=HEAP[c]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=8;break;case 8:HEAP[d]-=1;e=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=10;break;case 10:a=f;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}} -function _symtable_warn(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;d=e;a=_PyErr_WarnExplicit(HEAP[_PyExc_SyntaxWarning],d,HEAP[c],b,0,0)<0?1:4;break;case 1:a=_PyErr_ExceptionMatches(HEAP[_PyExc_SyntaxWarning])!=0?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_SyntaxError],d);_PyErr_SyntaxLocation(HEAP[c],HEAP[HEAP[c+4]+44]);a=3;break;case 3:f=0;a=5;break;case 4:f=1;a=5;break;case 5:return g=f;default:assert(0,"bad label: "+a)}} -function _symtable_exit_block(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[b+4]!=0?1:3;break;case 1:d=HEAP[b+4];HEAP[b+4]=0;HEAP[d]-=1;e=HEAP[d]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=3;break;case 3:c=HEAP[HEAP[b+16]+8]-1;e=HEAP[HEAP[b+16]+8]-1>=0?4:8;break;case 4:HEAP[b+4]=HEAP[HEAP[HEAP[b+16]+12]+4*c];e=HEAP[b+4]==0?5:6;break;case 5:a=0;e=9;break;case 6:HEAP[HEAP[b+4]]+=1;e=_PySequence_DelItem(HEAP[b+16],c)<0?7:8;break;case 7:a=0;e=9;break;case 8:a=1;e=9;break; -case 9:return g=a;default:assert(0,"bad label: "+e)}} -function _symtable_enter_block(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;l=c;n=0;d=HEAP[f+4]!=0?1:5;break;case 1:n=HEAP[f+4];d=_PyList_Append(HEAP[f+16],HEAP[f+4])<0?2:3;break;case 2:m=0;d=13;break;case 3:d=HEAP[f+4];HEAP[d]-=1;d=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+4]+4]+24]](HEAP[f+4]);d=5;break;case 5:d=_ste_new(f,h,j,k,l);HEAP[f+4]=d;d=HEAP[f+4]==0?6:7;break;case 6:m=0;d=13;break;case 7:d=j==2?8:9;break;case 8:HEAP[f+20]=HEAP[HEAP[f+ -4]+12];d=9;break;case 9:d=n!=0?10:12;break;case 10:d=_PyList_Append(HEAP[n+24],HEAP[f+4])<0?11:12;break;case 11:m=0;d=13;break;case 12:m=1;d=13;break;case 13:return g=m;default:assert(0,"bad label: "+d)}} -function _symtable_lookup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=__Py_Mangle(HEAP[a+28],e);b=f==0?1:2;break;case 1:c=0;b=7;break;case 2:d=_PyDict_GetItem(HEAP[HEAP[a+4]+12],f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:b=d==0?5:6;break;case 5:c=0;b=7;break;case 6:c=_PyInt_AsLong(d);b=7;break;case 7:return b=c;default:assert(0,"bad label: "+b)}} -function _symtable_add_def(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;f=b;m=__Py_Mangle(HEAP[c+28],d);a=m==0?1:2;break;case 1:h=0;a=31;break;case 2:k=HEAP[HEAP[c+4]+12];j=_PyDict_GetItem(k,m);a=j!=0?3:7;break;case 3:l=HEAP[j+8];a=(f&4)!=0?4:6;break;case 4:a=(l&4)!=0?5:6;break;case 5:a=_PyString_AsString(d);_PyErr_Format(HEAP[_PyExc_SyntaxError],__str204519,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));_PyErr_SyntaxLocation(HEAP[c],HEAP[HEAP[c+4]+44]);a=28;break;case 6:l|= -f;a=8;break;case 7:l=f;a=8;break;case 8:j=a=_PyInt_FromLong(l);a=a==0?28:9;break;case 9:a=_PyDict_SetItem(k,m,j)<0;HEAP[j]-=1;var n=HEAP[j]==0;a=a?10:12;break;case 10:a=n?11:28;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=28;break;case 12:a=n?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=14;break;case 14:a=(f&4)!=0?15:16;break;case 15:a=_PyList_Append(HEAP[HEAP[c+4]+20],m)<0?28:25;break;case 16:a=(f&1)!=0?17:25;break;case 17:l=f;j=_PyDict_GetItem(HEAP[c+20],m);a=j!=0?18:19; -break;case 18:l|=HEAP[j+8];a=19;break;case 19:j=a=_PyInt_FromLong(l);a=a==0?28:20;break;case 20:a=_PyDict_SetItem(HEAP[c+20],m,j)<0;HEAP[j]-=1;var o=HEAP[j]==0;a=a?21:23;break;case 21:a=o?22:28;break;case 22:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=28;break;case 23:a=o?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=25;break;case 25:HEAP[m]-=1;a=HEAP[m]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=27;break;case 27:h=1;a=31;break;case 28:HEAP[m]-=1;a=HEAP[m]==0?29:30;break; -case 29:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=30;break;case 30:h=0;a=31;break;case 31:return g=h;default:assert(0,"bad label: "+a)}} -function _symtable_visit_stmt(g,e){var b=STACKTOP;STACKTOP+=256;_memset(b,0,256);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V,Q,Z,K,N,H,ba,W,B,Y,fa,ha,la,ra,ya,Da,Ua,Na,Pa,wa,Ya,Ha,ta,Va,Ia,Wa,ia,Ba,Xa,Ta,Ea,Ga,ka,Fa,ma,La,Za,Ka,Ra,$a,Ja,ja,ua,bb,qa,P,hb=b,Qa,mb;d=g;f=e;a=HEAP[f];a=a==1?1:a==2?35:a==3?66:a==4?71:a==5?79:a==6?89:a==7?93:a==8?104:a==9?125:a==10?144:a==11?268:a==12?163:a==13?172:a==14?196:a==15?212:a==16?217:a==17?228: -a==18?239:a==19?250:a==20?266:281;break;case 1:a=_symtable_add_def(d,HEAP[f+4],2)==0?2:3;break;case 2:M=0;a=282;break;case 3:a=HEAP[HEAP[f+4+4]+12]!=0?4:12;break;case 4:var S=HEAP[HEAP[f+4+4]+12];I=S;L=0;c=4;a=8;break;case 5:a=HEAP[I+4+L*4];a=_symtable_visit_expr(d,a)==0?6:7;break;case 6:M=0;a=282;break;case 7:L+=1;var Ca=I,c=7;a=8;break;case 8:a=(c==7?Ca:S)!=0?9:10;break;case 9:R=HEAP[I];a=11;break;case 10:R=0;a=11;break;case 11:a=R>L?5:12;break;case 12:a=HEAP[f+4+12]!=0?13:21;break;case 13:var pa= -HEAP[f+4+12];F=pa;J=0;c=13;a=17;break;case 14:a=HEAP[F+4+J*4];a=_symtable_visit_expr(d,a)==0?15:16;break;case 15:M=0;a=282;break;case 16:J+=1;var Aa=F,c=16;a=17;break;case 17:a=(c==16?Aa:pa)!=0?18:19;break;case 18:D=HEAP[F];a=20;break;case 19:D=0;a=20;break;case 20:a=D>J?14:21;break;case 21:a=_symtable_enter_block(d,HEAP[f+4],0,f,HEAP[f+20])==0?22:23;break;case 22:M=0;a=282;break;case 23:a=_symtable_visit_arguments(d,HEAP[f+4+4])==0?24:25;break;case 24:_symtable_exit_block(d,f);M=0;a=282;break;case 25:var ob= -HEAP[f+4+8];Q=ob;V=0;c=25;a=29;break;case 26:a=HEAP[Q+4+V*4];a=_symtable_visit_stmt(d,a)==0?27:28;break;case 27:_symtable_exit_block(d,f);M=0;a=282;break;case 28:V+=1;var ib=Q,c=28;a=29;break;case 29:a=(c==28?ib:ob)!=0?30:31;break;case 30:E=HEAP[Q];a=32;break;case 31:E=0;a=32;break;case 32:a=E>V?26:33;break;case 33:a=_symtable_exit_block(d,f)==0?34:281;break;case 34:M=0;a=282;break;case 35:a=_symtable_add_def(d,HEAP[f+4],2)==0?36:37;break;case 36:M=0;a=282;break;case 37:var ca=HEAP[f+4+4];N=ca;K= -0;c=37;a=41;break;case 38:a=HEAP[N+4+K*4];a=_symtable_visit_expr(d,a)==0?39:40;break;case 39:M=0;a=282;break;case 40:K+=1;var na=N,c=40;a=41;break;case 41:a=(c==40?na:ca)!=0?42:43;break;case 42:G=HEAP[N];a=44;break;case 43:G=0;a=44;break;case 44:a=G>K?38:45;break;case 45:a=HEAP[f+4+12]!=0?46:54;break;case 46:var O=HEAP[f+4+12];ba=O;H=0;c=46;a=50;break;case 47:a=HEAP[ba+4+H*4];a=_symtable_visit_expr(d,a)==0?48:49;break;case 48:M=0;a=282;break;case 49:H+=1;var Ma=ba,c=49;a=50;break;case 50:a=(c==49? -Ma:O)!=0?51:52;break;case 51:A=HEAP[ba];a=53;break;case 52:A=0;a=53;break;case 53:a=A>H?47:54;break;case 54:a=_symtable_enter_block(d,HEAP[f+4],1,f,HEAP[f+20])==0?55:56;break;case 55:M=0;a=282;break;case 56:Z=HEAP[d+28];HEAP[d+28]=HEAP[f+4];var $=HEAP[f+4+8];B=$;W=0;c=56;a=60;break;case 57:a=HEAP[B+4+W*4];a=_symtable_visit_stmt(d,a)==0?58:59;break;case 58:_symtable_exit_block(d,f);M=0;a=282;break;case 59:W+=1;var ga=B,c=59;a=60;break;case 60:a=(c==59?ga:$)!=0?61:62;break;case 61:C=HEAP[B];a=63;break; -case 62:C=0;a=63;break;case 63:a=C>W?57:64;break;case 64:HEAP[d+28]=Z;a=_symtable_exit_block(d,f)==0?65:281;break;case 65:M=0;a=282;break;case 66:a=HEAP[f+4]!=0?67:281;break;case 67:a=_symtable_visit_expr(d,HEAP[f+4])==0?68:69;break;case 68:M=0;a=282;break;case 69:a=HEAP[d+4]+40;HEAP[a]=HEAP[a]&-33|32;a=(HEAP[HEAP[d+4]+40]<<29>>>31&1)!=0?70:281;break;case 70:_PyErr_SetString(HEAP[_PyExc_SyntaxError],__str214520);_PyErr_SyntaxLocation(HEAP[d],HEAP[f+20]);M=0;a=282;break;case 71:var Sa=HEAP[f+4];fa= -Sa;Y=0;c=71;a=75;break;case 72:a=HEAP[fa+4+Y*4];a=_symtable_visit_expr(d,a)==0?73:74;break;case 73:M=0;a=282;break;case 74:Y+=1;var X=fa,c=74;a=75;break;case 75:a=(c==74?X:Sa)!=0?76:77;break;case 76:z=HEAP[fa];a=78;break;case 77:z=0;a=78;break;case 78:a=z>Y?72:281;break;case 79:var oa=HEAP[f+4];la=oa;ha=0;c=79;a=83;break;case 80:a=HEAP[la+4+ha*4];a=_symtable_visit_expr(d,a)==0?81:82;break;case 81:M=0;a=282;break;case 82:ha+=1;var ab=la,c=82;a=83;break;case 83:a=(c==82?ab:oa)!=0?84:85;break;case 84:y= -HEAP[la];a=86;break;case 85:y=0;a=86;break;case 86:a=y>ha?80:87;break;case 87:a=_symtable_visit_expr(d,HEAP[f+4+4])==0?88:281;break;case 88:M=0;a=282;break;case 89:a=_symtable_visit_expr(d,HEAP[f+4])==0?90:91;break;case 90:M=0;a=282;break;case 91:a=_symtable_visit_expr(d,HEAP[f+4+8])==0?92:281;break;case 92:M=0;a=282;break;case 93:a=HEAP[f+4]!=0?94:96;break;case 94:a=_symtable_visit_expr(d,HEAP[f+4])==0?95:96;break;case 95:M=0;a=282;break;case 96:var Oa=HEAP[f+4+4];ya=Oa;ra=0;c=96;a=100;break;case 97:a= -HEAP[ya+4+ra*4];a=_symtable_visit_expr(d,a)==0?98:99;break;case 98:M=0;a=282;break;case 99:ra+=1;var va=ya,c=99;a=100;break;case 100:a=(c==99?va:Oa)!=0?101:102;break;case 101:x=HEAP[ya];a=103;break;case 102:x=0;a=103;break;case 103:a=x>ra?97:281;break;case 104:a=_symtable_visit_expr(d,HEAP[f+4])==0?105:106;break;case 105:M=0;a=282;break;case 106:a=_symtable_visit_expr(d,HEAP[f+4+4])==0?107:108;break;case 107:M=0;a=282;break;case 108:var U=HEAP[f+4+8];Ua=U;Da=0;c=108;a=112;break;case 109:a=HEAP[Ua+ -4+Da*4];a=_symtable_visit_stmt(d,a)==0?110:111;break;case 110:M=0;a=282;break;case 111:Da+=1;var fb=Ua,c=111;a=112;break;case 112:a=(c==111?fb:U)!=0?113:114;break;case 113:w=HEAP[Ua];a=115;break;case 114:w=0;a=115;break;case 115:a=w>Da?109:116;break;case 116:a=HEAP[f+4+12]!=0?117:281;break;case 117:var Cb=HEAP[f+4+12];Pa=Cb;Na=0;c=117;a=121;break;case 118:a=HEAP[Pa+4+Na*4];a=_symtable_visit_stmt(d,a)==0?119:120;break;case 119:M=0;a=282;break;case 120:Na+=1;var xb=Pa,c=120;a=121;break;case 121:a=(c== -120?xb:Cb)!=0?122:123;break;case 122:v=HEAP[Pa];a=124;break;case 123:v=0;a=124;break;case 124:a=v>Na?118:281;break;case 125:a=_symtable_visit_expr(d,HEAP[f+4])==0?126:127;break;case 126:M=0;a=282;break;case 127:var db=HEAP[f+4+4];Ya=db;wa=0;c=127;a=131;break;case 128:a=HEAP[Ya+4+wa*4];a=_symtable_visit_stmt(d,a)==0?129:130;break;case 129:M=0;a=282;break;case 130:wa+=1;var gb=Ya,c=130;a=131;break;case 131:a=(c==130?gb:db)!=0?132:133;break;case 132:t=HEAP[Ya];a=134;break;case 133:t=0;a=134;break;case 134:a= -t>wa?128:135;break;case 135:a=HEAP[f+4+8]!=0?136:281;break;case 136:var rb=HEAP[f+4+8];ta=rb;Ha=0;c=136;a=140;break;case 137:a=HEAP[ta+4+Ha*4];a=_symtable_visit_stmt(d,a)==0?138:139;break;case 138:M=0;a=282;break;case 139:Ha+=1;var sb=ta,c=139;a=140;break;case 140:a=(c==139?sb:rb)!=0?141:142;break;case 141:s=HEAP[ta];a=143;break;case 142:s=0;a=143;break;case 143:a=s>Ha?137:281;break;case 144:a=_symtable_visit_expr(d,HEAP[f+4])==0?145:146;break;case 145:M=0;a=282;break;case 146:var Kb=HEAP[f+4+4]; -Ia=Kb;Va=0;c=146;a=150;break;case 147:a=HEAP[Ia+4+Va*4];a=_symtable_visit_stmt(d,a)==0?148:149;break;case 148:M=0;a=282;break;case 149:Va+=1;var Gb=Ia,c=149;a=150;break;case 150:a=(c==149?Gb:Kb)!=0?151:152;break;case 151:u=HEAP[Ia];a=153;break;case 152:u=0;a=153;break;case 153:a=u>Va?147:154;break;case 154:a=HEAP[f+4+8]!=0?155:281;break;case 155:var Nb=HEAP[f+4+8];ia=Nb;Wa=0;c=155;a=159;break;case 156:a=HEAP[ia+4+Wa*4];a=_symtable_visit_stmt(d,a)==0?157:158;break;case 157:M=0;a=282;break;case 158:Wa+= -1;var Ab=ia,c=158;a=159;break;case 159:a=(c==158?Ab:Nb)!=0?160:161;break;case 160:r=HEAP[ia];a=162;break;case 161:r=0;a=162;break;case 162:a=r>Wa?156:281;break;case 163:a=HEAP[f+4]!=0?164:281;break;case 164:a=_symtable_visit_expr(d,HEAP[f+4])==0?165:166;break;case 165:M=0;a=282;break;case 166:a=HEAP[f+4+4]!=0?167:281;break;case 167:a=_symtable_visit_expr(d,HEAP[f+4+4])==0?168:169;break;case 168:M=0;a=282;break;case 169:a=HEAP[f+4+8]!=0?170:281;break;case 170:a=_symtable_visit_expr(d,HEAP[f+4+8])== -0?171:281;break;case 171:M=0;a=282;break;case 172:var Sb=HEAP[f+4];Xa=Sb;Ba=0;c=172;a=176;break;case 173:a=HEAP[Xa+4+Ba*4];a=_symtable_visit_stmt(d,a)==0?174:175;break;case 174:M=0;a=282;break;case 175:Ba+=1;var pb=Xa,c=175;a=176;break;case 176:a=(c==175?pb:Sb)!=0?177:178;break;case 177:q=HEAP[Xa];a=179;break;case 178:q=0;a=179;break;case 179:a=q>Ba?173:180;break;case 180:var Mb=HEAP[f+4+8];Ea=Mb;Ta=0;c=180;a=184;break;case 181:a=HEAP[Ea+4+Ta*4];a=_symtable_visit_stmt(d,a)==0?182:183;break;case 182:M= -0;a=282;break;case 183:Ta+=1;var tb=Ea,c=183;a=184;break;case 184:a=(c==183?tb:Mb)!=0?185:186;break;case 185:p=HEAP[Ea];a=187;break;case 186:p=0;a=187;break;case 187:a=p>Ta?181:188;break;case 188:var Hb=HEAP[f+4+4];ka=Hb;Ga=0;c=188;a=192;break;case 189:a=HEAP[ka+4+Ga*4];a=_symtable_visit_excepthandler(d,a)==0?190:191;break;case 190:M=0;a=282;break;case 191:Ga+=1;var da=ka,c=191;a=192;break;case 192:a=(c==191?da:Hb)!=0?193:194;break;case 193:o=HEAP[ka];a=195;break;case 194:o=0;a=195;break;case 195:a= -o>Ga?189:281;break;case 196:var Jb=HEAP[f+4];ma=Jb;Fa=0;c=196;a=200;break;case 197:a=HEAP[ma+4+Fa*4];a=_symtable_visit_stmt(d,a)==0?198:199;break;case 198:M=0;a=282;break;case 199:Fa+=1;var jb=ma,c=199;a=200;break;case 200:a=(c==199?jb:Jb)!=0?201:202;break;case 201:n=HEAP[ma];a=203;break;case 202:n=0;a=203;break;case 203:a=n>Fa?197:204;break;case 204:var bc=HEAP[f+4+4];Za=bc;La=0;c=204;a=208;break;case 205:a=HEAP[Za+4+La*4];a=_symtable_visit_stmt(d,a)==0?206:207;break;case 206:M=0;a=282;break;case 207:La+= -1;var Wb=Za,c=207;a=208;break;case 208:a=(c==207?Wb:bc)!=0?209:210;break;case 209:m=HEAP[Za];a=211;break;case 210:m=0;a=211;break;case 211:a=m>La?205:281;break;case 212:a=_symtable_visit_expr(d,HEAP[f+4])==0?213:214;break;case 213:M=0;a=282;break;case 214:a=HEAP[f+4+4]!=0?215:281;break;case 215:a=_symtable_visit_expr(d,HEAP[f+4+4])==0?216:281;break;case 216:M=0;a=282;break;case 217:var lb=HEAP[f+4];Ra=lb;Ka=0;c=217;a=221;break;case 218:a=HEAP[Ra+4+Ka*4];a=_symtable_visit_alias(d,a)==0?219:220;break; -case 219:M=0;a=282;break;case 220:Ka+=1;var kb=Ra,c=220;a=221;break;case 221:a=(c==220?kb:lb)!=0?222:223;break;case 222:l=HEAP[Ra];a=224;break;case 223:l=0;a=224;break;case 224:a=l>Ka?218:225;break;case 225:a=HEAP[HEAP[d+4]+32]!=0?226:281;break;case 226:a=HEAP[HEAP[d+4]+48]==0?227:281;break;case 227:HEAP[HEAP[d+4]+48]=HEAP[f+20];a=281;break;case 228:var Lb=HEAP[f+4+4];Ja=Lb;$a=0;c=228;a=232;break;case 229:a=HEAP[Ja+4+$a*4];a=_symtable_visit_alias(d,a)==0?230:231;break;case 230:M=0;a=282;break;case 231:$a+= -1;var Eb=Ja,c=231;a=232;break;case 232:a=(c==231?Eb:Lb)!=0?233:234;break;case 233:k=HEAP[Ja];a=235;break;case 234:k=0;a=235;break;case 235:a=k>$a?229:236;break;case 236:a=HEAP[HEAP[d+4]+32]!=0?237:281;break;case 237:a=HEAP[HEAP[d+4]+48]==0?238:281;break;case 238:HEAP[HEAP[d+4]+48]=HEAP[f+20];a=281;break;case 239:a=_symtable_visit_expr(d,HEAP[f+4])==0?240:241;break;case 240:M=0;a=282;break;case 241:a=HEAP[HEAP[d+4]+48]==0?242:243;break;case 242:HEAP[HEAP[d+4]+48]=HEAP[f+20];a=243;break;case 243:var Yb= -HEAP[d+4],yb=HEAP[HEAP[d+4]+32];a=HEAP[f+4+4]!=0?244:249;break;case 244:HEAP[Yb+32]=yb|2;a=_symtable_visit_expr(d,HEAP[f+4+4])==0?245:246;break;case 245:M=0;a=282;break;case 246:a=HEAP[f+4+8]!=0?247:281;break;case 247:a=_symtable_visit_expr(d,HEAP[f+4+8])==0?248:281;break;case 248:M=0;a=282;break;case 249:HEAP[Yb+32]=yb|4;a=281;break;case 250:var fc=HEAP[f+4];ua=fc;ja=0;var zb=hb,jc=hb,c=250;a=262;break;case 251:bb=HEAP[ua+4+ja*4];qa=bb+20;P=_symtable_lookup(d,bb);a=P<0?252:253;break;case 252:M=0; -a=282;break;case 253:a=(P&10)!=0?254:259;break;case 254:var mc=qa;a=(P&2)!=0?255:256;break;case 255:_PyOS_snprintf(zb,256,__str224521,allocate([mc,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=257;break;case 256:_PyOS_snprintf(zb,256,__str234522,allocate([mc,0,0,0],["i8*",0,0,0],ALLOC_STACK));a=257;break;case 257:a=_symtable_warn(d,jc,HEAP[f+20])==0?258:259;break;case 258:M=0;a=282;break;case 259:a=_symtable_add_def(d,bb,1)==0?260:261;break;case 260:M=0;a=282;break;case 261:ja+=1;var Xb=ua,c=261;a=262;break; -case 262:a=(c==261?Xb:fc)!=0?263:264;break;case 263:j=HEAP[ua];a=265;break;case 264:j=0;a=265;break;case 265:a=j>ja?251:281;break;case 266:a=_symtable_visit_expr(d,HEAP[f+4])==0?267:281;break;case 267:M=0;a=282;break;case 268:a=_symtable_visit_expr(d,HEAP[f+4])==0?269:270;break;case 269:M=0;a=282;break;case 270:a=HEAP[f+4+4]!=0?271:273;break;case 271:a=_symtable_visit_expr(d,HEAP[f+4+4])==0?272:273;break;case 272:M=0;a=282;break;case 273:var qc=HEAP[f+4+8];mb=qc;Qa=0;c=273;a=277;break;case 274:a= -HEAP[mb+4+Qa*4];a=_symtable_visit_stmt(d,a)==0?275:276;break;case 275:M=0;a=282;break;case 276:Qa+=1;var tc=mb,c=276;a=277;break;case 277:a=(c==276?tc:qc)!=0?278:279;break;case 278:h=HEAP[mb];a=280;break;case 279:h=0;a=280;break;case 280:a=h>Qa?274:281;break;case 281:M=1;a=282;break;case 282:return c=M,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _symtable_visit_expr(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V,Q,Z,K,N;c=g;d=e;b=HEAP[d];b=b==1?1:b==2?9:b==3?13:b==4?15:b==5?37:b==6?43:b==7?59:b==8?67:b==9?79:b==10?81:b==11?77:b==12?83:b==13?88:b==14?98:b==15?122:b==22?143:b==21?135:b==18?124:b==19?126:b==20?130:151;break;case 1:var H=HEAP[d+4+4];v=H;t=0;a=1;b=5;break;case 2:b=HEAP[v+4+t*4];b=_symtable_visit_expr(c,b)==0?3:4;break;case 3:s=0;b=152;break;case 4:t+= -1;var ba=v,a=4;b=5;break;case 5:b=(a==4?ba:H)!=0?6:7;break;case 6:u=HEAP[v];b=8;break;case 7:u=0;b=8;break;case 8:b=u>t?2:151;break;case 9:b=_symtable_visit_expr(c,HEAP[d+4])==0?10:11;break;case 10:s=0;b=152;break;case 11:b=_symtable_visit_expr(c,HEAP[d+4+8])==0?12:151;break;case 12:s=0;b=152;break;case 13:b=_symtable_visit_expr(c,HEAP[d+4+4])==0?14:151;break;case 14:s=0;b=152;break;case 15:b=HEAP[_lambda]==0?16:17;break;case 16:a=_PyString_InternFromString(__str244523);HEAP[_lambda]=a;var W=HEAP[_lambda]== -0,a=16;b=18;break;case 17:var B=HEAP[_lambda]==0,a=17;b=18;break;case 18:b=(a==17?B:W)!=0?19:20;break;case 19:s=0;b=152;break;case 20:b=HEAP[HEAP[d+4]+12]!=0?21:29;break;case 21:var Y=HEAP[HEAP[d+4]+12];x=Y;w=0;a=21;b=25;break;case 22:b=HEAP[x+4+w*4];b=_symtable_visit_expr(c,b)==0?23:24;break;case 23:s=0;b=152;break;case 24:w+=1;var fa=x,a=24;b=25;break;case 25:b=(a==24?fa:Y)!=0?26:27;break;case 26:r=HEAP[x];b=28;break;case 27:r=0;b=28;break;case 28:b=r>w?22:29;break;case 29:b=_symtable_enter_block(c, -HEAP[_lambda],0,d,HEAP[d+24])==0?30:31;break;case 30:s=0;b=152;break;case 31:b=_symtable_visit_arguments(c,HEAP[d+4])==0?32:33;break;case 32:_symtable_exit_block(c,d);s=0;b=152;break;case 33:b=_symtable_visit_expr(c,HEAP[d+4+4])==0;var ha=_symtable_exit_block(c,d);b=b?34:35;break;case 34:s=0;b=152;break;case 35:b=ha==0?36:151;break;case 36:s=0;b=152;break;case 37:b=_symtable_visit_expr(c,HEAP[d+4])==0?38:39;break;case 38:s=0;b=152;break;case 39:b=_symtable_visit_expr(c,HEAP[d+4+4])==0?40:41;break; -case 40:s=0;b=152;break;case 41:b=_symtable_visit_expr(c,HEAP[d+4+8])==0?42:151;break;case 42:s=0;b=152;break;case 43:var la=HEAP[d+4];z=la;y=0;a=43;b=47;break;case 44:b=HEAP[z+4+y*4];b=_symtable_visit_expr(c,b)==0?45:46;break;case 45:s=0;b=152;break;case 46:y+=1;var ra=z,a=46;b=47;break;case 47:b=(a==46?ra:la)!=0?48:49;break;case 48:q=HEAP[z];b=50;break;case 49:q=0;b=50;break;case 50:b=q>y?44:51;break;case 51:var ya=HEAP[d+4+4];A=ya;C=0;a=51;b=55;break;case 52:b=HEAP[A+4+C*4];b=_symtable_visit_expr(c, -b)==0?53:54;break;case 53:s=0;b=152;break;case 54:C+=1;var Da=A,a=54;b=55;break;case 55:b=(a==54?Da:ya)!=0?56:57;break;case 56:p=HEAP[A];b=58;break;case 57:p=0;b=58;break;case 58:b=p>C?52:151;break;case 59:var Ua=HEAP[d+4];E=Ua;G=0;a=59;b=63;break;case 60:b=HEAP[E+4+G*4];b=_symtable_visit_expr(c,b)==0?61:62;break;case 61:s=0;b=152;break;case 62:G+=1;var Na=E,a=62;b=63;break;case 63:b=(a==62?Na:Ua)!=0?64:65;break;case 64:o=HEAP[E];b=66;break;case 65:o=0;b=66;break;case 66:b=o>G?60:151;break;case 67:b= -_symtable_visit_expr(c,HEAP[d+4])==0?68:69;break;case 68:s=0;b=152;break;case 69:var Pa=HEAP[d+4+4];R=Pa;D=0;a=69;b=73;break;case 70:b=HEAP[R+4+D*4];b=_symtable_visit_comprehension(c,b)==0?71:72;break;case 71:s=0;b=152;break;case 72:D+=1;var wa=R,a=72;b=73;break;case 73:b=(a==72?wa:Pa)!=0?74:75;break;case 74:n=HEAP[R];b=76;break;case 75:n=0;b=76;break;case 76:b=n>D?70:151;break;case 77:b=_symtable_visit_genexp(c,d)==0?78:151;break;case 78:s=0;b=152;break;case 79:b=_symtable_visit_setcomp(c,d)==0? -80:151;break;case 80:s=0;b=152;break;case 81:b=_symtable_visit_dictcomp(c,d)==0?82:151;break;case 82:s=0;b=152;break;case 83:b=HEAP[d+4]!=0?84:86;break;case 84:b=_symtable_visit_expr(c,HEAP[d+4])==0?85:86;break;case 85:s=0;b=152;break;case 86:b=HEAP[c+4]+40;HEAP[b]=HEAP[b]&-5|4;b=(HEAP[HEAP[c+4]+40]<<26>>>31&1)!=0?87:151;break;case 87:_PyErr_SetString(HEAP[_PyExc_SyntaxError],__str214520);_PyErr_SyntaxLocation(HEAP[c],HEAP[d+24]);s=0;b=152;break;case 88:b=_symtable_visit_expr(c,HEAP[d+4])==0?89:90; -break;case 89:s=0;b=152;break;case 90:var Ya=HEAP[d+4+8];L=Ya;M=0;a=90;b=94;break;case 91:b=HEAP[L+4+M*4];b=_symtable_visit_expr(c,b)==0?92:93;break;case 92:s=0;b=152;break;case 93:M+=1;var Ha=L,a=93;b=94;break;case 94:b=(a==93?Ha:Ya)!=0?95:96;break;case 95:m=HEAP[L];b=97;break;case 96:m=0;b=97;break;case 97:b=m>M?91:151;break;case 98:b=_symtable_visit_expr(c,HEAP[d+4])==0?99:100;break;case 99:s=0;b=152;break;case 100:var ta=HEAP[d+4+4];J=ta;I=0;a=100;b=104;break;case 101:b=HEAP[J+4+I*4];b=_symtable_visit_expr(c, -b)==0?102:103;break;case 102:s=0;b=152;break;case 103:I+=1;var Va=J,a=103;b=104;break;case 104:b=(a==103?Va:ta)!=0?105:106;break;case 105:l=HEAP[J];b=107;break;case 106:l=0;b=107;break;case 107:b=l>I?101:108;break;case 108:var Ia=HEAP[d+4+8];V=Ia;F=0;a=108;b=112;break;case 109:b=HEAP[V+4+F*4];b=_symtable_visit_keyword(c,b)==0?110:111;break;case 110:s=0;b=152;break;case 111:F+=1;var Wa=V,a=111;b=112;break;case 112:b=(a==111?Wa:Ia)!=0?113:114;break;case 113:k=HEAP[V];b=115;break;case 114:k=0;b=115; -break;case 115:b=k>F?109:116;break;case 116:b=HEAP[d+4+12]!=0?117:119;break;case 117:b=_symtable_visit_expr(c,HEAP[d+4+12])==0?118:119;break;case 118:s=0;b=152;break;case 119:b=HEAP[d+4+16]!=0?120:151;break;case 120:b=_symtable_visit_expr(c,HEAP[d+4+16])==0?121:151;break;case 121:s=0;b=152;break;case 122:b=_symtable_visit_expr(c,HEAP[d+4])==0?123:151;break;case 123:s=0;b=152;break;case 124:b=_symtable_visit_expr(c,HEAP[d+4])==0?125:151;break;case 125:s=0;b=152;break;case 126:b=_symtable_visit_expr(c, -HEAP[d+4])==0?127:128;break;case 127:s=0;b=152;break;case 128:b=_symtable_visit_slice(c,HEAP[d+4+4])==0?129:151;break;case 129:s=0;b=152;break;case 130:b=HEAP[d+4+4]==1?131:132;break;case 131:j=8;b=133;break;case 132:j=2;b=133;break;case 133:b=_symtable_add_def(c,HEAP[d+4],j)==0?134:151;break;case 134:s=0;b=152;break;case 135:var ia=HEAP[d+4];Z=ia;Q=0;a=135;b=139;break;case 136:b=HEAP[Z+4+Q*4];b=_symtable_visit_expr(c,b)==0?137:138;break;case 137:s=0;b=152;break;case 138:Q+=1;var Ba=Z,a=138;b=139; -break;case 139:b=(a==138?Ba:ia)!=0?140:141;break;case 140:h=HEAP[Z];b=142;break;case 141:h=0;b=142;break;case 142:b=h>Q?136:151;break;case 143:var Xa=HEAP[d+4];N=Xa;K=0;a=143;b=147;break;case 144:b=HEAP[N+4+K*4];b=_symtable_visit_expr(c,b)==0?145:146;break;case 145:s=0;b=152;break;case 146:K+=1;var Ta=N,a=146;b=147;break;case 147:b=(a==146?Ta:Xa)!=0?148:149;break;case 148:f=HEAP[N];b=150;break;case 149:f=0;b=150;break;case 150:b=f>K?144:151;break;case 151:s=1;b=152;break;case 152:return c=s;default:assert(0, -"bad label: "+b)}} -function _symtable_implicit_arg(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=_PyString_FromFormat(__str254524,allocate([e,0,0,0],["i32",0,0,0],ALLOC_STACK));b=d==0?1:2;break;case 1:c=0;b=9;break;case 2:b=_symtable_add_def(a,d,4)==0;HEAP[d]-=1;var f=HEAP[d]==0;b=b?3:6;break;case 3:b=f?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=9;break;case 6:b=f?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=8;break;case 8:c=1;b=9;break;case 9:return a=c;default:assert(0, -"bad label: "+b)}} -function _symtable_visit_params(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;l=0;c=-1;a=10;break;case 1:var m=a=HEAP[f+4+l*4];a=HEAP[a]==20?2:4;break;case 2:a=_symtable_add_def(d,HEAP[m+4],4)==0?3:9;break;case 3:k=0;a=18;break;case 4:a=HEAP[m]==22?5:8;break;case 5:a=h!=0?6:9;break;case 6:a=_symtable_implicit_arg(d,l)==0?7:9;break;case 7:k=0;a=18;break;case 8:_PyErr_SetString(HEAP[_PyExc_SyntaxError],__str264525);_PyErr_SyntaxLocation(HEAP[d],HEAP[HEAP[d+4]+44]);k=0; -a=18;break;case 9:l+=1;var n=f,c=9;a=10;break;case 10:a=(c==9?n:e)!=0?11:12;break;case 11:j=HEAP[f];a=13;break;case 12:j=0;a=13;break;case 13:a=j>l?1:14;break;case 14:a=h==0?15:17;break;case 15:a=_symtable_visit_params_nested(d,f)==0?16:17;break;case 16:k=0;a=18;break;case 17:k=1;a=18;break;case 18:return g=k;default:assert(0,"bad label: "+a)}} -function _symtable_visit_params_nested(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;j=0;a=-1;b=5;break;case 1:k=HEAP[d+4+j*4];b=HEAP[k]==22?2:4;break;case 2:b=_symtable_visit_params(c,HEAP[k+4],0)==0?3:4;break;case 3:h=0;b=10;break;case 4:j+=1;var l=d,a=4;b=5;break;case 5:b=(a==4?l:e)!=0?6:7;break;case 6:f=HEAP[d];b=8;break;case 7:f=0;b=8;break;case 8:b=f>j?1:9;break;case 9:h=1;b=10;break;case 10:return b=h;default:assert(0,"bad label: "+b)}} -function _symtable_visit_arguments(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[c]!=0?1:3;break;case 1:b=_symtable_visit_params(a,HEAP[c],1)==0?2:3;break;case 2:d=0;b=15;break;case 3:b=HEAP[c+4]!=0?4:7;break;case 4:b=_symtable_add_def(a,HEAP[c+4],4)==0?5:6;break;case 5:d=0;b=15;break;case 6:b=HEAP[a+4]+40;HEAP[b]=HEAP[b]&-9|8;b=7;break;case 7:b=HEAP[c+8]!=0?8:11;break;case 8:b=_symtable_add_def(a,HEAP[c+8],4)==0?9:10;break;case 9:d=0;b=15;break;case 10:b=HEAP[a+4]+40;HEAP[b]=HEAP[b]& --17|16;b=11;break;case 11:b=HEAP[c]!=0?12:14;break;case 12:b=_symtable_visit_params_nested(a,HEAP[c])==0?13:14;break;case 13:d=0;b=15;break;case 14:d=1;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}} -function _symtable_visit_excepthandler(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;b=HEAP[d+4]!=0?1:3;break;case 1:b=_symtable_visit_expr(c,HEAP[d+4])==0?2:3;break;case 2:h=0;b=15;break;case 3:b=HEAP[d+4+4]!=0?4:6;break;case 4:b=_symtable_visit_expr(c,HEAP[d+4+4])==0?5:6;break;case 5:h=0;b=15;break;case 6:var l=HEAP[d+4+8];k=l;j=0;a=6;b=10;break;case 7:b=HEAP[k+4+j*4];b=_symtable_visit_stmt(c,b)==0?8:9;break;case 8:h=0;b=15;break;case 9:j+=1;var m=k,a=9;b=10;break;case 10:b= -(a==9?m:l)!=0?11:12;break;case 11:f=HEAP[k];b=13;break;case 12:f=0;b=13;break;case 13:b=f>j?7:14;break;case 14:h=1;b=15;break;case 15:return a=h;default:assert(0,"bad label: "+b)}} -function _symtable_visit_alias(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;var m=b=e;b=HEAP[b+4]==0?1:2;break;case 1:d=HEAP[m];b=3;break;case 2:d=HEAP[m+4];b=3;break;case 3:h=d;j=h+20;k=b=_strchr(j,46);b=b!=0?4:6;break;case 4:f=_PyString_FromStringAndSize(j,k-j);b=f==0?5:7;break;case 5:c=0;b=19;break;case 6:f=h;HEAP[f]+=1;b=7;break;case 7:b=_strcmp(h+20,__str274526);var n=a;b=b!=0?8:11;break;case 8:l=_symtable_add_def(n,f,64);HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);b=10;break;case 10:c=l;b=19;break;case 11:b=HEAP[HEAP[n+4]+28]!=2?12:16;break;case 12:b=HEAP[HEAP[a+4]+44];b=_symtable_warn(a,__str284527,b)==0?13:16;break;case 13:HEAP[f]-=1;b=HEAP[f]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=15;break;case 15:c=0;b=19;break;case 16:HEAP[HEAP[a+4]+32]|=1;HEAP[f]-=1;b=HEAP[f]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=18;break;case 18:c=1;b=19;break;case 19:return a=c;default:assert(0,"bad label: "+b)}} -function _symtable_visit_comprehension(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;b=_symtable_visit_expr(c,HEAP[d])==0?1:2;break;case 1:h=0;b=13;break;case 2:b=_symtable_visit_expr(c,HEAP[d+4])==0?3:4;break;case 3:h=0;b=13;break;case 4:var l=HEAP[d+8];k=l;j=0;a=4;b=8;break;case 5:b=HEAP[k+4+j*4];b=_symtable_visit_expr(c,b)==0?6:7;break;case 6:h=0;b=13;break;case 7:j+=1;var m=k,a=7;b=8;break;case 8:b=(a==7?m:l)!=0?9:10;break;case 9:f=HEAP[k];b=11;break;case 10:f=0;b=11; -break;case 11:b=f>j?5:12;break;case 12:h=1;b=13;break;case 13:return a=h;default:assert(0,"bad label: "+b)}}function _symtable_visit_keyword(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=_symtable_visit_expr(g,HEAP[e+4])==0?1:2;break;case 1:a=0;b=3;break;case 2:a=1;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _symtable_visit_slice(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;b=HEAP[d];b=b==2?1:b==3?10:b==4?18:20;break;case 1:b=HEAP[d+4]!=0?2:4;break;case 2:b=_symtable_visit_expr(c,HEAP[d+4])==0?3:4;break;case 3:h=0;b=21;break;case 4:b=HEAP[d+4+4]!=0?5:7;break;case 5:b=_symtable_visit_expr(c,HEAP[d+4+4])==0?6:7;break;case 6:h=0;b=21;break;case 7:b=HEAP[d+4+8]!=0?8:20;break;case 8:b=_symtable_visit_expr(c,HEAP[d+4+8])==0?9:20;break;case 9:h=0;b=21;break;case 10:var l=HEAP[d+ -4];k=l;j=0;a=10;b=14;break;case 11:b=HEAP[k+4+j*4];b=_symtable_visit_slice(c,b)==0?12:13;break;case 12:h=0;b=21;break;case 13:j+=1;var m=k,a=13;b=14;break;case 14:b=(a==13?m:l)!=0?15:16;break;case 15:f=HEAP[k];b=17;break;case 16:f=0;b=17;break;case 17:b=f>j?11:20;break;case 18:b=_symtable_visit_expr(c,HEAP[d+4])==0?19:20;break;case 19:h=0;b=21;break;case 20:h=1;b=21;break;case 21:return a=h;default:assert(0,"bad label: "+b)}} -function _symtable_new_tmpname(g){var e=STACKTOP;STACKTOP+=256;_memset(e,0,256);var b;for(b=-1;;)switch(b){case -1:var a,c;b=e;var d;a=g;d=HEAP[a+4];HEAP[d+52]+=1;_PyOS_snprintf(b,256,__str294528,allocate([HEAP[d+52],0,0,0],["i32",0,0,0],ALLOC_STACK));d=_PyString_InternFromString(b);b=d==0?1:2;break;case 1:c=0;b=7;break;case 2:b=_symtable_add_def(a,d,2)==0?3:4;break;case 3:c=0;b=7;break;case 4:HEAP[d]-=1;b=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=6;break;case 6:c=1;b=7; -break;case 7:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _symtable_handle_comprehension(g,e,b,a,c,d){var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y;j=g;k=e;l=b;m=a;n=c;o=d;u=HEAP[k]==11;s=u==0;t=HEAP[m+4];f=_symtable_visit_expr(j,HEAP[t+4])==0?1:2;break;case 1:r=0;f=34;break;case 2:f=l==0?4:3;break;case 3:f=_symtable_enter_block(j,l,0,k,0)==0?4:5;break;case 4:r=0;f=34;break;case 5:f=HEAP[j+4]+40;HEAP[f]=(u&1)<<2&4|HEAP[f]&-5;f=_symtable_implicit_arg(j,0)==0?6:7;break;case 6:_symtable_exit_block(j,k);r=0;f=34;break; -case 7:f=s!=0?8:10;break;case 8:f=_symtable_new_tmpname(j)==0?9:10;break;case 9:_symtable_exit_block(j,k);r=0;f=34;break;case 10:f=_symtable_visit_expr(j,HEAP[t])==0?11:12;break;case 11:_symtable_exit_block(j,k);r=0;f=34;break;case 12:var z=HEAP[t+8];w=z;v=0;h=12;f=16;break;case 13:f=HEAP[w+4+v*4];f=_symtable_visit_expr(j,f)==0?14:15;break;case 14:_symtable_exit_block(j,k);r=0;f=34;break;case 15:v+=1;var C=w,h=15;f=16;break;case 16:f=(h==15?C:z)!=0?17:18;break;case 17:q=HEAP[w];f=19;break;case 18:q= -0;f=19;break;case 19:f=q>v?13:20;break;case 20:var A=m;y=A;x=1;h=20;f=24;break;case 21:f=HEAP[y+4+x*4];f=_symtable_visit_comprehension(j,f)==0?22:23;break;case 22:_symtable_exit_block(j,k);r=0;f=34;break;case 23:x+=1;var G=y,h=23;f=24;break;case 24:f=(h==23?G:A)!=0?25:26;break;case 25:p=HEAP[y];f=27;break;case 26:p=0;f=27;break;case 27:f=p>x?21:28;break;case 28:f=o!=0?29:31;break;case 29:f=_symtable_visit_expr(j,o)==0?30:31;break;case 30:_symtable_exit_block(j,k);r=0;f=34;break;case 31:f=_symtable_visit_expr(j, -n)==0;var E=_symtable_exit_block(j,k);f=f?32:33;break;case 32:r=0;f=34;break;case 33:r=E;f=34;break;case 34:return g=r;default:assert(0,"bad label: "+f)}} -function _symtable_visit_genexp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;var f=HEAP[c+4],h=HEAP[c+4+4];b=HEAP[_genexpr]==0?1:2;break;case 1:b=_PyString_InternFromString(__str304529);HEAP[_genexpr]=b;d=HEAP[_genexpr];b=3;break;case 2:d=HEAP[_genexpr];b=3;break;case 3:return a=_symtable_handle_comprehension(a,c,d,h,f,0);default:assert(0,"bad label: "+b)}} -function _symtable_visit_setcomp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;var f=HEAP[c+4],h=HEAP[c+4+4];b=HEAP[_setcomp]==0?1:2;break;case 1:b=_PyString_InternFromString(__str314530);HEAP[_setcomp]=b;d=HEAP[_setcomp];b=3;break;case 2:d=HEAP[_setcomp];b=3;break;case 3:return a=_symtable_handle_comprehension(a,c,d,h,f,0);default:assert(0,"bad label: "+b)}} -function _symtable_visit_dictcomp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;var f=HEAP[c+4+4],h=HEAP[c+4],j=HEAP[c+4+8];b=HEAP[_dictcomp]==0?1:2;break;case 1:b=_PyString_InternFromString(__str324531);HEAP[_dictcomp]=b;d=HEAP[_dictcomp];b=3;break;case 2:d=HEAP[_dictcomp];b=3;break;case 3:return a=_symtable_handle_comprehension(a,c,d,j,h,f);default:assert(0,"bad label: "+b)}} -function _PySys_GetObject(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[HEAP[HEAP[__PyThreadState_Current]+4]+12];e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:a=_PyDict_GetItemString(c,b);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PySys_GetFile(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f;b=g;c=e;d=0;f=_PySys_GetObject(b);b=f!=0?1:4;break;case 1:b=HEAP[f+4]==_PyFile_Type?3:2;break;case 2:b=_PyType_IsSubtype(HEAP[f+4],_PyFile_Type)!=0?3:4;break;case 3:var h=_PyFile_AsFile(f);d=h;a=3;b=5;break;case 4:var j=d,a=4;b=5;break;case 5:b=(a==4?j:h)==0?6:7;break;case 6:d=c;b=7;break;case 7:return a=d;default:assert(0,"bad label: "+b)}} -function _PySys_SetObject(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;var h=f=HEAP[HEAP[HEAP[__PyThreadState_Current]+4]+12],j=a;b=c==0?1:4;break;case 1:b=_PyDict_GetItemString(h,j)==0?2:3;break;case 2:d=0;b=5;break;case 3:d=_PyDict_DelItemString(f,a);b=5;break;case 4:d=_PyDict_SetItemString(h,j,c);b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _sys_displayhook(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=e;f=_PyDict_GetItemString(HEAP[HEAP[HEAP[__PyThreadState_Current]+4]+8],__str4536);b=f==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str14537);c=0;b=17;break;case 2:b=a==__Py_NoneStruct?3:4;break;case 3:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;b=17;break;case 4:b=_PyObject_SetAttrString(f,__str24538,__Py_NoneStruct)!=0?5:6;break;case 5:c=0;b=17;break;case 6:b=_Py_FlushLine()!=0?7:8;break;case 7:c= -0;b=17;break;case 8:d=_PySys_GetObject(__str34539);b=d==0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_RuntimeError],__str44540);c=0;b=17;break;case 10:b=_PyFile_WriteObject(a,d,0)!=0?11:12;break;case 11:c=0;b=17;break;case 12:_PyFile_SoftSpace(d,1);b=_Py_FlushLine()!=0?13:14;break;case 13:c=0;b=17;break;case 14:b=_PyObject_SetAttrString(f,__str24538,a)!=0?15:16;break;case 15:c=0;b=17;break;case 16:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;b=17;break;case 17:return b=c;default:assert(0,"bad label: "+ -b)}} -function _sys_excepthook(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4,h=b+8;a=_PyArg_UnpackTuple(e,__str54542,3,3,allocate([d,0,0,0,f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:_PyErr_Display(HEAP[d],HEAP[f],HEAP[h]);HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _sys_exc_info(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c;c=HEAP[__PyThreadState_Current];g=HEAP[c+60]!=0?1:2;break;case 1:a=HEAP[c+60];g=3;break;case 2:a=__Py_NoneStruct;g=3;break;case 3:g=HEAP[c+56]!=0?4:5;break;case 4:b=HEAP[c+56];g=6;break;case 5:b=__Py_NoneStruct;g=6;break;case 6:g=HEAP[c+52]!=0?7:8;break;case 7:e=HEAP[c+52];g=9;break;case 8:e=__Py_NoneStruct;g=9;break;case 9:return g=_Py_BuildValue(__str64543,allocate([e,0,0,0,b,0,0,0,a,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*", -0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));default:assert(0,"bad label: "+g)}} -function _sys_exc_clear(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c;g=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:g=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str74544,1)<0?2:3;break;case 2:e=0;g=13;break;case 3:g=HEAP[__PyThreadState_Current];b=HEAP[g+52];a=HEAP[g+56];c=HEAP[g+60];HEAP[g+52]=0;HEAP[g+56]=0;HEAP[g+60]=0;g=b!=0?4:6;break;case 4:HEAP[b]-=1;g=HEAP[b]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=6;break;case 6:g=a!=0?7:9;break;case 7:HEAP[a]-=1;g=HEAP[a]==0? -8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=9;break;case 9:g=c!=0?10:12;break;case 10:HEAP[c]-=1;g=HEAP[c]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=12;break;case 12:_PySys_SetObject(__str84545,__Py_NoneStruct);_PySys_SetObject(__str94546,__Py_NoneStruct);_PySys_SetObject(__str104547,__Py_NoneStruct);HEAP[__Py_NoneStruct]+=1;e=__Py_NoneStruct;g=13;break;case 13:return e;default:assert(0,"bad label: "+g)}} -function _sys_exit(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=e;HEAP[d]=0;a=_PyArg_UnpackTuple(a,__str114548,0,1,allocate([d,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:_PyErr_SetObject(HEAP[_PyExc_SystemExit],HEAP[d]);c=0;a=3;break;case 3:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _sys_getdefaultencoding(){var g=_PyUnicodeUCS2_GetDefaultEncoding();return _PyString_FromString(g)} -function _sys_setdefaultencoding(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=_PyArg_ParseTuple(e,__str124550,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=_PyUnicodeUCS2_SetDefaultEncoding(HEAP[d])!=0?3:4;break;case 3:c=0;a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _sys_getfilesystemencoding(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[_Py_FileSystemDefaultEncoding]!=0?1:2;break;case 1:e=_PyString_FromString(HEAP[_Py_FileSystemDefaultEncoding]);g=3;break;case 2:HEAP[__Py_NoneStruct]+=1;e=__Py_NoneStruct;g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}} -function _trace_init(){var g,e=null;for(g=-1;;)switch(g){case -1:var b,a,c;c=0;e=-1;g=6;break;case 1:g=HEAP[_whatstrings+c*4]==0?2:5;break;case 2:a=_PyString_InternFromString(HEAP[_whatnames_9004+c*4]);g=a==0?3:4;break;case 3:b=-1;g=8;break;case 4:HEAP[_whatstrings+c*4]=a;g=5;break;case 5:var d=c+1;c=d;e=5;g=6;break;case 6:g=(e==5?d:0)<=6?1:7;break;case 7:b=0;g=8;break;case 8:return g=b;default:assert(0,"bad label: "+g)}} -function _call_trampoline(g,e,b,a,c){for(g=-1;;)switch(g){case -1:var d,f,h,j,k,l,m,n;d=e;f=b;h=a;j=c;l=_PyTuple_New(3);g=l==0?1:2;break;case 1:k=0;g=9;break;case 2:HEAP[f]+=1;m=HEAP[_whatstrings+h*4];HEAP[m]+=1;g=j==0?3:4;break;case 3:j=__Py_NoneStruct;g=4;break;case 4:HEAP[j]+=1;HEAP[l+12]=f;HEAP[l+12+4]=m;HEAP[l+12+8]=j;_PyFrame_FastToLocals(f);n=_PyEval_CallObjectWithKeywords(d,l,0);_PyFrame_LocalsToFast(f,1);g=n==0?5:6;break;case 5:_PyTraceBack_Here(f);g=6;break;case 6:HEAP[l]-=1;g=HEAP[l]== -0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);g=8;break;case 8:k=n;g=9;break;case 9:return e=k;default:assert(0,"bad label: "+g)}} -function _profile_trampoline(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;l=HEAP[f+56];c=j==0?1:2;break;case 1:j=__Py_NoneStruct;c=2;break;case 2:m=c=_call_trampoline(l,d,f,h,j);c=c==0?3:4;break;case 3:_PyEval_SetProfile(0,0);k=-1;c=7;break;case 4:HEAP[m]-=1;c=HEAP[m]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=6;break;case 6:k=0;c=7;break;case 7:return g=k;default:assert(0,"bad label: "+c)}} -function _trace_trampoline(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p;f=g;h=e;j=b;k=a;m=HEAP[h+56];c=j==0?1:2;break;case 1:var q=f;n=q;d=1;c=3;break;case 2:var r=HEAP[h+40];n=r;d=2;c=3;break;case 3:c=(d==2?r:q)==0?4:5;break;case 4:l=0;c=18;break;case 5:o=_call_trampoline(m,n,h,j,k);c=o==0?6:10;break;case 6:_PyEval_SetTrace(0,0);c=HEAP[h+40]!=0?7:9;break;case 7:c=HEAP[h+40];HEAP[c]-=1;c=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[h+40]+4]+24]](HEAP[h+40]); -c=9;break;case 9:HEAP[h+40]=0;l=-1;c=18;break;case 10:c=o!=__Py_NoneStruct?11:15;break;case 11:p=HEAP[h+40];HEAP[h+40]=0;c=p!=0?12:14;break;case 12:HEAP[p]-=1;c=HEAP[p]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=14;break;case 14:HEAP[h+40]=o;c=17;break;case 15:HEAP[o]-=1;c=HEAP[o]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);c=17;break;case 17:l=0;c=18;break;case 18:return g=l;default:assert(0,"bad label: "+c)}} -function _sys_settrace(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=e;b=_trace_init()==-1?1:2;break;case 1:c=0;b=6;break;case 2:b=a==__Py_NoneStruct?3:4;break;case 3:_PyEval_SetTrace(0,0);b=5;break;case 4:_PyEval_SetTrace(178,a);b=5;break;case 5:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;b=6;break;case 6:return b=c;default:assert(0,"bad label: "+b)}} -function _sys_gettrace(){var g;for(g=-1;;)switch(g){case -1:var e;e=HEAP[HEAP[__PyThreadState_Current]+36];g=e==0?1:2;break;case 1:e=__Py_NoneStruct;g=2;break;case 2:return HEAP[e]+=1,g=e;default:assert(0,"bad label: "+g)}} -function _sys_setprofile(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=e;b=_trace_init()==-1?1:2;break;case 1:c=0;b=6;break;case 2:b=a==__Py_NoneStruct?3:4;break;case 3:_PyEval_SetProfile(0,0);b=5;break;case 4:_PyEval_SetProfile(180,a);b=5;break;case 5:HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;b=6;break;case 6:return b=c;default:assert(0,"bad label: "+b)}} -function _sys_getprofile(){var g;for(g=-1;;)switch(g){case -1:var e;e=HEAP[HEAP[__PyThreadState_Current]+32];g=e==0?1:2;break;case 1:e=__Py_NoneStruct;g=2;break;case 2:return HEAP[e]+=1,g=e;default:assert(0,"bad label: "+g)}} -function _sys_setcheckinterval(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=_PyArg_ParseTuple(e,__str204558,allocate([__Py_CheckInterval,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:a=0;b=3;break;case 2:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}}function _sys_getcheckinterval(){return _PyInt_FromLong(HEAP[__Py_CheckInterval])} -function _sys_setrecursionlimit(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b;a=_PyArg_ParseTuple(e,__str214559,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=HEAP[d]<=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_ValueError],__str224560);c=0;a=5;break;case 4:_Py_SetRecursionLimit(HEAP[d]);HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _sys_getrecursionlimit(){var g=_Py_GetRecursionLimit();return _PyInt_FromLong(g)} -function _sys_setdlopenflags(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f;a=e;f=HEAP[__PyThreadState_Current];a=_PyArg_ParseTuple(a,__str234561,allocate([d,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=5;break;case 2:a=f==0?3:4;break;case 3:c=0;a=5;break;case 4:HEAP[HEAP[f+4]+36]=HEAP[d];HEAP[__Py_NoneStruct]+=1;c=__Py_NoneStruct;a=5;break;case 5:return STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _sys_getdlopenflags(){var g;for(g=-1;;)switch(g){case -1:var e,b;b=HEAP[__PyThreadState_Current];g=b==0?1:2;break;case 1:e=0;g=3;break;case 2:e=_PyInt_FromLong(HEAP[HEAP[b+4]+36]);g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}} -function _sys_getsizeof(g,e,b){g=STACKTOP;STACKTOP+=8;_memset(g,0,8);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j=g,k=g+4,l,m;a=e;d=b;h=0;HEAP[k]=0;a=_PyArg_ParseTupleAndKeywords(a,d,__str244562,_kwlist_9277,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=27;break;case 2:a=HEAP[_gc_head_size_9276]==0?3:5;break;case 3:a=_PyInt_FromSsize_t(12);HEAP[_gc_head_size_9276]=a;a=HEAP[_gc_head_size_9276]==0?4:5;break; -case 4:f=0;a=27;break;case 5:a=_PyType_Ready(HEAP[HEAP[j]+4])<0?6:7;break;case 6:f=0;a=27;break;case 7:a=HEAP[HEAP[j]+4]==_PyInstance_Type?8:9;break;case 8:var n=_PyInt_FromSsize_t(HEAP[_PyInstance_Type+16]);h=n;c=8;a=15;break;case 9:l=__PyObject_LookupSpecial(HEAP[j],__str274565,_str__sizeof___9275);a=l==0?10:12;break;case 10:a=_PyErr_Occurred()==0?11:14;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError],__str284566,allocate([HEAP[HEAP[HEAP[j]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=14;break; -case 12:h=_PyObject_CallFunctionObjArgs(l,allocate(4,"i8*",ALLOC_STACK));HEAP[l]-=1;a=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=14;break;case 14:var o=h,c=14;a=15;break;case 15:a=(c==14?o:n)!=0?19:16;break;case 16:a=HEAP[k]==0?19:17;break;case 17:a=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])==0?19:18;break;case 18:_PyErr_Clear();HEAP[HEAP[k]]+=1;f=HEAP[k];a=27;break;case 19:a=h==0?20:21;break;case 20:f=h;a=27;break;case 21:a=(HEAP[HEAP[HEAP[j]+4]+84]&16384)!=0?22: -26;break;case 22:a=HEAP[HEAP[HEAP[j]+4]+164]==0?24:23;break;case 23:a=FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+164]](HEAP[j])!=0?24:26;break;case 24:m=h;h=_PyNumber_Add(m,HEAP[_gc_head_size_9276]);HEAP[m]-=1;a=HEAP[m]==0?25:26;break;case 25:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=26;break;case 26:f=h;a=27;break;case 27:return e=f,STACKTOP=g,e;default:assert(0,"bad label: "+a)}}function _sys_getrefcount(g,e){return _PyInt_FromSsize_t(HEAP[e])} -function _sys_getframe(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h=b;a=e;f=HEAP[HEAP[__PyThreadState_Current]+8];HEAP[h]=-1;a=_PyArg_ParseTuple(a,__str294567,allocate([h,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:3;break;case 1:d=0;a=9;break;case 2:var j=HEAP[f+12];f=j;var k=HEAP[h]-1;HEAP[h]=k;c=2;a=4;break;case 3:var l=HEAP[h],m=f,c=3;a=4;break;case 4:var n=c==3?m:j;a=(c==3?l:k)<=0?6:5;break;case 5:a=n!=0?2:7;break;case 6:a=n==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str304568);d=0;a=9;break;case 8:HEAP[f]+=1;d=f;a=9;break;case 9:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _sys_current_frames(){return __PyThread_CurrentFrames()} -function _sys_call_tracing(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f=b+4;a=_PyArg_ParseTuple(e,__str314569,allocate([d,0,0,0,_PyTuple_Type,0,0,0,f,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:c=0;a=3;break;case 2:c=__PyEval_CallTracing(HEAP[d],HEAP[f]);a=3;break;case 3:return a=c,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _sys_clear_type_cache(){_PyType_ClearCache();HEAP[__Py_NoneStruct]+=1;return __Py_NoneStruct} -function _list_builtin_module_names(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d;b=_PyList_New(0);g=b==0?1:2;break;case 1:e=0;g=17;break;case 2:a=0;g=7;break;case 3:c=_PyString_FromString(HEAP[HEAP[_PyImport_Inittab]+8*a]);g=c==0?8:4;break;case 4:_PyList_Append(b,c);HEAP[c]-=1;g=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);g=6;break;case 6:a+=1;g=7;break;case 7:g=HEAP[HEAP[_PyImport_Inittab]+8*a]!=0?3:8;break;case 8:g=_PyList_Sort(b);var f=b;g=g!=0?9:12;break;case 9:HEAP[b]= -HEAP[f]-1;g=HEAP[b]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=11;break;case 11:b=0;g=16;break;case 12:g=f!=0?13:16;break;case 13:d=_PyList_AsTuple(b);HEAP[b]-=1;g=HEAP[b]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);g=15;break;case 15:b=d;g=16;break;case 16:e=b;g=17;break;case 17:return e;default:assert(0,"bad label: "+g)}} -function _PySys_ResetWarnOptions(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_warnoptions]==0?3:1;break;case 1:g=(HEAP[HEAP[HEAP[_warnoptions]+4]+84]&33554432)==0?3:2;break;case 2:_PyList_SetSlice(HEAP[_warnoptions],0,HEAP[HEAP[_warnoptions]+8],0);g=3;break;case 3:return;default:assert(0,"bad label: "+g)}} -function _PySys_AddWarnOption(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[_warnoptions]==0?5:1;break;case 1:e=(HEAP[HEAP[HEAP[_warnoptions]+4]+84]&33554432)==0?2:6;break;case 2:e=HEAP[_warnoptions]!=0?3:5;break;case 3:e=HEAP[_warnoptions];HEAP[e]-=1;e=HEAP[e]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[_warnoptions]+4]+24]](HEAP[_warnoptions]);e=5;break;case 5:e=_PyList_New(0);HEAP[_warnoptions]=e;e=e==0?9:6;break;case 6:a=e=_PyString_FromString(b);e=e!=0?7:9;break;case 7:_PyList_Append(HEAP[_warnoptions], -a);HEAP[a]-=1;e=HEAP[a]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=9;break;case 9:return;default:assert(0,"bad label: "+e)}}function _PySys_HasWarnOptions(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[_warnoptions]==0?3:1;break;case 1:g=_PyList_Size(HEAP[_warnoptions])<=0?3:2;break;case 2:e=1;g=4;break;case 3:e=0;g=4;break;case 4:return g=e;default:assert(0,"bad label: "+g)}} -function __check_and_flush(g){var e;for(e=-1;;)switch(e){case -1:var b,a;e=g;a=_ferror(e);e=_fflush(e)!=0?2:1;break;case 1:e=a!=0?2:3;break;case 2:b=-1;e=4;break;case 3:b=0;e=4;break;case 4:return g=b;default:assert(0,"bad label: "+e)}} -function _svnversion_init(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_svn_initialized_b]!=0?2:1;break;case 1:HEAP[_svn_initialized_b]=1;_llvm_memset_p0i8_i32(_branch,0,1,1,0);_llvm_memcpy_p0i8_p0i8_i32(_shortbranch,__str564594,8,1,0);HEAP[_svn_revision]=__str554593;g=2;break;case 2:return;default:assert(0,"bad label: "+g)}}function _Py_SubversionRevision(){_svnversion_init();return HEAP[_svn_revision]}function _Py_SubversionShortBranch(){_svnversion_init();return _shortbranch} -function _make_flags(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;b=0;a=_PyStructSequence_New(_FlagsType);g=a==0?1:2;break;case 1:e=0;g=5;break;case 2:g=a;var c=b,d=_PyInt_FromLong(HEAP[_Py_DebugFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_Py3kWarningFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_DivisionWarningFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[__Py_QnewFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_InspectFlag]);HEAP[g+ -12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_InteractiveFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_OptimizeFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_DontWriteBytecodeFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_NoUserSiteDirectory]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_NoSiteFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_IgnoreEnvironmentFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_TabcheckFlag]); -HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_VerboseFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_UnicodeFlag]);HEAP[g+12+c*4]=d;b+=1;g=a;c=b;d=_PyInt_FromLong(HEAP[_Py_BytesWarningFlag]);HEAP[g+12+c*4]=d;b+=1;g=_PyErr_Occurred()!=0?3:4;break;case 3:e=0;g=5;break;case 4:e=a;g=5;break;case 5:return e;default:assert(0,"bad label: "+g)}} -function _make_version_info(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d;c=0;b=_PyStructSequence_New(_VersionInfoType);g=b==0?1:2;break;case 1:e=0;g=8;break;case 2:a=__str984636;g=b;var f=c,h=_PyInt_FromLong(2);HEAP[g+12+f*4]=h;c+=1;g=b;f=c;h=_PyInt_FromLong(7);HEAP[g+12+f*4]=h;c+=1;g=b;f=c;h=_PyInt_FromLong(2);HEAP[g+12+f*4]=h;c+=1;g=b;f=c;a=_PyString_FromString(a);HEAP[g+12+f*4]=a;c+=1;a=b;g=c;f=_PyInt_FromLong(0);HEAP[a+12+g*4]=f;c+=1;g=_PyErr_Occurred();a=b;g=g!=0?3:7;break;case 3:g=a!= -0?4:6;break;case 4:d=b;b=0;HEAP[d]-=1;g=HEAP[d]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);g=6;break;case 6:e=0;g=8;break;case 7:e=a;g=8;break;case 8:return e;default:assert(0,"bad label: "+g)}} -function __PySys_Init(){var g=STACKTOP;STACKTOP+=100;_memset(g,0,100);var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l=g,m=g+96,n;c=_Py_InitModule4(__str994637,_sys_methods,_sys_doc,0,1013);e=c==0?1:2;break;case 1:a=0;e=119;break;case 2:f=_PyModule_GetDict(c);e=_fileno(HEAP[_stdin]);e=___01fstat64_(e,l)==0?3:5;break;case 3:e=(HEAP[l+16]&61440)==16384?4:5;break;case 4:throw _PySys_WriteStderr(__str1004638,allocate(1,"i32",ALLOC_STACK)),_exit(1),"Reached an unreachable!";case 5:h=_PyFile_FromFile(HEAP[_stdin], -__str1014639,__str1024640,0);j=_PyFile_FromFile(HEAP[_stdout],__str1034641,__str1044642,182);k=_PyFile_FromFile(HEAP[_stderr],__str1054643,__str1044642,182);e=_PyErr_Occurred()!=0?6:7;break;case 6:a=0;e=119;break;case 7:_PyDict_SetItemString(f,__str1064644,h);_PyDict_SetItemString(f,__str34539,j);_PyDict_SetItemString(f,__str1074645,k);_PyDict_SetItemString(f,__str1084646,h);_PyDict_SetItemString(f,__str1094647,j);_PyDict_SetItemString(f,__str1104648,k);e=_PyDict_GetItemString(f,__str354573);_PyDict_SetItemString(f, -__str1114649,e);e=_PyDict_GetItemString(f,__str54542);_PyDict_SetItemString(f,__str1124650,e);e=h!=0?8:10;break;case 8:HEAP[h]-=1;e=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=10;break;case 10:e=j!=0?11:13;break;case 11:HEAP[j]-=1;e=HEAP[j]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=13;break;case 13:e=k!=0?14:16;break;case 14:HEAP[k]-=1;e=HEAP[k]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=16;break;case 16:d=_Py_GetVersion();d=e=_PyString_FromString(d); -e=e!=0?17:20;break;case 17:_PyDict_SetItemString(f,__str1134651,d);e=d!=0?18:20;break;case 18:HEAP[d]-=1;e=HEAP[d]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=20;break;case 20:d=e=_PyInt_FromLong(34013936);e=e!=0?21:24;break;case 21:_PyDict_SetItemString(f,__str1144652,d);e=d!=0?22:24;break;case 22:HEAP[d]-=1;e=HEAP[d]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=24;break;case 24:_svnversion_init();d=e=_Py_BuildValue(__str1154653,allocate([__str1164654,0,0,0,_branch, -0,0,0,HEAP[_svn_revision],0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=e!=0?25:28;break;case 25:_PyDict_SetItemString(f,__str1174655,d);e=d!=0?26:28;break;case 26:HEAP[d]-=1;e=HEAP[d]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=28;break;case 28:d=__Py_hgversion();e=__Py_hgidentifier();d=e=_Py_BuildValue(__str1184656,allocate([__str1164654,0,0,0,e,0,0,0,d,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=e!=0?29:32;break;case 29:_PyDict_SetItemString(f, -__str1194657,d);e=d!=0?30:32;break;case 30:HEAP[d]-=1;e=HEAP[d]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=32;break;case 32:d=e=_PyBool_FromLong(HEAP[_Py_DontWriteBytecodeFlag]);e=e!=0?33:36;break;case 33:_PyDict_SetItemString(f,__str704608,d);e=d!=0?34:36;break;case 34:HEAP[d]-=1;e=HEAP[d]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=36;break;case 36:d=e=_PyInt_FromLong(1013);e=e!=0?37:40;break;case 37:_PyDict_SetItemString(f,__str1204658,d);e=d!=0?38:40;break; -case 38:HEAP[d]-=1;e=HEAP[d]==0?39:40;break;case 39:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=40;break;case 40:d=_Py_GetCopyright();d=e=_PyString_FromString(d);e=e!=0?41:44;break;case 41:_PyDict_SetItemString(f,__str1214659,d);e=d!=0?42:44;break;case 42:HEAP[d]-=1;e=HEAP[d]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=44;break;case 44:d=_Py_GetPlatform();d=e=_PyString_FromString(d);e=e!=0?45:48;break;case 45:_PyDict_SetItemString(f,__str1224660,d);e=d!=0?46:48;break;case 46:HEAP[d]-= -1;e=HEAP[d]==0?47:48;break;case 47:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=48;break;case 48:d=_Py_GetProgramFullPath();d=e=_PyString_FromString(d);e=e!=0?49:52;break;case 49:_PyDict_SetItemString(f,__str1234661,d);e=d!=0?50:52;break;case 50:HEAP[d]-=1;e=HEAP[d]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=52;break;case 52:d=_Py_GetPrefix();d=e=_PyString_FromString(d);e=e!=0?53:56;break;case 53:_PyDict_SetItemString(f,__str1244662,d);e=d!=0?54:56;break;case 54:HEAP[d]-=1;e=HEAP[d]== -0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=56;break;case 56:d=_Py_GetExecPrefix();d=e=_PyString_FromString(d);e=e!=0?57:60;break;case 57:_PyDict_SetItemString(f,__str1254663,d);e=d!=0?58:60;break;case 58:HEAP[d]-=1;e=HEAP[d]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=60;break;case 60:d=e=_PyInt_FromSsize_t(2147483647);e=e!=0?61:64;break;case 61:_PyDict_SetItemString(f,__str1264664,d);e=d!=0?62:64;break;case 62:HEAP[d]-=1;e=HEAP[d]==0?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[d+ -4]+24]](d);e=64;break;case 64:d=_PyInt_GetMax();d=e=_PyInt_FromLong(d);e=e!=0?65:68;break;case 65:_PyDict_SetItemString(f,__str1274665,d);e=d!=0?66:68;break;case 66:HEAP[d]-=1;e=HEAP[d]==0?67:68;break;case 67:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=68;break;case 68:d=e=_PyBool_FromLong(HEAP[_Py_Py3kWarningFlag]);e=e!=0?69:72;break;case 69:_PyDict_SetItemString(f,__str1284666,d);e=d!=0?70:72;break;case 70:HEAP[d]-=1;e=HEAP[d]==0?71:72;break;case 71:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=72;break; -case 72:d=e=_PyFloat_GetInfo();e=e!=0?73:76;break;case 73:_PyDict_SetItemString(f,__str1294667,d);e=d!=0?74:76;break;case 74:HEAP[d]-=1;e=HEAP[d]==0?75:76;break;case 75:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=76;break;case 76:d=e=_PyLong_GetInfo();e=e!=0?77:80;break;case 77:_PyDict_SetItemString(f,__str1304668,d);e=d!=0?78:80;break;case 78:HEAP[d]-=1;e=HEAP[d]==0?79:80;break;case 79:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=80;break;case 80:d=_PyUnicodeUCS2_GetMax();d=e=_PyInt_FromLong(d);e=e!=0?81: -84;break;case 81:_PyDict_SetItemString(f,__str1314669,d);e=d!=0?82:84;break;case 82:HEAP[d]-=1;e=HEAP[d]==0?83:84;break;case 83:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=84;break;case 84:d=e=_list_builtin_module_names();e=e!=0?85:88;break;case 85:_PyDict_SetItemString(f,__str1324670,d);e=d!=0?86:88;break;case 86:HEAP[d]-=1;e=HEAP[d]==0?87:88;break;case 87:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=88;break;case 88:HEAP[m]=1;e=m;e=HEAP[e]==0?89:90;break;case 89:n=__str1334671;e=91;break;case 90:n=__str1344672; -e=91;break;case 91:d=e=_PyString_FromString(n);e=e!=0?92:95;break;case 92:_PyDict_SetItemString(f,__str1354673,d);e=d!=0?93:95;break;case 93:HEAP[d]-=1;e=HEAP[d]==0?94:95;break;case 94:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=95;break;case 95:e=HEAP[_warnoptions]==0?96:97;break;case 96:var o=_PyList_New(0);HEAP[_warnoptions]=o;b=96;e=98;break;case 97:HEAP[HEAP[_warnoptions]]+=1;var p=HEAP[_warnoptions],b=97;e=98;break;case 98:e=(b==97?p:o)!=0?99:100;break;case 99:_PyDict_SetItemString(f,__str1364674, -HEAP[_warnoptions]);e=100;break;case 100:e=HEAP[_VersionInfoType+12]==0?101:102;break;case 101:_PyStructSequence_InitType(_VersionInfoType,_version_info_desc);e=102;break;case 102:d=e=_make_version_info();e=e!=0?103:106;break;case 103:_PyDict_SetItemString(f,__str1374675,d);e=d!=0?104:106;break;case 104:HEAP[d]-=1;e=HEAP[d]==0?105:106;break;case 105:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=106;break;case 106:HEAP[_VersionInfoType+24+124]=0;HEAP[_VersionInfoType+24+132]=0;e=HEAP[_FlagsType+12]==0?107: -108;break;case 107:_PyStructSequence_InitType(_FlagsType,_flags_desc);e=108;break;case 108:d=e=_make_flags();e=e!=0?109:112;break;case 109:_PyDict_SetItemString(f,__str1384676,d);e=d!=0?110:112;break;case 110:HEAP[d]-=1;e=HEAP[d]==0?111:112;break;case 111:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=112;break;case 112:HEAP[_FlagsType+24+124]=0;HEAP[_FlagsType+24+132]=0;d=e=_PyString_FromString(__str1394677);e=e!=0?113:116;break;case 113:_PyDict_SetItemString(f,__str1404678,d);e=d!=0?114:116;break;case 114:HEAP[d]-= -1;e=HEAP[d]==0?115:116;break;case 115:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=116;break;case 116:e=_PyErr_Occurred()!=0?117:118;break;case 117:a=0;e=119;break;case 118:a=c;e=119;break;case 119:return b=a,STACKTOP=g,b;default:assert(0,"bad label: "+e)}} -function _makepathobject(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k;a=g;c=58;b=1;h=a;h=e=_strchr(h,c);var l=b;e!=0?(b=-1,e=1):(b=-1,e=2);break;case 1:b=(b==1?m:l)+1;h+=1;h=e=_strchr(h,c);var m=b;e!=0?e=b=1:(b=1,e=2);break;case 2:j=e=_PyList_New(b==-1?l:m);e=e==0?3:4;break;case 3:d=0;e=14;break;case 4:f=0;e=5;break;case 5:h=e=_strchr(a,c);e=e==0?6:7;break;case 6:h=_strchr(a,0);e=7;break;case 7:k=e=_PyString_FromStringAndSize(a,h-a);var n=j;e=e==0?8:11;break;case 8:HEAP[j]=HEAP[n]- -1;e=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);e=10;break;case 10:d=0;e=14;break;case 11:_PyList_SetItem(n,f,k);e=HEAP[h]==0?13:12;break;case 12:a=h+1;f+=1;e=5;break;case 13:d=j;e=14;break;case 14:return g=d;default:assert(0,"bad label: "+e)}} -function _PySys_SetPath(g){var e;for(e=-1;;)switch(e){case -1:var b;b=_makepathobject(g);e=b==0?1:2;break;case 1:throw _Py_FatalError(__str1414679),"Reached an unreachable!";case 2:e=_PySys_SetObject(__str1424680,b)!=0?3:4;break;case 3:throw _Py_FatalError(__str1434681),"Reached an unreachable!";case 4:HEAP[b]-=1;e=HEAP[b]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[b+4]+24]](b);e=6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _makeargvobject(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a<=0?2:1;break;case 1:b=c==0?2:3;break;case 2:c=_empty_argv_10134;a=1;b=3;break;case 3:d=b=_PyList_New(a);b=b!=0?4:11;break;case 4:f=0;b=10;break;case 5:h=_PyString_FromString(HEAP[c+4*f]);var j=d;b=h==0?6:9;break;case 6:HEAP[d]=HEAP[j]-1;b=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=8;break;case 8:d=0;b=11;break;case 9:_PyList_SetItem(j,f,h);f+=1;b=10;break;case 10:b=f0?7:24;break;case 7:c=n!=0?8:10;break;case 8:c=_strcmp(n,__str1474685)!=0?9:10;break;case 9:var t=_readlink(n,r,4096);s=t;d=9;c=11;break;case 10:var v=s,d=10;c=11;break;case 11:c=(d==10?v:t)>0?12:18;break;case 12:HEAP[r+s]=0;var w=r;c=HEAP[r]==47?13:14;break;case 13:n=w;c=18;break;case 14:c=_strchr(w,47)!=0?15:18;break;case 15:c=_strrchr(n,47);c=c==0?16:17;break;case 16:n=r;c=18;break;case 17:_strcpy(u,n);c=_strrchr(u,47);_strcpy(c+1,r);n=u;c=18;break;case 18:c=f>0?19:24;break; -case 19:c=n!=0?20:24;break;case 20:c=_strcmp(n,__str1474685)!=0?21:24;break;case 21:c=_realpath(n,k)!=0?22:23;break;case 22:n=k;c=23;break;case 23:var x=_strrchr(n,47);o=x;d=23;c=25;break;case 24:var y=o,d=24;c=25;break;case 25:c=(d==24?y:x)!=0?26:28;break;case 26:p=o+1-n;c=p>1?27:28;break;case 27:p-=1;c=28;break;case 28:q=c=_PyString_FromStringAndSize(n,p);c=c==0?29:30;break;case 29:throw _Py_FatalError(__str1484686),"Reached an unreachable!";case 30:c=_PyList_Insert(m,0,q)<0?31:32;break;case 31:throw _Py_FatalError(__str1494687), -"Reached an unreachable!";case 32:HEAP[q]-=1;c=HEAP[q]==0?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=34;break;case 34:HEAP[l]-=1;c=HEAP[l]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=36;break;case 36:STACKTOP=a;return;default:assert(0,"bad label: "+c)}}function _PySys_SetArgv(g,e){_PySys_SetArgvEx(g,e,1)} -function _mywrite(g,e,b,a){var c=STACKTOP;STACKTOP+=1013;_memset(c,0,1013);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l=c,m=c+4,n=c+8,o=c+12,p,q;d=g;f=e;h=b;j=a;_PyErr_Fetch(l,m,n);k=_PySys_GetObject(d);d=k==0?2:1;break;case 1:d=_PyFile_AsFile(k)==f?2:3;break;case 2:_vfprintf(f,h,j);d=8;break;case 3:p=_PyOS_vsnprintf(o,1001,h,j);d=_PyFile_WriteString(o,k)!=0?4:5;break;case 4:_PyErr_Clear();_fputs(o,f);d=5;break;case 5:d=p<0|p>1E3?6:8;break;case 6:q=__str1504688;d=_PyFile_WriteString(q,k)!=0?7: -8;break;case 7:_PyErr_Clear();_fputs(q,f);d=8;break;case 8:_PyErr_Restore(HEAP[l],HEAP[m],HEAP[n]);STACKTOP=c;return;default:assert(0,"bad label: "+d)}}function _PySys_WriteStdout(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);HEAP[e]=arguments[_PySys_WriteStdout.length];_mywrite(__str34539,HEAP[_stdout],g,HEAP[e]);STACKTOP=e} -function _PySys_WriteStderr(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);HEAP[e]=arguments[_PySys_WriteStderr.length];_mywrite(__str1074645,HEAP[_stderr],g,HEAP[e]);STACKTOP=e} -function _tok_new(){var g;for(g=-1;;)switch(g){case -1:var e,b;b=_malloc(920);g=b==0?1:2;break;case 1:e=0;g=3;break;case 2:HEAP[b+16]=0;HEAP[b+8]=HEAP[b+16];HEAP[b+12]=HEAP[b+8];HEAP[b+4]=HEAP[b+12];HEAP[b]=HEAP[b+4];HEAP[b+20]=10;HEAP[b+24]=0;HEAP[b+916]=0;HEAP[b+28]=8;HEAP[b+32]=0;HEAP[b+36]=0;HEAP[b+436]=1;HEAP[b+440]=0;HEAP[b+448]=0;HEAP[b+444]=HEAP[b+448];HEAP[b+452]=0;HEAP[b+456]=0;HEAP[b+460]=0;HEAP[b+464]=0;HEAP[b+468]=0;HEAP[b+472]=1;HEAP[b+476]=0;HEAP[b+876]=0;HEAP[b+880]=0;HEAP[b+884]= -0;HEAP[b+888]=0;HEAP[b+892]=0;HEAP[b+900]=0;HEAP[b+904]=0;e=b;g=3;break;case 3:return g=e;default:assert(0,"bad label: "+g)}}function _new_string(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=c+1>=0?1:4;break;case 1:b=c!=-1?2:3;break;case 2:d=c+1;b=5;break;case 3:d=1;b=5;break;case 4:f=0;b=7;break;case 5:f=b=_malloc(d);b=b!=0?6:7;break;case 6:_llvm_memcpy_p0i8_p0i8_i32(f,a,c,1,0);HEAP[f+c]=0;b=7;break;case 7:return a=f;default:assert(0,"bad label: "+b)}} -function _error_ret(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;HEAP[b+880]=1;e=HEAP[b+24]!=0?1:3;break;case 1:e=HEAP[b]!=0?2:3;break;case 2:_free(HEAP[b]);e=3;break;case 3:return HEAP[b]=0;default:assert(0,"bad label: "+e)}} -function _get_normal_name(g){var e=STACKTOP;STACKTOP+=13;_memset(e,0,13);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f=e,h,j;c=g;h=0;a=-1;b=6;break;case 1:j=HEAP[c+h];b=j==0?7:2;break;case 2:var k=h;b=j==95?3:4;break;case 3:HEAP[f+k]=45;b=5;break;case 4:b=_tolower(j);HEAP[f+k]=b&255;b=5;break;case 5:var l=h+1;h=l;a=5;b=6;break;case 6:b=(a==5?l:0)<=11?1:7;break;case 7:HEAP[f+h]=0;b=_strcmp(f,__str544751)==0?9:8;break;case 8:b=_strncmp(f,__str554752,6)==0?9:10;break;case 9:d=__str544751;b=18; -break;case 10:b=_strcmp(f,__str564753)==0?16:11;break;case 11:b=_strcmp(f,__str574754)==0?16:12;break;case 12:b=_strcmp(f,__str584755)==0?16:13;break;case 13:b=_strncmp(f,__str594756,8)==0?16:14;break;case 14:b=_strncmp(f,__str604757,11)==0?16:15;break;case 15:b=_strncmp(f,__str614758,12)==0?16:17;break;case 16:d=__str574754;b=18;break;case 17:d=c;b=18;break;case 18:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _get_coding_spec(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;f=0;b=7;break;case 1:b=HEAP[a+f]==35?24:2;break;case 2:b=HEAP[a+f]!=32?3:6;break;case 3:b=HEAP[a+f]!=9?4:6;break;case 4:b=HEAP[a+f]!=12?5:6;break;case 5:d=0;b=26;break;case 6:f+=1;b=7;break;case 7:b=c-6>f?1:24;break;case 8:h=a+f;b=_strncmp(h,__str624759,6)==0?9:23;break;case 9:j=0;h+=6;b=HEAP[h]!=58?10:11;break;case 10:b=HEAP[h]!=61?23:11;break;case 11:h+=1;b=HEAP[h]==32?11:12;break;case 12:b=HEAP[h]==9? -11:13;break;case 13:j=h;b=15;break;case 14:h+=1;b=15;break;case 15:b=(HEAP[__Py_ctype_table+HEAP[h]*4]&7)!=0?14:16;break;case 16:b=HEAP[h]==45?14:17;break;case 17:b=HEAP[h]==95?14:18;break;case 18:b=HEAP[h]==46?14:19;break;case 19:b=jf?8:25;break;case 25:d=0;b=26;break;case 26:return a=d;default:assert(0, -"bad label: "+b)}} -function _check_coding_spec(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;m=1;c=HEAP[h+892]!=0?1:2;break;case 1:k=1;c=16;break;case 2:l=_get_coding_spec(d,f);c=l!=0?3:11;break;case 3:HEAP[h+884]=1;c=HEAP[h+888]==0?4:10;break;case 4:c=_strcmp(l,__str544751)==0?6:5;break;case 5:c=_strcmp(l,__str574754)==0?6:7;break;case 6:HEAP[h+888]=l;c=11;break;case 7:m=FUNCTION_TABLE[j](h,l);c=m!=0?8:9;break;case 8:HEAP[h+888]=l;HEAP[h+876]=-1;c=11;break;case 9:_free(l);c=11;break; -case 10:m=_strcmp(HEAP[h+888],l)==0;_free(l);c=11;break;case 11:c=m==0?12:15;break;case 12:l=HEAP[h+888];c=l==0?13:14;break;case 13:l=__str634760;c=14;break;case 14:_PyErr_Format(HEAP[_PyExc_SyntaxError],__str644761,allocate([l,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=15;break;case 15:k=m;c=16;break;case 16:return g=k;default:assert(0,"bad label: "+c)}} -function _check_bom(g,e,b,a){for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=a;j=FUNCTION_TABLE[c](f);HEAP[f+876]=1;b=j==-1?1:2;break;case 1:h=1;b=11;break;case 2:b=j==239?3:8;break;case 3:k=FUNCTION_TABLE[c](f);b=k!=187?4:5;break;case 4:FUNCTION_TABLE[d](k,f);FUNCTION_TABLE[d](j,f);h=1;b=11;break;case 5:l=FUNCTION_TABLE[c](f);b=l!=191?6:7;break;case 6:FUNCTION_TABLE[d](l,f);FUNCTION_TABLE[d](k,f);FUNCTION_TABLE[d](j,f);h=1;b=11;break;case 7:b=HEAP[f+888]!=0?9:10;break;case 8:FUNCTION_TABLE[d](j, -f);h=1;b=11;break;case 9:_free(HEAP[f+888]);b=10;break;case 10:h=_new_string(__str544751,5);HEAP[f+888]=h;h=1;b=11;break;case 11:return g=h;default:assert(0,"bad label: "+b)}} -function _fp_readl(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;k=0;l=HEAP[h+904];f-=1;var o=h;a=l==0?1:3;break;case 1:l=_PyObject_CallObject(HEAP[o+900],0);a=l==0?2:5;break;case 2:j=_error_ret(h);a=22;break;case 3:HEAP[o+904]=0;a=HEAP[l+4]==_PyString_Type?4:5;break;case 4:var p=l;k=p;c=4;a=6;break;case 5:var q=k,c=5;a=6;break;case 6:a=(c==5?q:p)==0?7:11;break;case 7:k=_PyUnicodeUCS2_AsUTF8String(l);HEAP[l]-=1;a=HEAP[l]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[l+ -4]+24]](l);a=9;break;case 9:a=k==0?10:11;break;case 10:j=_error_ret(h);a=22;break;case 11:m=_PyString_AsString(k);n=HEAP[k+8];a=n>f?12:17;break;case 12:a=_PyString_FromStringAndSize(m+f,n-f);HEAP[h+904]=a;a=HEAP[h+904]==0?13:16;break;case 13:HEAP[k]-=1;a=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=15;break;case 15:j=_error_ret(h);a=22;break;case 16:n=f;a=17;break;case 17:_llvm_memcpy_p0i8_p0i8_i32(d,m,n,1,0);HEAP[d+n]=0;HEAP[k]-=1;a=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);a=19;break;case 19:a=n==0?20:21;break;case 20:j=0;a=22;break;case 21:j=d;a=22;break;case 22:return g=j;default:assert(0,"bad label: "+a)}} -function _fp_setreadl(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=_PyFile_FromFile(HEAP[a+24],HEAP[a+460],__str654762,0);b=h==0?1:2;break;case 1:d=0;b=11;break;case 2:f=_PyCodec_StreamReader(c,h,0);HEAP[h]-=1;b=HEAP[h]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=4;break;case 4:b=f==0?5:6;break;case 5:d=0;b=11;break;case 6:j=_PyObject_GetAttrString(f,__str664763);HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=8;break;case 8:b= -j==0?9:10;break;case 9:d=0;b=11;break;case 10:HEAP[a+900]=j;d=1;b=11;break;case 11:return b=d;default:assert(0,"bad label: "+b)}}function _fp_getc(g){return __IO_getc(HEAP[g+24])}function _fp_ungetc(g,e){_ungetc(g,HEAP[e+24])} -function _decoding_fgets(g,e,b){var a=STACKTOP;STACKTOP+=500;_memset(a,0,500);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o=a;f=g;h=e;j=b;m=l=0;c=1;break;case 1:c=HEAP[j+876]<0?2:3;break;case 2:var p=_fp_readl(f,h,j);l=p;d=2;c=7;break;case 3:var q=j;c=HEAP[j+876]>0?4:5;break;case 4:var r=_Py_UniversalNewlineFgets(f,h,HEAP[q+24],0);l=r;d=4;c=7;break;case 5:c=_check_bom(184,186,188,q)==0?6:1;break;case 6:k=_error_ret(j);c=23;break;case 7:c=(d==4?r:p)!=0?8:12;break;case 8:c=HEAP[j+452]<= -1?9:12;break;case 9:c=HEAP[j+884]==0?10:12;break;case 10:c=_strlen(l);c=_check_coding_spec(l,c,j,188)==0?11:12;break;case 11:k=_error_ret(j);c=23;break;case 12:c=l!=0?13:19;break;case 13:c=HEAP[j+888]==0?14:19;break;case 14:n=l;c=18;break;case 15:var u=n;c=HEAP[n]<0?16:17;break;case 16:var s=HEAP[u];m=s;d=16;c=20;break;case 17:n=u+1;c=18;break;case 18:c=HEAP[n]!=0?15:19;break;case 19:var t=m,d=19;c=20;break;case 20:c=(d==19?t:s)!=0?21:22;break;case 21:_sprintf(o,__str674764,allocate([m,0,0,0,HEAP[j+ -460],0,0,0,HEAP[j+452]+1,0,0,0],["i32",0,0,0,"i8*",0,0,0,"i32",0,0,0],ALLOC_STACK));_PyErr_SetString(HEAP[_PyExc_SyntaxError],o);k=_error_ret(j);c=23;break;case 22:k=l;c=23;break;case 23:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _decoding_feof(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d=b=g;e=HEAP[b+876]>=0?1:2;break;case 1:a=_feof(HEAP[d+24]);e=7;break;case 2:c=HEAP[d+904];e=c==0?3:6;break;case 3:c=_PyObject_CallObject(HEAP[b+900],0);var f=b;e=c==0?4:5;break;case 4:_error_ret(f);a=1;e=7;break;case 5:HEAP[f+904]=c;e=6;break;case 6:a=_PyObject_Size(c)==0;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}}function _buf_getc(g){var e,b=HEAP[g+912];e=HEAP[b];HEAP[g+912]=b+1;return e} -function _buf_ungetc(g,e){HEAP[e+912]+=-1}function _buf_setreadl(g,e){HEAP[g+908]=e;return 1}function _translate_into_utf8(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;b=g;a=e;var f=_strlen(b);a=_PyUnicodeUCS2_Decode(b,f,a,0);b=a==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyUnicodeUCS2_AsUTF8String(a);HEAP[a]-=1;b=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=4;break;case 4:c=d;b=5;break;case 5:return c;default:assert(0,"bad label: "+b)}} -function _translate_newlines(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u;d=g;f=e;h=b;n=0;o=_strlen(d)+2;u=0;a=o>=0?1:4;break;case 1:a=o!=0?2:3;break;case 2:m=o;a=5;break;case 3:m=1;a=5;break;case 4:q=0;a=6;break;case 5:q=a=_malloc(m);a=a==0?6:7;break;case 6:HEAP[h+20]=15;l=0;a=27;break;case 7:r=q;a=14;break;case 8:var s=HEAP[d];u=s;n!=0?(c=8,a=9):(c=8,a=11);break;case 9:n=0;var t=u;t==10?(c=9,a=10):(c=9,a=11);break;case 10:d+=1;var v=u=HEAP[d];v==0?(c=10,a=15):(c= -10,a=11);break;case 11:a=(c==10?v:c==9?t:s)==13?12:13;break;case 12:n=1;u=10;a=13;break;case 13:HEAP[r]=u;d+=1;r+=1;a=14;break;case 14:a=HEAP[d]!=0?8:15;break;case 15:a=f!=0?16:18;break;case 16:a=u!=10?17:18;break;case 17:HEAP[r]=10;r+=1;a=18;break;case 18:HEAP[r]=0;p=r+1+(0-q);a=p=0?20:24;break;case 20:a=p!=0?21:22;break;case 21:j=p;a=23;break;case 22:j=1;a=23;break;case 23:k=_realloc(q,j);a=25;break;case 24:k=0;a=25;break;case 25:q=k;a=26;break;case 26:l=q;a=27;break; -case 27:return g=l;default:assert(0,"bad label: "+a)}} -function _decode_str(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l=a,m;d=g;c=e;f=b;j=0;HEAP[l]=0;m=HEAP[l+4]=0;d=_translate_newlines(d,c,f);HEAP[f+916]=d;c=d==0?1:2;break;case 1:h=0;c=25;break;case 2:HEAP[f+908]=0;HEAP[f+912]=d;c=_check_bom(190,192,194,f);var n=f;c=c==0?3:4;break;case 3:h=_error_ret(n);c=25;break;case 4:d=HEAP[n+912];c=HEAP[f+908]!=0?5:8;break;case 5:j=_translate_into_utf8(d,HEAP[f+908]);c=j==0?6:7;break;case 6:h=_error_ret(f); -c=25;break;case 7:d=_PyString_AsString(j);c=8;break;case 8:k=d;c=9;break;case 9:c=HEAP[k]==0?13:10;break;case 10:c=HEAP[k]==10?11:12;break;case 11:HEAP[l+m*4]=k;m+=1;c=m==2?13:12;break;case 12:k+=1;c=9;break;case 13:HEAP[f+908]=0;c=HEAP[l]!=0?14:20;break;case 14:c=_check_coding_spec(d,HEAP[l]-d,f,194);var o=f;c=c==0?15:16;break;case 15:h=_error_ret(o);c=25;break;case 16:c=HEAP[o+908]==0?17:20;break;case 17:c=HEAP[l+4]!=0?18:20;break;case 18:c=_check_coding_spec(HEAP[l]+1,HEAP[l+4]-HEAP[l],f,194)== -0?19:20;break;case 19:h=_error_ret(f);c=25;break;case 20:c=HEAP[f+908]!=0?21:24;break;case 21:j=_translate_into_utf8(d,HEAP[f+908]);c=j==0?22:23;break;case 22:h=_error_ret(f);c=25;break;case 23:d=_PyString_AsString(j);c=24;break;case 24:HEAP[f+904]=j;h=d;c=25;break;case 25:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyTokenizer_FromString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=_tok_new();b=f==0?1:2;break;case 1:d=0;b=5;break;case 2:a=_decode_str(a,c,f);b=a==0?3:4;break;case 3:_PyTokenizer_Free(f);d=0;b=5;break;case 4:HEAP[f+8]=a;HEAP[f+12]=HEAP[f+8];HEAP[f+4]=HEAP[f+12];HEAP[f]=HEAP[f+4];d=f;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _PyTokenizer_FromFile(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;j=_tok_new();a=j==0?1:2;break;case 1:h=0;a=5;break;case 2:a=_malloc(8192);HEAP[j]=a;var k=j;a=HEAP[j]==0?3:4;break;case 3:_PyTokenizer_Free(k);h=0;a=5;break;case 4:HEAP[j+8]=HEAP[k];HEAP[j+4]=HEAP[j+8];HEAP[j+12]=HEAP[j]+8192;HEAP[j+24]=c;HEAP[j+444]=d;HEAP[j+448]=f;h=j;a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}} -function _PyTokenizer_Free(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+888]!=0?1:2;break;case 1:_free(HEAP[b+888]);e=2;break;case 2:e=HEAP[b+900]!=0?3:5;break;case 3:e=HEAP[b+900];HEAP[e]-=1;e=HEAP[e]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+900]+4]+24]](HEAP[b+900]);e=5;break;case 5:e=HEAP[b+904]!=0?6:8;break;case 6:e=HEAP[b+904];HEAP[e]-=1;e=HEAP[e]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+904]+4]+24]](HEAP[b+904]);e=8;break;case 8:e=HEAP[b+24]!=0?9:11;break;case 9:e= -HEAP[b]!=0?10:11;break;case 10:_free(HEAP[b]);e=11;break;case 11:e=HEAP[b+916]!=0?12:13;break;case 12:_free(HEAP[b+916]);e=13;break;case 13:_free(b);return;default:assert(0,"bad label: "+e)}} -function _tok_stdin_decode(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;b=_PySys_GetFile(__str684765,0)!=HEAP[_stdin]?1:2;break;case 1:d=0;b=30;break;case 2:h=_PySys_GetObject(__str684765);b=h==0?5:3;break;case 3:b=HEAP[h+4]==_PyFile_Type?6:4;break;case 4:b=_PyType_IsSubtype(HEAP[h+4],_PyFile_Type)==0?5:6;break;case 5:d=0;b=30;break;case 6:f=HEAP[h+60];b=HEAP[h+60]==0?8:7;break;case 7:b=(HEAP[HEAP[f+4]+84]&134217728)==0?8:9;break;case 8:d=0;b=30;break;case 9:HEAP[f]+=1;l= -_PyString_AsString(f);j=_strlen(HEAP[c]);j=_PyUnicodeUCS2_Decode(HEAP[c],j,l,0);b=j==0?25:10;break;case 10:k=_PyUnicodeUCS2_AsEncodedString(j,__str544751,0);HEAP[j]-=1;b=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=12;break;case 12:b=k==0?25:13;break;case 13:m=_new_string(k+20,HEAP[k+8]);HEAP[k]-=1;b=HEAP[k]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=15;break;case 15:b=m==0?22:16;break;case 16:_free(HEAP[c]);HEAP[c]=m;b=HEAP[a+888]!=0?17:18;break;case 17:_free(HEAP[a+ -888]);b=18;break;case 18:b=_strlen(l);b=_new_string(l,b);HEAP[a+888]=b;b=HEAP[a+888]==0?22:19;break;case 19:HEAP[f]-=1;b=HEAP[f]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=21;break;case 21:d=0;b=30;break;case 22:HEAP[f]-=1;b=HEAP[f]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=24;break;case 24:HEAP[a+20]=15;d=-1;b=30;break;case 25:HEAP[f]-=1;b=HEAP[f]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=27;break;case 27:b=_PyErr_ExceptionMatches(HEAP[_PyExc_UnicodeDecodeError])== -0?28:29;break;case 28:HEAP[a+20]=17;d=-1;b=30;break;case 29:_PyErr_Clear();d=0;b=30;break;case 30:return a=d;default:assert(0,"bad label: "+b)}} -function _tok_nextc(g){var e=STACKTOP;STACKTOP+=4;_memset(e,0,4);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n=e,o,p,q,r,u,s,t,v,w,x,y;c=g;b=1;break;case 1:var z=c;b=HEAP[c+4]!=HEAP[c+8]?2:3;break;case 2:b=HEAP[z+4];l=HEAP[b];HEAP[c+4]=b+1;b=74;break;case 3:b=HEAP[z+20]!=10?4:5;break;case 4:l=-1;b=74;break;case 5:var C=c;b=HEAP[c+24]==0?6:13;break;case 6:m=_strchr(HEAP[C+8],10);b=m!=0?7:8;break;case 7:m+=1;b=10;break;case 8:m=_strchr(HEAP[c+8],0);b=HEAP[c+8]==m?9:10;break;case 9:HEAP[c+ -20]=11;l=-1;b=74;break;case 10:b=HEAP[c+16]==0?11:12;break;case 11:HEAP[c]=HEAP[c+4];b=12;break;case 12:HEAP[c+896]=HEAP[c+4];HEAP[c+452]+=1;HEAP[c+8]=m;b=HEAP[c+4];l=HEAP[b];HEAP[c+4]=b+1;b=74;break;case 13:b=HEAP[C+444]!=0?14:35;break;case 14:var A=_PyOS_Readline(HEAP[_stdin],HEAP[_stdout],HEAP[c+444]);HEAP[n]=A;HEAP[c+448]!=0?(a=14,b=15):(a=14,b=16);break;case 15:HEAP[c+444]=HEAP[c+448];var G=HEAP[n],a=15;b=16;break;case 16:b=(a==15?G:A)==0?17:18;break;case 17:HEAP[c+20]=12;b=70;break;case 18:b= -HEAP[HEAP[n]]==0?19:20;break;case 19:_free(HEAP[n]);HEAP[c+20]=11;b=70;break;case 20:b=_tok_stdin_decode(c,n)!=0?21:22;break;case 21:_free(HEAP[n]);b=70;break;case 22:var E=c;b=HEAP[c+16]!=0?23:32;break;case 23:o=HEAP[E+16]-HEAP[c];p=HEAP[c+4]-HEAP[c];q=_strlen(HEAP[n]);q=p+q;r=HEAP[c];b=q+1>=0?24:28;break;case 24:b=q!=-1?25:26;break;case 25:j=q+1;b=27;break;case 26:j=1;b=27;break;case 27:k=_realloc(r,j);b=29;break;case 28:k=0;b=29;break;case 29:r=k;HEAP[c+452]+=1;var D=c;b=r==0?30:31;break;case 30:_free(HEAP[D]); -HEAP[c]=0;_free(HEAP[n]);HEAP[c+20]=15;l=-1;b=74;break;case 31:HEAP[D]=r;HEAP[c+4]=HEAP[c]+p;HEAP[c+896]=HEAP[c+4];_strcpy(HEAP[c]+p,HEAP[n]);_free(HEAP[n]);HEAP[c+8]=HEAP[c]+q;HEAP[c+12]=HEAP[c+8]+1;HEAP[c+16]=HEAP[c]+o;b=70;break;case 32:HEAP[c+452]=HEAP[E+452]+1;b=HEAP[c]!=0?33:34;break;case 33:_free(HEAP[c]);b=34;break;case 34:HEAP[c]=HEAP[n];HEAP[c+896]=HEAP[c];HEAP[c+4]=HEAP[c];HEAP[c+896]=HEAP[c];b=_strchr(HEAP[c],0);HEAP[c+8]=b;HEAP[c+12]=HEAP[c+8]+1;b=70;break;case 35:s=u=0;var R=c;b=HEAP[c+ -16]==0?36:43;break;case 36:b=HEAP[R]==0?37:40;break;case 37:var M=_malloc(8192);HEAP[c]=M;M=c;b=HEAP[c]==0?38:39;break;case 38:HEAP[M+20]=15;l=-1;b=74;break;case 39:HEAP[c+12]=HEAP[M]+8192;b=40;break;case 40:b=_decoding_fgets(HEAP[c],HEAP[c+12]-HEAP[c],c);var L=c+20;b=b==0?41:42;break;case 41:HEAP[L]=11;u=1;b=46;break;case 42:HEAP[L]=10;u=_strchr(HEAP[c],0);HEAP[c+8]=u;u=HEAP[HEAP[c+8]+-1]==10;b=46;break;case 43:s=HEAP[R+4]-HEAP[c];b=_decoding_feof(c);var I=c+20;b=b!=0?44:45;break;case 44:HEAP[I]= -11;u=1;b=46;break;case 45:HEAP[I]=10;b=46;break;case 46:HEAP[c+452]+=1;var J=u,a=46;b=65;break;case 47:b=HEAP[Z+16]!=0?48:49;break;case 48:h=HEAP[c+16]-HEAP[c];b=50;break;case 49:h=-1;b=50;break;case 50:v=h;w=HEAP[c+8]-HEAP[c];x=w+8192;y=HEAP[c];b=w+8192>=0?51:54;break;case 51:b=x!=0?52:53;break;case 52:f=x;b=55;break;case 53:f=1;b=55;break;case 54:y=0;var F=c,a=54;b=56;break;case 55:y=a=_realloc(y,f);var V=c;a==0?(a=55,b=56):(a=55,b=57);break;case 56:HEAP[(a==54?F:V)+20]=15;HEAP[c+4]=HEAP[c+8];l= --1;b=74;break;case 57:HEAP[V]=y;HEAP[c+8]=HEAP[c]+w;HEAP[c+12]=HEAP[c]+x;b=v>=0?58:59;break;case 58:d=HEAP[c]+v;b=60;break;case 59:d=0;b=60;break;case 60:HEAP[c+16]=d;b=_decoding_fgets(HEAP[c+8],HEAP[c+12]-HEAP[c+8],c)==0?61:64;break;case 61:b=HEAP[c+880]!=0?62:63;break;case 62:l=-1;b=74;break;case 63:_llvm_memcpy_p0i8_p0i8_i32(HEAP[c+8],__str694766,2,1,0);b=64;break;case 64:var Q=_strchr(HEAP[c+8],0);HEAP[c+8]=Q;u=Q=HEAP[HEAP[c+8]+-1]==10;a=64;b=65;break;case 65:var Z=c;b=(a==64?Q:J)==0?47:66;break; -case 66:b=HEAP[Z]!=0?67:70;break;case 67:HEAP[c+4]=HEAP[c]+s;HEAP[c+896]=HEAP[c+4];t=HEAP[c+8]+-2;b=HEAP[c]<=t?68:70;break;case 68:b=HEAP[t]==13?69:70;break;case 69:HEAP[t]=10;t+=1;HEAP[t]=0;HEAP[c+8]=t;b=70;break;case 70:b=HEAP[c+20]!=10?71:1;break;case 71:b=HEAP[c+444]!=0?72:73;break;case 72:_PySys_WriteStderr(__str694766,allocate(1,"i32",ALLOC_STACK));b=73;break;case 73:HEAP[c+4]=HEAP[c+8];l=-1;b=74;break;case 74:return g=l,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _tok_backup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=c!=-1?1:5;break;case 1:HEAP[a+4]+=-1;b=HEAP[a+4]99?23:24;break;case 23:HEAP[L+20]=20;HEAP[f+4]=HEAP[f+8];l=52;c=164;break;case 24:c=HEAP[f+476+HEAP[L+32]*4]>=p?25:27;break;case 25:c=_indenterror(f)!=0?26:27;break;case 26:l=52;c=164;break;case 27:HEAP[f+440]+=1;HEAP[f+32]+=1;HEAP[f+36+HEAP[f+32]*4]=o;HEAP[f+476+HEAP[f+32]*4]=p;c=36;break;case 28:HEAP[f+440]-=1;HEAP[f+32]-=1;c=29;break;case 29:c=HEAP[f+32]<=0?31:30;break;case 30:c=HEAP[f+36+HEAP[f+32]*4]>o?28:31;break;case 31:var I=f;c=HEAP[f+36+HEAP[f+32]*4]!= -o?32:33;break;case 32:HEAP[I+20]=21;HEAP[f+4]=HEAP[f+8];l=52;c=164;break;case 33:c=HEAP[f+476+HEAP[I+32]*4]!=p?34:36;break;case 34:c=_indenterror(f)!=0?35:36;break;case 35:l=52;c=164;break;case 36:HEAP[f+16]=HEAP[f+4];c=HEAP[f+440]!=0?37:40;break;case 37:var J=HEAP[f+440];c=HEAP[f+440]<0?38:39;break;case 38:HEAP[f+440]=J+1;l=6;c=164;break;case 39:HEAP[f+440]=J-1;l=5;c=164;break;case 40:HEAP[f+16]=0;c=41;break;case 41:m=_tok_nextc(f);c=m==32|m==9|m==12?41:42;break;case 42:HEAP[f+16]=HEAP[f+4]+-1;var F= -m;F==35?(d=42,c=43):(d=42,c=54);break;case 43:r=E;c=44;break;case 44:m=_tok_nextc(f);HEAP[r]=m&255;r+=1;c=m==-1|m==10?46:45;break;case 45:c=D+r<=79?44:46;break;case 46:HEAP[r]=0;u=_tabforms_9557;c=47;break;case 47:r=c=_strstr(q,HEAP[u]);c=c!=0?48:51;break;case 48:s=_strlen(HEAP[u]);s=_atoi(r+s);c=s>0&s<=40?49:51;break;case 49:HEAP[f+28]=s;c=HEAP[_Py_VerboseFlag]!=0?50:51;break;case 50:_PySys_WriteStderr(__str764773,allocate([s,0,0,0],["i32",0,0,0],ALLOC_STACK));c=51;break;case 51:u=c=u+4;c=c<_tabforms_9557+ -16?47:53;break;case 52:var V=m=_tok_nextc(f);m!=-1&V!=10?c=d=52:(d=52,c=54);break;case 53:var Q=m;m!=-1&Q!=10?(d=53,c=52):(d=53,c=54);break;case 54:c=(d==42?F:d==53?Q:V)==-1?55:59;break;case 55:c=HEAP[f+20]==11?56:57;break;case 56:k=0;c=58;break;case 57:k=52;c=58;break;case 58:l=k;c=164;break;case 59:var Z=m;c=(HEAP[__Py_ctype_table+(m&255)*4]&3)!=0?61:60;break;case 60:var K=m;Z==95?(d=60,c=70):(d=60,c=74);break;case 61:Z==66?(d=61,c=62):Z==82?(d=61,c=65):Z==85?(d=61,c=66):Z==98?(d=61,c=62):Z==114? -(d=61,c=65):Z==117?(d=61,c=66):(d=61,c=70);break;case 62:m=_tok_nextc(f);c=m==114|m==82?63:64;break;case 63:m=_tok_nextc(f);c=64;break;case 64:var N=m;m==34|N==39?(d=64,c=123):(d=64,c=70);break;case 65:var H=m=_tok_nextc(f);m==34|H==39?(d=65,c=123):(d=65,c=70);break;case 66:m=_tok_nextc(f);c=m==114|m==82?67:68;break;case 67:m=_tok_nextc(f);c=68;break;case 68:var ba=m;m==34|ba==39?(d=68,c=123):(d=68,c=70);break;case 69:var W=_tok_nextc(f);m=W;d=69;c=70;break;case 70:c=(d==69?W:d==60?K:d==61?Z:d==64? -N:d==65?H:ba)==-1?73:71;break;case 71:c=(HEAP[__Py_ctype_table+(m&255)*4]&7)!=0?69:72;break;case 72:c=m==95?69:73;break;case 73:_tok_backup(f,m);HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4];l=1;c=164;break;case 74:c=K==10?75:78;break;case 75:HEAP[f+436]=1;c=n!=0?1:76;break;case 76:c=HEAP[f+456]>0?1:77;break;case 77:HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4]+-1;HEAP[f+892]=0;l=4;c=164;break;case 78:c=m==46?79:81;break;case 79:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&2048)!=0?113:80;break;case 80:_tok_backup(f, -m);HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4];l=23;c=164;break;case 81:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&2048)!=0?82:123;break;case 82:c=m==48?83:109;break;case 83:m=_tok_nextc(f);c=m==46?113:84;break;case 84:c=m==106|m==74?121:85;break;case 85:c=m==120|m==88?86:89;break;case 86:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&4096)==0?87:88;break;case 87:HEAP[f+20]=13;_tok_backup(f,m);l=52;c=164;break;case 88:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&4096)!=0?88:107;break;case 89:c= -m==111|m==79?90:93;break;case 90:m=_tok_nextc(f);c=m<=47|m>55?91:92;break;case 91:HEAP[f+20]=13;_tok_backup(f,m);l=52;c=164;break;case 92:m=_tok_nextc(f);c=m>47&m<=55?92:107;break;case 93:c=m==98|m==66?94:97;break;case 94:m=_tok_nextc(f);c=m!=48&m!=49?95:96;break;case 95:HEAP[f+20]=13;_tok_backup(f,m);l=52;c=164;break;case 96:m=_tok_nextc(f);c=m==48|m==49?96:107;break;case 97:t=0;c=m>47&m<=55?98:99;break;case 98:m=_tok_nextc(f);c=m>47&m<=55?98:99;break;case 99:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2* -m]&2048)!=0?100:102;break;case 100:t=1;c=101;break;case 101:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&2048)!=0?101:102;break;case 102:c=m==46?113:103;break;case 103:c=m==101|m==69?115:104;break;case 104:c=m==106|m==74?121:105;break;case 105:c=t!=0?106:107;break;case 106:HEAP[f+20]=13;_tok_backup(f,m);l=52;c=164;break;case 107:c=m==108|m==76?108:122;break;case 108:m=_tok_nextc(f);c=122;break;case 109:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&2048)!=0?109:110;break;case 110:c= -m==108|m==76?111:112;break;case 111:m=_tok_nextc(f);c=122;break;case 112:c=m==46?113:114;break;case 113:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&2048)!=0?113:114;break;case 114:c=m==101|m==69?115:120;break;case 115:m=_tok_nextc(f);c=m==43|m==45?116:117;break;case 116:m=_tok_nextc(f);c=117;break;case 117:c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*m]&2048)==0?118:119;break;case 118:HEAP[f+20]=13;_tok_backup(f,m);l=52;c=164;break;case 119:m=_tok_nextc(f);c=___ctype_b_loc();c=(HEAP[HEAP[c]+2* -m]&2048)!=0?119:120;break;case 120:c=m==106|m==74?121:122;break;case 121:m=_tok_nextc(f);c=122;break;case 122:_tok_backup(f,m);HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4];l=2;c=164;break;case 123:c=m==39|m==34?124:145;break;case 124:v=HEAP[f+4]+1+(0-HEAP[f+16]);w=m;y=x=0;c=125;break;case 125:m=c=_tok_nextc(f);c=c==10?126:129;break;case 126:c=x==0?127:128;break;case 127:HEAP[f+20]=24;_tok_backup(f,m);l=52;c=164;break;case 128:y=0;HEAP[f+892]=1;c=125;break;case 129:c=m==-1?130:134;break;case 130:var B=f+20; -c=x!=0?131:132;break;case 131:HEAP[B]=23;c=133;break;case 132:HEAP[B]=24;c=133;break;case 133:HEAP[f+4]=HEAP[f+8];l=52;c=164;break;case 134:c=m==w?135:141;break;case 135:y+=1;c=HEAP[f+4]-HEAP[f+16]==v?136:139;break;case 136:m=_tok_nextc(f);c=m==w?137:138;break;case 137:x=1;y=0;c=125;break;case 138:_tok_backup(f,m);c=139;break;case 139:c=x==0?144:140;break;case 140:c=y==3?144:125;break;case 141:y=0;c=m==92?142:125;break;case 142:m=_tok_nextc(f);c=m==-1?143:125;break;case 143:HEAP[f+20]=24;HEAP[f+4]= -HEAP[f+8];l=52;c=164;break;case 144:HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4];l=3;c=164;break;case 145:c=m==92;var Y=_tok_nextc(f);c=c?146:149;break;case 146:m=Y;var fa=f;c=m!=10?147:148;break;case 147:HEAP[fa+20]=25;HEAP[f+4]=HEAP[f+8];l=52;c=164;break;case 148:HEAP[fa+892]=1;c=40;break;case 149:z=Y;var ha=_PyToken_TwoChars(m,z);C=ha;HEAP[_Py_Py3kWarningFlag]!=0?(d=149,c=150):(d=149,c=155);break;case 150:var la=C;la==29?(d=150,c=151):(d=150,c=155);break;case 151:c=m==60?152:154;break;case 152:c=_PyErr_WarnExplicit(HEAP[_PyExc_DeprecationWarning], -__str774774,HEAP[f+460],HEAP[f+452],0,0)!=0?153:154;break;case 153:l=52;c=164;break;case 154:var ra=C,d=154;c=155;break;case 155:var ya=f;c=(d==154?ra:d==150?la:ha)!=51?156:160;break;case 156:A=_tok_nextc(ya);G=_PyToken_ThreeChars(m,z,A);c=G!=51?157:158;break;case 157:C=G;c=159;break;case 158:_tok_backup(f,A);c=159;break;case 159:HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4];l=C;c=164;break;case 160:_tok_backup(ya,z);c=m;c=c==40?161:c==41?162:c==91?161:c==93?162:c==123?161:c==125?162:163;break;case 161:HEAP[f+ -456]+=1;c=163;break;case 162:HEAP[f+456]-=1;c=163;break;case 163:HEAP[h]=HEAP[f+16];HEAP[j]=HEAP[f+4];l=_PyToken_OneChar(m);c=164;break;case 164:return g=l,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _PyTokenizer_Get(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d;c=g;d=_tok_get(c,e,b);a=HEAP[c+880]!=0?1:2;break;case 1:d=52;HEAP[c+20]=22;a=2;break;case 2:return g=d;default:assert(0,"bad label: "+a)}} -function _dec_utf8(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;a=e;d=b;f=0;d=_PyUnicodeUCS2_DecodeUTF8(a,d,__str784775);a=d!=0?1:3;break;case 1:f=_PyUnicodeUCS2_AsEncodedString(d,c,__str784775);HEAP[d]-=1;a=HEAP[d]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=3;break;case 3:a=f==0?4:5;break;case 4:_PyErr_Clear();a=5;break;case 5:return g=f;default:assert(0,"bad label: "+a)}} -function _PyTokenizer_RestoreEncoding(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;j=0;a=HEAP[c+888]!=0?1:18;break;case 1:k=_dec_utf8(HEAP[c+888],HEAP[c],d);a=k!=0?2:18;break;case 2:l=_PyString_Size(k);m=_PyString_AsString(k);a=l+1>=0?3:6;break;case 3:a=l!=-1?4:5;break;case 4:h=l+1;a=7;break;case 5:h=1;a=7;break;case 6:j=0;a=12;break;case 7:j=a=_malloc(h);a=a!=0?8:12;break;case 8:a=m!=0?9:12;break;case 9:a=l!=0?10:11;break;case 10:_strncpy(j,m,l);a=11;break;case 11:HEAP[j+ -l]=0;a=12;break;case 12:HEAP[k]-=1;a=HEAP[k]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=14;break;case 14:a=HEAP[f]>1?15:18;break;case 15:n=_dec_utf8(HEAP[c+888],HEAP[c],HEAP[f]-1);a=n!=0?16:18;break;case 16:a=_PyString_Size(n);HEAP[f]=a+1;HEAP[n]-=1;a=HEAP[n]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);a=18;break;case 18:return g=j;default:assert(0,"bad label: "+a)}} -function _tb_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_PyObject_GC_UnTrack(b);e=HEAP[__PyTrash_delete_nesting]<=49?1:9;break;case 1:HEAP[__PyTrash_delete_nesting]+=1;e=HEAP[b+8]!=0?2:4;break;case 2:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=4;break;case 4:e=HEAP[b+12]!=0?5:7;break;case 5:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=7;break;case 7:_PyObject_GC_Del(b); -HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?8:10;break;case 8:__PyTrash_destroy_chain();e=10;break;case 9:__PyTrash_deposit_object(b);e=10;break;case 10:return;default:assert(0,"bad label: "+e)}} -function _tb_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=HEAP[c+8]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+8],f);a=j!=0?2:3;break;case 2:h=j;a=7;break;case 3:a=HEAP[c+12]!=0?4:6;break;case 4:k=FUNCTION_TABLE[d](HEAP[c+12],f);a=k!=0?5:6;break;case 5:h=k;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _tb_clear(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:a=HEAP[b+8];HEAP[b+8]=0;HEAP[a]-=1;e=HEAP[a]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=3;break;case 3:e=HEAP[b+12]!=0?4:6;break;case 4:c=HEAP[b+12];HEAP[b+12]=0;HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:return;default:assert(0,"bad label: "+e)}} -function _newtracebackobject(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h;c=g;d=e;c==0?(a=-1,b=3):(a=-1,b=1);break;case 1:b=HEAP[c+4]!=_PyTraceBack_Type?5:2;break;case 2:var j=d,a=2;b=3;break;case 3:b=(a==2?j:e)==0?5:4;break;case 4:b=HEAP[d+4]!=_PyFrame_Type?5:6;break;case 5:__PyErr_BadInternalCall(__str54790,89);f=0;b=13;break;case 6:h=__PyObject_GC_New(_PyTraceBack_Type);b=h!=0?7:12;break;case 7:b=c!=0?8:9;break;case 8:HEAP[c]+=1;b=9;break;case 9:HEAP[h+8]=c;b=d!=0?10:11;break;case 10:HEAP[d]+= -1;b=11;break;case 11:HEAP[h+12]=d;HEAP[h+16]=HEAP[d+60];b=_PyFrame_GetLineNumber(d);HEAP[h+20]=b;_PyObject_GC_Track(h);b=12;break;case 12:f=h;b=13;break;case 13:return a=f;default:assert(0,"bad label: "+b)}} -function _PyTraceBack_Here(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;e=g;a=HEAP[__PyThreadState_Current];c=HEAP[a+48];d=_newtracebackobject(c,e);e=d==0?1:2;break;case 1:b=-1;e=6;break;case 2:HEAP[a+48]=d;e=c!=0?3:5;break;case 3:HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:b=0;e=6;break;case 6:return g=b;default:assert(0,"bad label: "+e)}} -function __Py_DisplaySourceLine(g,e,b,a){var c=STACKTOP;STACKTOP+=6108;_memset(c,0,6108);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p=c,q,r=c+2E3,u,s,t,v,w,x,y,z=c+6097,C;h=g;j=e;k=b;l=a;o=n=0;d=j==0?1:2;break;case 1:m=-1;d=51;break;case 2:o=___01fopen64_(j,__str64791);d=o==0?3:20;break;case 3:s=_strrchr(j,47);d=s==0?4:5;break;case 4:s=j;d=6;break;case 5:s+=1;d=6;break;case 6:u=d=_PySys_GetObject(__str74792);d=d!=0?7:21;break;case 7:d=(HEAP[HEAP[u+4]+84]&33554432)!=0?8:21;break;case 8:t= -q=_PyList_Size(u);v=_strlen(s);q=0;var A=r,G=r,E=r,D=r;d=19;break;case 9:w=_PyList_GetItem(u,q);d=w==0?10:11;break;case 10:_PyErr_Clear();d=21;break;case 11:d=(HEAP[HEAP[w+4]+84]&134217728)!=0?12:18;break;case 12:x=HEAP[w+8];d=x+1+v>4095?18:13;break;case 13:d=_PyString_AsString(w);_strcpy(A,d);d=_strlen(G)!=x?18:14;break;case 14:d=x!=0?15:17;break;case 15:d=HEAP[r+(x-1)]!=47?16:17;break;case 16:HEAP[r+x]=47;x+=1;d=17;break;case 17:_strcpy(E+x,s);o=d=___01fopen64_(D,__str64791);d=d!=0?20:18;break; -case 18:q+=1;d=19;break;case 19:d=q0?39:45;break;case 45:d=n==0?46:50;break;case 46:var Z= -_PyFile_WriteString(C,h);n=Z;f=46;d=47;break;case 47:d=(f==42?V:Z)==0?48:50;break;case 48:d=_strchr(C,10)==0?49:50;break;case 49:n=_PyFile_WriteString(__str94794,h);d=50;break;case 50:_fclose(o);m=n;d=51;break;case 51:return g=m,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _tb_displayline(g,e,b,a){var c=STACKTOP;STACKTOP+=2E3;_memset(c,0,2E3);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n=c;f=g;h=e;j=b;k=a;m=0;d=h==0?2:1;break;case 1:d=k==0?2:3;break;case 2:l=-1;d=6;break;case 3:_PyOS_snprintf(n,2E3,__str104795,allocate([h,0,0,0,j,0,0,0,k,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));m=_PyFile_WriteString(n,f);d=m!=0?4:5;break;case 4:l=m;d=6;break;case 5:l=__Py_DisplaySourceLine(f,h,j,4);d=6;break;case 6:return g=l,STACKTOP=c,g;default:assert(0, -"bad label: "+d)}} -function _tb_printinternal(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;k=j=0;l=d;a=d!=0?1:6;break;case 1:k+=1;l=a=HEAP[l+8];a=a!=0?1:6;break;case 2:a=k<=h?3:4;break;case 3:j=_PyString_AsString(HEAP[HEAP[HEAP[d+12]+16]+52]);a=HEAP[d+20];var m=_PyString_AsString(HEAP[HEAP[HEAP[d+12]+16]+48]);j=_tb_displayline(f,m,a,j);a=4;break;case 4:k-=1;var n=HEAP[d+8];d=n;j==0?(c=4,a=5):(c=4,a=7);break;case 5:j=_PyErr_CheckSignals();a=6;break;case 6:var o=d,c=6;a=7;break;case 7:a= -(c==6?o:n)==0?9:8;break;case 8:a=j==0?2:9;break;case 9:return g=j;default:assert(0,"bad label: "+a)}} -function _PyTraceBack_Print(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;j=1E3;b=a==0?1:2;break;case 1:d=0;b=11;break;case 2:b=HEAP[a+4]!=_PyTraceBack_Type?3:4;break;case 3:__PyErr_BadInternalCall(__str54790,270);d=-1;b=11;break;case 4:h=_PySys_GetObject(__str114796);b=h!=0?5:8;break;case 5:b=(HEAP[HEAP[h+4]+84]&8388608)!=0?6:8;break;case 6:j=_PyInt_AsLong(h);b=j<=0?7:8;break;case 7:d=0;b=11;break;case 8:f=b=_PyFile_WriteString(__str124797,c);b=b==0?9:10;break;case 9:f=_tb_printinternal(a, -c,j);b=10;break;case 10:d=f;b=11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}} -function _PyTuple_New(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h;a=g;e=a<0?1:2;break;case 1:__PyErr_BadInternalCall(__str4800,54);c=0;e=18;break;case 2:e=a==0&HEAP[_free_list4801]!=0?3:4;break;case 3:d=HEAP[_free_list4801];HEAP[d]+=1;c=d;e=18;break;case 4:e=a>19?7:5;break;case 5:d=HEAP[_free_list4801+a*4];e=d==0?7:6;break;case 6:HEAP[_free_list4801+a*4]=HEAP[d+12];HEAP[_numfree4802+a*4]-=1;HEAP[d]=1;e=11;break;case 7:e=a*4;e=Math.floor(e/4)!=a|e>2147483627?8:9;break;case 8:c=_PyErr_NoMemory(); -e=18;break;case 9:d=__PyObject_GC_NewVar(_PyTuple_Type,a);e=d==0?10:11;break;case 10:c=0;e=18;break;case 11:f=0;var j=a;f0?2:11;break;case 2:a=c;a=e=a-1;e=e>=0?3:7;break;case 3:e=HEAP[b+12+a*4]!=0?5:4;break;case 4:a=e=a-1;e=e>=0?3:7;break;case 5:e=HEAP[b+12+a*4];HEAP[e]-=1;e=HEAP[e]==0?6:4;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12+a*4]+4]+24]](HEAP[b+12+a*4]);e=4;break;case 7:e=c<=19?8:11;break;case 8:e=HEAP[_numfree4802+ -c*4]<=1999?9:11;break;case 9:e=HEAP[b+4]==_PyTuple_Type?10:11;break;case 10:HEAP[b+12]=HEAP[_free_list4801+c*4];HEAP[_numfree4802+c*4]+=1;HEAP[_free_list4801+c*4]=b;e=12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);e=12;break;case 12:HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!=0&HEAP[__PyTrash_delete_nesting]<=0?13:15;break;case 13:__PyTrash_destroy_chain();e=15;break;case 14:__PyTrash_deposit_object(b);e=15;break;case 15:return;default:assert(0,"bad label: "+e)}} -function _tupleprint(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;_fputc(40,c);f=0;b=6;break;case 1:b=f>0?2:3;break;case 2:_fwrite(__str44806,1,2,c);b=3;break;case 3:b=_PyObject_Print(HEAP[a+12+f*4],c,0)!=0?4:5;break;case 4:d=-1;b=10;break;case 5:f+=1;b=6;break;case 6:b=HEAP[a+8]>f?1:7;break;case 7:f=HEAP[a+8];b=f==1?8:9;break;case 8:_fputc(44,c);b=9;break;case 9:_fputc(41,c);d=0;b=10;break;case 10:return b=d;default:assert(0,"bad label: "+b)}} -function _tuplerepr(g){var e=STACKTOP;STACKTOP+=8;_memset(e,0,8);var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k=e,l=e+4,m,n;a=g;n=0;j=HEAP[a+8];b=j==0?1:2;break;case 1:f=_PyString_FromString(__str54807);b=28;break;case 2:h=_Py_ReprEnter(a);b=h!=0?3:7;break;case 3:b=h>0?4:5;break;case 4:d=_PyString_FromString(__str64808);b=6;break;case 5:d=0;b=6;break;case 6:f=d;b=28;break;case 7:m=_PyTuple_New(j);b=m==0?8:9;break;case 8:f=0;b=28;break;case 9:h=0;b=14;break;case 10:b=HEAP[__PyThreadState_Current]; -HEAP[b+12]+=1;b=HEAP[b+12]>HEAP[__Py_CheckRecursionLimit]?11:12;break;case 11:b=__Py_CheckRecursiveCall(__str74809)!=0?25:12;break;case 12:b=_PyObject_Repr(HEAP[a+12+h*4]);HEAP[k]=b;HEAP[HEAP[__PyThreadState_Current]+12]-=1;b=HEAP[k]==0?25:13;break;case 13:HEAP[m+12+h*4]=HEAP[k];h+=1;b=14;break;case 14:b=h=0?1:5;break;case 5:c+=97531;e=c==-1?6:7;break;case 6:c=-2;e=7;break;case 7:a=c;e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}}function _tuplelength(g){return HEAP[g+8]} -function _tuplecontains(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h;c=g;d=e;h=f=0;a=-1;b=2;break;case 1:var j=_PyObject_RichCompareBool(d,HEAP[c+12+f*4],2);h=j;f+=1;a=1;b=2;break;case 2:b=(a==1?j:0)!=0?4:3;break;case 3:b=HEAP[c+8]>f?1:4;break;case 4:return b=h;default:assert(0,"bad label: "+b)}} -function _tupleitem(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=c<0?2:1;break;case 1:b=HEAP[a+8]<=c?2:3;break;case 2:_PyErr_SetString(HEAP[_PyExc_IndexError],__str24804);d=0;b=4;break;case 3:HEAP[HEAP[a+12+c*4]]+=1;d=HEAP[a+12+c*4];b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}} -function _tupleslice(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;a=f<0?1:2;break;case 1:f=0;a=2;break;case 2:a=HEAP[d+8]h?7:8;break;case 7:b=HEAP[j+4*h];HEAP[b]+=1;HEAP[k+ -4*h]=b;h+=1;b=HEAP[a+8]>h?7:8;break;case 8:j=c+12;k=l+12+4*HEAP[a+8];h=0;b=HEAP[c+8]>h?9:10;break;case 9:b=HEAP[j+4*h];HEAP[b]+=1;HEAP[k+4*h]=b;h+=1;b=HEAP[c+8]>h?9:10;break;case 10:d=l;b=11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}} -function _tuplerepeat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;b=c<0?1:2;break;case 1:c=0;b=2;break;case 2:b=HEAP[a+8]==0?4:3;break;case 3:b=c==1?4:8;break;case 4:var n=a;b=HEAP[a+4]==_PyTuple_Type?5:6;break;case 5:HEAP[n]+=1;d=a;b=17;break;case 6:b=HEAP[n+8]==0?7:8;break;case 7:d=_PyTuple_New(0);b=17;break;case 8:j=c*HEAP[a+8];b=(j/HEAP[a+8]|0)!=c?9:10;break;case 9:d=_PyErr_NoMemory();b=17;break;case 10:k=_PyTuple_New(j);b=k==0?11:12;break;case 11:d=0;b=17;break;case 12:l= -k+12;m=a+12;f=0;b=fh?14:15;break;case 14:HEAP[l]=HEAP[m+4*h];HEAP[HEAP[l]]+=1;l+=4;h+=1;b=HEAP[a+8]>h?14:15;break;case 15:f+=1;b=f0?10:11;break;case 10:d=_PyInt_FromSsize_t(f);a=17;break;case 11:a=l<0?12:13;break;case 12:d=0;a=17;break;case 13:f+=1;a=14;break;case 14:a=f>=HEAP[j]?16:15;break;case 15:a=HEAP[c+8]>f?9:16;break;case 16:_PyErr_SetString(HEAP[_PyExc_ValueError],__str134815); -d=0;a=17;break;case 17:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _tuplecount(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;h=f=0;b=6;break;case 1:j=_PyObject_RichCompareBool(HEAP[a+12+h*4],c,2);b=j>0?2:3;break;case 2:f+=1;b=5;break;case 3:b=j<0?4:5;break;case 4:d=0;b=8;break;case 5:h+=1;b=6;break;case 6:b=HEAP[a+8]>h?1:7;break;case 7:d=_PyInt_FromSsize_t(f);b=8;break;case 8:return b=d;default:assert(0,"bad label: "+b)}} -function _tupletraverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[c+8];a=4;break;case 1:a=HEAP[c+12+j*4]!=0?2:4;break;case 2:k=FUNCTION_TABLE[d](HEAP[c+12+j*4],f);a=k!=0?3:4;break;case 3:h=k;a=6;break;case 4:j=a=j-1;a=a>=0?1:5;break;case 5:h=0;a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}} -function _tuplerichcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;a=(HEAP[HEAP[d+4]+84]&67108864)==0?2:1;break;case 1:a=(HEAP[HEAP[f+4]+84]&67108864)==0?2:3;break;case 2:HEAP[__Py_NotImplementedStruct]+=1;j=__Py_NotImplementedStruct;a=29;break;case 3:k=d;l=f;n=HEAP[k+8];o=HEAP[l+8];m=0;a=8;break;case 4:p=_PyObject_RichCompareBool(HEAP[k+12+m*4],HEAP[l+12+m*4],2);a=p<0?5:6;break;case 5:j=0;a=29;break;case 6:a=p==0?10:7;break;case 7:m+=1;a=8;break;case 8:a= -m>=n?10:9;break;case 9:a=m=n?12:11;break;case 11:a=m>=o?12:24;break;case 12:a=h;a=a==0?13:a==1?14:a==2?15:a==3?16:a==4?17:a==5?18:19;break;case 13:var r=no,c=17;a=20;break;case 18:var w=n>=o,c=18;a=20;break;case 19:j=0;a=29;break;case 20:a=(c==18?w:c==17?v:c==16?t:c==15?s:c==14?u:r)!=0?21:22;break;case 21:q=__Py_TrueStruct;a=23;break; -case 22:q=__Py_ZeroStruct;a=23;break;case 23:HEAP[q]+=1;j=q;a=29;break;case 24:a=h==2?25:26;break;case 25:HEAP[__Py_ZeroStruct]+=1;j=__Py_ZeroStruct;a=29;break;case 26:a=h==3?27:28;break;case 27:HEAP[__Py_TrueStruct]+=1;j=__Py_TrueStruct;a=29;break;case 28:j=_PyObject_RichCompare(HEAP[k+12+m*4],HEAP[l+12+m*4],h);a=29;break;case 29:return g=j;default:assert(0,"bad label: "+a)}} -function _tuple_new(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a;d=g;f=e;h=b;HEAP[k]=0;c=d!=_PyTuple_Type?1:2;break;case 1:j=_tuple_subtype_new(d,f,h);c=7;break;case 2:c=_PyArg_ParseTupleAndKeywords(f,h,__str144816,_kwlist_9096,allocate([k,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:j=0;c=7;break;case 4:c=HEAP[k]==0?5:6;break;case 5:j=_PyTuple_New(0);c=7;break;case 6:j=_PySequence_Tuple(HEAP[k]);c=7;break;case 7:return g= -j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _tuple_subtype_new(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l;d=g;h=_tuple_new(_PyTuple_Type,e,b);a=h==0?1:2;break;case 1:f=0;a=9;break;case 2:j=HEAP[d+152];l=HEAP[h+8];j=FUNCTION_TABLE[j](d,l);a=j==0?3:4;break;case 3:f=0;a=9;break;case 4:k=0;var m=h;kl?27:28;break;case 27:_llvm_memset_p0i8_i32(j+12+l*4,0,(c-l)*4,1,0);b=28;break;case 28:HEAP[a]=j;m=j+-12;b=HEAP[m+8]!=-2?29:30;break;case 29:throw _Py_FatalError(__str14803),"Reached an unreachable!";case 30:HEAP[m+8]=-3;HEAP[m]= -HEAP[__PyGC_generation0];HEAP[m+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[m+4]]=m;HEAP[HEAP[__PyGC_generation0]+4]=m;f=0;b=31;break;case 31:return a=f;default:assert(0,"bad label: "+b)}} -function _PyTuple_ClearFreeList(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;e=0;g=b=1;break;case 1:a=HEAP[_free_list4801+b*4];e+=HEAP[_numfree4802+b*4];HEAP[_free_list4801+b*4]=0;HEAP[_numfree4802+b*4]=0;g=a!=0?2:3;break;case 2:g=a;a=HEAP[a+12];_PyObject_GC_Del(g);g=a!=0?2:3;break;case 3:b=g=b+1;g=g<=19?1:4;break;case 4:return e;default:assert(0,"bad label: "+g)}} -function _PyTuple_Fini(){var g;for(g=-1;;)switch(g){case -1:g=HEAP[_free_list4801]!=0?1:3;break;case 1:g=HEAP[_free_list4801];HEAP[g]-=1;g=HEAP[g]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[_free_list4801]+4]+24]](HEAP[_free_list4801]);g=3;break;case 3:HEAP[_free_list4801]=0;_PyTuple_ClearFreeList();return;default:assert(0,"bad label: "+g)}} -function _tupleiter_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[b+12]!=0?1:3;break;case 1:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=3;break;case 3:_PyObject_GC_Del(b);return;default:assert(0,"bad label: "+e)}} -function _tupleiter_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[c+12]!=0?1:3;break;case 1:j=FUNCTION_TABLE[d](HEAP[c+12],f);a=j!=0?2:3;break;case 2:h=j;a=4;break;case 3:h=0;a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _tupleiter_next(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=HEAP[b+12];e=c==0?1:2;break;case 1:a=0;e=7;break;case 2:e=HEAP[b+8]=0?3:4;break;case 3:h=1;b=10;break;case 4:k=j;b=(HEAP[k+84]&262144)==0?6:5;break;case 5:b=_PyType_IsSubtype(a,k)==0?6:7;break;case 6:h=1;b=10;break;case 7:d+=1;b=8;break;case 8:b=d=0?11:12;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError], -__str204862,allocate([HEAP[d+12],0,0,0,HEAP[HEAP[l+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=-1;a=56;break;case 12:a=HEAP[HEAP[l+4]+84]<0?13:15;break;case 13:a=_PyType_IsSubtype(l,d)!=0?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_TypeError],__str214863);h=-1;a=56;break;case 15:j+=1;a=16;break;case 16:var t=f;a=HEAP[f+8]>j?9:17;break;case 17:n=_best_base(t);a=n==0?18:19;break;case 18:h=-1;a=56;break;case 19:a=_compatible_for_assignment(HEAP[d+128],n,__str224864)==0?20:21;break;case 20:h= --1;a=56;break;case 21:HEAP[n]+=1;HEAP[f]+=1;p=HEAP[d+168];o=HEAP[d+128];q=HEAP[d+172];HEAP[d+168]=f;HEAP[d+128]=n;a=_mro_internal(d)<0?48:22;break;case 22:m=_PyList_New(0);a=m==0?48:23;break;case 23:k=_mro_subclasses(d,m);a=k<0?24:30;break;case 24:j=0;var c=_PyList_Size(m),v=m;c>j?(c=24,a=25):(c=24,a=28);break;case 25:_PyArg_UnpackTuple(HEAP[HEAP[(c==27?w:v)+12]+4*j],__str234865,2,2,allocate([r,0,0,0,u,0,0,0],["%struct.PyTypeObject**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK));HEAP[HEAP[u]]+= -1;l=HEAP[HEAP[r]+172];HEAP[HEAP[r]+172]=HEAP[u];HEAP[l]-=1;a=HEAP[l]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=27;break;case 27:j+=1;var c=_PyList_Size(m),w=m;c>j?(c=27,a=25):(c=27,a=28);break;case 28:HEAP[m]=HEAP[c==24?v:w]-1;a=HEAP[m]==0?29:48;break;case 29:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=48;break;case 30:HEAP[m]-=1;a=HEAP[m]==0?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=32;break;case 32:j=HEAP[p+8]-1;a=HEAP[p+8]-1>=0?33:36;break;case 33:l=HEAP[p+12+ -j*4];a=HEAP[HEAP[l+4]+84]<0?34:35;break;case 34:_remove_subclass(l,d);a=35;break;case 35:j=a=j-1;a=a>=0?33:36;break;case 36:j=HEAP[f+8]-1;a=HEAP[f+8]-1>=0?37:41;break;case 37:l=HEAP[f+12+j*4];a=HEAP[HEAP[l+4]+84]<0?38:40;break;case 38:a=_add_subclass(l,d)<0?39:40;break;case 39:k=-1;a=40;break;case 40:j=a=j-1;a=a>=0?37:41;break;case 41:_update_all_slots(d);HEAP[p]-=1;a=HEAP[p]==0?42:43;break;case 42:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=43;break;case 43:HEAP[o]-=1;a=HEAP[o]==0?44:45;break;case 44:FUNCTION_TABLE[HEAP[HEAP[o+ -4]+24]](o);a=45;break;case 45:HEAP[q]-=1;a=HEAP[q]==0?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=47;break;case 47:h=k;a=56;break;case 48:a=HEAP[d+168];HEAP[a]-=1;a=HEAP[a]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+168]+4]+24]](HEAP[d+168]);a=50;break;case 50:a=HEAP[d+128];HEAP[a]-=1;a=HEAP[a]==0?51:52;break;case 51:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+128]+4]+24]](HEAP[d+128]);a=52;break;case 52:a=HEAP[d+172]!=q?53:55;break;case 53:a=HEAP[d+172];HEAP[a]-=1;a=HEAP[a]==0?54: -55;break;case 54:FUNCTION_TABLE[HEAP[HEAP[HEAP[d+172]+4]+24]](HEAP[d+172]);a=55;break;case 55:HEAP[d+168]=p;HEAP[d+128]=o;HEAP[d+172]=q;h=-1;a=56;break;case 56:return d=h,STACKTOP=b,d;default:assert(0,"bad label: "+a)}}function _type_dict(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b+132]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_PyDictProxy_New(HEAP[b+132]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _type_get_doc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=(HEAP[b+84]&512)==0?1:3;break;case 1:e=HEAP[b+88]!=0?2:3;break;case 2:a=_PyString_FromString(HEAP[b+88]);e=9;break;case 3:c=e=_PyDict_GetItemString(HEAP[b+132],__str244866);e=e==0?4:5;break;case 4:c=__Py_NoneStruct;HEAP[c]+=1;e=8;break;case 5:var d=c;e=HEAP[HEAP[c+4]+136]!=0?6:7;break;case 6:c=FUNCTION_TABLE[HEAP[HEAP[d+4]+136]](c,0,b);e=8;break;case 7:HEAP[c]=HEAP[d]+1;e=8;break;case 8:a=c;e=9;break;case 9:return g=a;default:assert(0, -"bad label: "+e)}}function _type___instancecheck__(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=__PyObject_RealIsInstance(e,g);b=b==-1?1:b==0?2:3;break;case 1:a=0;b=4;break;case 2:HEAP[__Py_ZeroStruct]+=1;a=__Py_ZeroStruct;b=4;break;case 3:HEAP[__Py_TrueStruct]+=1;a=__Py_TrueStruct;b=4;break;case 4:return a;default:assert(0,"bad label: "+b)}} -function _type___subclasscheck__(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=__PyObject_RealIsSubclass(e,g);b=b==-1?1:b==0?2:3;break;case 1:a=0;b=4;break;case 2:HEAP[__Py_ZeroStruct]+=1;a=__Py_ZeroStruct;b=4;break;case 3:HEAP[__Py_TrueStruct]+=1;a=__Py_TrueStruct;b=4;break;case 4:return a;default:assert(0,"bad label: "+b)}} -function _type_richcompare(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n;d=g;f=e;h=b;a=HEAP[HEAP[d+4]+84]>=0?4:1;break;case 1:a=HEAP[HEAP[f+4]+84]>=0?4:2;break;case 2:a=HEAP[HEAP[d+4]+40]!=0?4:3;break;case 3:a=HEAP[HEAP[f+4]+40]!=0?4:5;break;case 4:l=__Py_NotImplementedStruct;a=22;break;case 5:a=HEAP[_Py_Py3kWarningFlag]!=0?6:9;break;case 6:var o=h;h!=2&o!=3?(c=6,a=7):(c=6,a=10);break;case 7:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str274869,1)<0?8:9;break;case 8:k= -0;a=23;break;case 9:var p=h,c=9;a=10;break;case 10:a=c==9?p:o;m=d;n=f;a=a==0?11:a==1?12:a==2?13:a==3?14:a==4?15:a==5?16:17;break;case 11:var q=mn,c=15;a=18;break;case 16:var v=m>=n,c=16;a=18;break;case 17:l=__Py_NotImplementedStruct;a=22;break;case 18:a=(c==16?v:c==15?t:c==14?s:c==13?u:c==12?r:q)!=0?19:20;break;case 19:j=__Py_TrueStruct;a=21;break;case 20:j=__Py_ZeroStruct; -a=21;break;case 21:l=j;a=22;break;case 22:HEAP[l]+=1;k=l;a=23;break;case 23:return g=k;default:assert(0,"bad label: "+a)}} -function _type_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;c=_type_module(b,0);e=c==0?1:2;break;case 1:_PyErr_Clear();e=6;break;case 2:e=(HEAP[HEAP[c+4]+84]&134217728)==0?3:6;break;case 3:HEAP[c]-=1;e=HEAP[c]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=5;break;case 5:c=0;e=6;break;case 6:d=e=_type_name(b,0);e=e==0?7:8;break;case 7:a=0;e=21;break;case 8:e=(HEAP[b+84]&512)!=0?9:10;break;case 9:h=__str284870;e=11;break;case 10:h=__str294871;e=11;break;case 11:e=c== -0?14:12;break;case 12:e=_strcmp(c+20,__str124854)==0?14:13;break;case 13:f=_PyString_FromFormat(__str304872,allocate([h,0,0,0,c+20,0,0,0,d+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=15;break;case 14:f=_PyString_FromFormat(__str314873,allocate([h,0,0,0,HEAP[b+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));e=15;break;case 15:e=c!=0?16:18;break;case 16:HEAP[c]-=1;e=HEAP[c]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=18;break;case 18:HEAP[d]-=1;e=HEAP[d]==0? -19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=20;break;case 20:a=f;e=21;break;case 21:return g=a;default:assert(0,"bad label: "+e)}} -function _type_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;var k=c;a=HEAP[c+156]==0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_TypeError],__str324874,allocate([HEAP[k+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=0;a=19;break;case 2:j=FUNCTION_TABLE[HEAP[k+156]](c,d,f);a=j!=0?3:18;break;case 3:a=c==_PyType_Type?4:10;break;case 4:a=(HEAP[HEAP[d+4]+84]&67108864)!=0?5:10;break;case 5:a=HEAP[d+8]==1?6:10;break;case 6:a=f==0?9:7;break;case 7:a=(HEAP[HEAP[f+4]+84]&536870912)==0? -10:8;break;case 8:a=_PyDict_Size(f)==0?9:10;break;case 9:h=j;a=19;break;case 10:a=_PyType_IsSubtype(HEAP[j+4],c);var l=j;a=a==0?11:12;break;case 11:h=l;a=19;break;case 12:c=HEAP[l+4];a=(HEAP[c+84]&256)!=0?13:18;break;case 13:a=HEAP[c+148]!=0?14:18;break;case 14:a=FUNCTION_TABLE[HEAP[c+148]](j,d,f)<0?15:18;break;case 15:HEAP[j]-=1;a=HEAP[j]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=17;break;case 17:j=0;a=18;break;case 18:h=j;a=19;break;case 19:return g=h;default:assert(0,"bad label: "+ -a)}} -function _PyType_GenericAlloc(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m;c=g;d=e;var n=l=HEAP[c+16]+3+HEAP[c+20]*(d+1)&-4;b=(HEAP[c+84]&16384)!=0?1:2;break;case 1:var o=__PyObject_GC_Malloc(n);k=o;a=1;b=9;break;case 2:b=n>=0?3:7;break;case 3:b=l!=0?4:5;break;case 4:h=l;b=6;break;case 5:h=1;b=6;break;case 6:j=_malloc(h);b=8;break;case 7:j=0;b=8;break;case 8:var p=j;k=p;a=8;b=9;break;case 9:b=(a==8?p:o)==0?10:11;break;case 10:f=_PyErr_NoMemory();b=21;break;case 11:_llvm_memset_p0i8_i32(k,0, -l,1,0);b=(HEAP[c+84]&512)!=0?12:13;break;case 12:HEAP[c]+=1;b=13;break;case 13:var q=k;b=HEAP[c+20]==0?14:15;break;case 14:HEAP[q+4]=c;HEAP[k]=1;b=16;break;case 15:HEAP[q+8]=d;HEAP[k+4]=c;HEAP[k]=1;b=16;break;case 16:b=(HEAP[c+84]&16384)!=0?17:20;break;case 17:m=k+-12;b=HEAP[m+8]!=-2?18:19;break;case 18:throw _Py_FatalError(__str334875),"Reached an unreachable!";case 19:HEAP[m+8]=-3;HEAP[m]=HEAP[__PyGC_generation0];HEAP[m+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[m+4]]=m;HEAP[HEAP[__PyGC_generation0]+ -4]=m;b=20;break;case 20:f=k;b=21;break;case 21:return b=f;default:assert(0,"bad label: "+b)}}function _PyType_GenericNew(g){return FUNCTION_TABLE[HEAP[g+152]](g,0)} -function _traverse_slots(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;j=a;l=HEAP[d+8];m=d+HEAP[HEAP[d+4]+16];d=0;c=6;break;case 1:c=HEAP[m+4]==16?2:5;break;case 2:n=f+HEAP[m+8];n=HEAP[n];c=n!=0?3:5;break;case 3:o=FUNCTION_TABLE[h](n,j);c=o!=0?4:5;break;case 4:k=o;c=8;break;case 5:d+=1;m+=20;c=6;break;case 6:c=d0?42:3;break;case 3:c=a;d=HEAP[c+24];e=HEAP[c+24]==200?4:5;break;case 4:c=HEAP[c+128];d=HEAP[c+24];e=HEAP[c+24]==200?4:5;break;case 5:a=HEAP[b+4];FUNCTION_TABLE[d](b);HEAP[a]-=1;e=HEAP[a]==0?6:42;break;case 6:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=42;break;case 7:_PyObject_GC_UnTrack(b); -HEAP[__PyTrash_delete_nesting]+=1;e=HEAP[__PyTrash_delete_nesting]<=49?8:40;break;case 8:HEAP[__PyTrash_delete_nesting]+=1;HEAP[__PyTrash_delete_nesting]-=1;c=a;d=HEAP[c+24];e=HEAP[c+24]==200?9:10;break;case 9:c=HEAP[c+128];d=HEAP[c+24];e=HEAP[c+24]==200?9:10;break;case 10:e=HEAP[a+104]!=0?11:13;break;case 11:e=HEAP[c+104]==0?12:13;break;case 12:_PyObject_ClearWeakRefs(b);e=13;break;case 13:e=HEAP[a+188]!=0?14:21;break;case 14:f=b+-12;e=HEAP[f+8]!=-2?15:16;break;case 15:throw _Py_FatalError(__str334875), -"Reached an unreachable!";case 16:HEAP[f+8]=-3;HEAP[f]=HEAP[__PyGC_generation0];HEAP[f+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[f+4]]=f;HEAP[HEAP[__PyGC_generation0]+4]=f;FUNCTION_TABLE[HEAP[a+188]](b);e=HEAP[b]>0?38:17;break;case 17:e=b+-12;HEAP[e+8]=-2;HEAP[HEAP[e+4]]=HEAP[e];HEAP[HEAP[e]+4]=HEAP[e+4];HEAP[e]=0;e=HEAP[a+104]!=0?18:21;break;case 18:e=HEAP[c+104]==0?19:21;break;case 19:h=b+HEAP[HEAP[b+4]+104];e=HEAP[h]!=0?20:21;break;case 20:__PyWeakref_ClearRef(HEAP[h]);e=HEAP[h]!=0?20:21;break; -case 21:c=a;e=HEAP[c+24]==200?22:25;break;case 22:e=HEAP[c+8]!=0?23:24;break;case 23:_clear_slots(c,b);e=24;break;case 24:c=HEAP[c+128];e=HEAP[c+24]==200?22:25;break;case 25:e=HEAP[a+144]!=0?26:32;break;case 26:e=HEAP[c+144]==0?27:32;break;case 27:j=__PyObject_GetDictPtr(b);e=j!=0?28:32;break;case 28:k=HEAP[j];e=k!=0?29:32;break;case 29:HEAP[k]-=1;e=HEAP[k]==0?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=31;break;case 31:HEAP[j]=0;e=32;break;case 32:a=HEAP[b+4];e=(HEAP[c+84]&16384)!= -0?33:36;break;case 33:l=b+-12;e=HEAP[l+8]!=-2?34:35;break;case 34:throw _Py_FatalError(__str334875),"Reached an unreachable!";case 35:HEAP[l+8]=-3;HEAP[l]=HEAP[__PyGC_generation0];HEAP[l+4]=HEAP[HEAP[__PyGC_generation0]+4];HEAP[HEAP[l+4]]=l;HEAP[HEAP[__PyGC_generation0]+4]=l;e=36;break;case 36:FUNCTION_TABLE[d](b);HEAP[a]-=1;e=HEAP[a]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=38;break;case 38:HEAP[__PyTrash_delete_nesting]+=1;HEAP[__PyTrash_delete_nesting]-=1;e=HEAP[__PyTrash_delete_later]!= -0&HEAP[__PyTrash_delete_nesting]<=0?39:41;break;case 39:__PyTrash_destroy_chain();e=41;break;case 40:__PyTrash_deposit_object(b);e=41;break;case 41:HEAP[__PyTrash_delete_nesting]-=1;e=42;break;case 42:return;default:assert(0,"bad label: "+e)}} -function _PyType_IsSubtype(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;b=(HEAP[a+84]&256)==0?1:5;break;case 1:b=c==a|c==_PyBaseObject_Type?2:3;break;case 2:d=1;b=4;break;case 3:d=0;b=4;break;case 4:f=d;b=16;break;case 5:h=HEAP[a+172];b=h!=0?6:12;break;case 6:k=HEAP[h+8];j=0;b=10;break;case 7:b=HEAP[h+12+j*4]==c?8:9;break;case 8:f=1;b=16;break;case 9:j+=1;b=10;break;case 10:b=j=0?1:4;break;case 1:b=k*4!=0?2:3;break;case 2:f=k*4;b=5;break;case 3:f=1;b=5;break;case 4:m=0;b=6;break;case 5:m=b=_malloc(f);b=b==0?6:7;break;case 6:d=-1;b=28;break;case 7:h=0;b=h=HEAP[o+8]?11:12;break;case 11:l+=1;b=23;break;case 12:n=HEAP[HEAP[o+12]+4*HEAP[m+4*h]]; -j=0;b=15;break;case 13:b=HEAP[HEAP[c+12]+4*j];b=_tail_contains(b,HEAP[m+4*j],n)!=0?23:14;break;case 14:j+=1;b=15;break;case 15:b=j=0?17:20;break;case 17:_PyErr_Format(HEAP[_PyExc_TypeError],__str404882,allocate([HEAP[HEAP[r+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[h]-=1;e=HEAP[h]== -0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=19;break;case 19:c=-1;e=27;break;case 20:o=r;e=_solid_base(o);e=_PyType_IsSubtype(n,e)==0?21:24;break;case 21:_PyErr_Format(HEAP[_PyExc_TypeError],__str414883,allocate([HEAP[o+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[h]-=1;e=HEAP[h]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=23;break;case 23:c=-1;e=27;break;case 24:k+=1;e=25;break;case 25:e=k=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str424884);a=0;e=18;break;case 4:k=l;e=HEAP[k+132]==0?5:7;break;case 5:e=_PyType_Ready(k)<0?6:7;break;case 6:a=0;e=18;break;case 7:j=_solid_base(k);e=h==0?8:9;break;case 8:h=j;f=k;e=13;break;case 9:e=_PyType_IsSubtype(h,j)==0?10:13;break; -case 10:e=_PyType_IsSubtype(j,h)!=0?11:12;break;case 11:h=j;f=k;e=13;break;case 12:_PyErr_SetString(HEAP[_PyExc_TypeError],__str434885);a=0;e=18;break;case 13:c+=1;e=14;break;case 14:e=c0?54:61;break;case 54:c=HEAP[v+20]!=0?55:61;break;case 55:_PyErr_Format(HEAP[_PyExc_TypeError], -__str644906,allocate([HEAP[v+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=56;break;case 56:c=HEAP[p];HEAP[c]-=1;c=HEAP[c]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[HEAP[p]+4]+24]](HEAP[p]);c=58;break;case 58:HEAP[r]-=1;c=HEAP[r]==0?59:60;break;case 59:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=60;break;case 60:m=0;c=214;break;case 61:u=c=__unicode_to_string(r,G);c=c==0?56:62;break;case 62:c=u!=r?63:66;break;case 63:HEAP[r]-=1;c=HEAP[r]==0?64:65;break;case 64:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c= -65;break;case 65:r=u;c=66;break;case 66:C=0;c=79;break;case 67:V=HEAP[r+12+C*4];c=_valid_identifier(V)==0?56:68;break;case 68:Q=V+20;c=_strcmp(Q,__str264868)==0?69:73;break;case 69:c=L==0?71:70;break;case 70:c=D!=0?71:72;break;case 71:_PyErr_SetString(HEAP[_PyExc_TypeError],__str654907);c=56;break;case 72:D+=1;c=73;break;case 73:c=_strcmp(Q,__str504892)==0?74:78;break;case 74:c=I==0?76:75;break;case 75:c=R!=0?76:77;break;case 76:_PyErr_SetString(HEAP[_PyExc_TypeError],__str664908);c=56;break;case 77:R+= -1;c=78;break;case 78:C+=1;c=79;break;case 79:c=C1?105:132;break;case 105:c=L==0?107:106;break;case 106:c=D==0?109:107;break;case 107:c=I==0?132:108;break;case 108:c=R==0?109:132;break;case 109:C=0;c=131;break;case 110:u=HEAP[HEAP[p]+12+C*4];c=u==v?130:111;break;case 111:c=HEAP[u+4]==_PyClass_Type?112:118;break;case 112:c=L!=0?113:115;break;case 113:c=D==0?114:115;break; -case 114:D+=1;c=115;break;case 115:c=I!=0?116:132;break;case 116:c=R==0?117:132;break;case 117:R+=1;c=132;break;case 118:w=u;c=L!=0?119:122;break;case 119:c=D==0?120:122;break;case 120:c=HEAP[w+144]!=0?121:122;break;case 121:D+=1;c=122;break;case 122:c=I!=0?123:126;break;case 123:c=R==0?124:126;break;case 124:c=HEAP[w+104]!=0?125:126;break;case 125:R+=1;c=126;break;case 126:c=L!=0?127:128;break;case 127:c=D==0?130:128;break;case 128:c=I!=0?129:132;break;case 129:c=R==0?130:132;break;case 130:C+=1; -c=131;break;case 131:c=C=0?158:161;break;case 158:c=N!=-1?159:160;break;case 159:k=N+1;c=162;break;case 160:k=1;c=162;break;case 161:H=0;c=163;break;case 162:H=c=_malloc(k);c=c==0?163:166;break;case 163:HEAP[t]-=1;c=HEAP[t]==0?164:165;break;case 164:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);c=165;break;case 165:m=0;c=214;break;case 166:_llvm_memcpy_p0i8_p0i8_i32(H,K+20,N+1,1,0);HEAP[t+88]=H;c=167;break;case 167:u=c=_PyDict_GetItemString(HEAP[q],__str674909);c=c!= -0?168:175;break;case 168:c=HEAP[u+4]==_PyFunction_Type?169:175;break;case 169:u=_PyStaticMethod_New(u);c=u==0?170:173;break;case 170:HEAP[t]-=1;c=HEAP[t]==0?171:172;break;case 171:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);c=172;break;case 172:m=0;c=214;break;case 173:_PyDict_SetItemString(HEAP[q],__str674909,u);HEAP[u]-=1;c=HEAP[u]==0?174:175;break;case 174:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);c=175;break;case 175:z=y+HEAP[HEAP[y+4]+16];E=HEAP[v+16];c=r!=0?176:178;break;case 176:C=0;c=C0?197:203;break;case 197:c=HEAP[v+32]==0?198:200;break;case 198:c=HEAP[v+72]==0?199:200;break;case 199:HEAP[t+ -72]=202;c=200;break;case 200:c=HEAP[v+36]==0?201:203;break;case 201:c=HEAP[v+76]==0?202:203;break;case 202:HEAP[t+76]=204;c=203;break;case 203:HEAP[t+24]=200;c=HEAP[t+16]!=8?205:204;break;case 204:c=HEAP[t+20]!=0?205:206;break;case 205:HEAP[t+84]|=16384;c=206;break;case 206:HEAP[t+152]=206;var fa=t+160;c=(HEAP[t+84]&16384)!=0?207:208;break;case 207:HEAP[fa]=208;HEAP[t+92]=196;HEAP[t+96]=198;c=209;break;case 208:HEAP[fa]=210;c=209;break;case 209:c=_PyType_Ready(t);var ha=t;c=c<0?210:213;break;case 210:HEAP[ha]-= -1;c=HEAP[ha]==0?211:212;break;case 211:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);c=212;break;case 212:m=0;c=214;break;case 213:_fixup_slot_dispatchers(ha);m=t;c=214;break;case 214:return g=m,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function __PyType_Lookup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l,m;a=g;c=e;b=HEAP[c+4]==_PyString_Type?1:6;break;case 1:b=HEAP[c+8]<=100?2:6;break;case 2:b=(HEAP[a+84]&524288)!=0?3:6;break;case 3:m=(HEAP[c+12&4294967295]*HEAP[a+192&4294967295]&4294967295)>>>0>>>22;b=HEAP[_method_cache+m*12]==HEAP[a+192]?4:6;break;case 4:b=HEAP[_method_cache+m*12+4]==c?5:6;break;case 5:d=HEAP[_method_cache+m*12+8];b=22;break;case 6:j=HEAP[a+172];b=HEAP[a+172]==0?7:8;break;case 7:d=0;b=22;break; -case 8:k=0;h=HEAP[j+8];f=0;b=14;break;case 9:var n=b=HEAP[j+12+f*4];b=HEAP[b+4]==_PyClass_Type?10:11;break;case 10:l=HEAP[n+12];b=12;break;case 11:l=HEAP[n+132];b=12;break;case 12:k=b=_PyDict_GetItem(l,c);b=b!=0?15:13;break;case 13:f+=1;b=14;break;case 14:b=f>>0>>>22;HEAP[_method_cache+ -m*12]=HEAP[a+192];HEAP[_method_cache+m*12+8]=k;HEAP[c]+=1;b=HEAP[_method_cache+m*12+4];HEAP[b]-=1;b=HEAP[b]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[_method_cache+m*12+4]+4]+24]](HEAP[_method_cache+m*12+4]);b=20;break;case 20:HEAP[_method_cache+m*12+4]=c;b=21;break;case 21:d=k;b=22;break;case 22:return a=d;default:assert(0,"bad label: "+b)}} -function _type_getattro(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;h=HEAP[c+4];b=HEAP[c+132]==0?1:3;break;case 1:b=_PyType_Ready(c)<0?2:3;break;case 2:f=0;b=23;break;case 3:l=0;j=b=__PyType_Lookup(h,d);b=b!=0?4:8;break;case 4:l=HEAP[HEAP[j+4]+136];b=l!=0?5:7;break;case 5:b=HEAP[HEAP[j+4]+140]!=0?6:7;break;case 6:f=FUNCTION_TABLE[l](j,c,h);b=23;break;case 7:HEAP[j]+=1;b=8;break;case 8:k=b=__PyType_Lookup(c,d);b=b!=0?9:16;break;case 9:var o=HEAP[HEAP[k+4]+136];m=o; -j!=0?(a=9,b=10):(a=9,b=13);break;case 10:HEAP[j]-=1;b=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=12;break;case 12:var p=m,a=12;b=13;break;case 13:b=(a==12?p:o)!=0?14:15;break;case 14:f=FUNCTION_TABLE[m](k,0,c);b=23;break;case 15:HEAP[k]+=1;f=k;b=23;break;case 16:b=l!=0?17:20;break;case 17:n=FUNCTION_TABLE[l](j,c,h);HEAP[j]-=1;b=HEAP[j]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=19;break;case 19:f=n;b=23;break;case 20:b=j!=0?21:22;break;case 21:f=j;b= -23;break;case 22:_PyErr_Format(HEAP[_PyExc_AttributeError],__str684910,allocate([HEAP[c+12],0,0,0,d+20,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));f=0;b=23;break;case 23:return a=f;default:assert(0,"bad label: "+b)}} -function _type_setattro(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;var j=c;a=(HEAP[c+84]&512)==0?1:2;break;case 1:_PyErr_Format(HEAP[_PyExc_TypeError],__str694911,allocate([HEAP[j+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));h=-1;a=5;break;case 2:a=_PyObject_GenericSetAttr(j,d,f)<0?3:4;break;case 3:h=-1;a=5;break;case 4:h=_update_slot(c,d);a=5;break;case 5:return g=h;default:assert(0,"bad label: "+a)}} -function _type_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=b+-12;HEAP[a+8]=-2;HEAP[HEAP[a+4]]=HEAP[a];HEAP[HEAP[a]+4]=HEAP[a+4];HEAP[a]=0;_PyObject_ClearWeakRefs(b);a=b;e=HEAP[b+128]!=0?1:3;break;case 1:e=HEAP[b+128];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+128]+4]+24]](HEAP[b+128]);e=3;break;case 3:e=HEAP[b+132]!=0?4:6;break;case 4:e=HEAP[b+132];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+132]+4]+24]](HEAP[b+132]);e=6;break; -case 6:e=HEAP[b+168]!=0?7:9;break;case 7:e=HEAP[b+168];HEAP[e]-=1;e=HEAP[e]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+168]+4]+24]](HEAP[b+168]);e=9;break;case 9:e=HEAP[b+172]!=0?10:12;break;case 10:e=HEAP[b+172];HEAP[e]-=1;e=HEAP[e]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+172]+4]+24]](HEAP[b+172]);e=12;break;case 12:e=HEAP[b+176]!=0?13:15;break;case 13:e=HEAP[b+176];HEAP[e]-=1;e=HEAP[e]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+176]+4]+24]](HEAP[b+176]);e=15; -break;case 15:e=HEAP[b+180]!=0?16:18;break;case 16:e=HEAP[b+180];HEAP[e]-=1;e=HEAP[e]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+180]+4]+24]](HEAP[b+180]);e=18;break;case 18:_PyObject_Free(HEAP[b+88]);e=HEAP[a+428]!=0?19:21;break;case 19:e=HEAP[a+428];HEAP[e]-=1;e=HEAP[e]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+428]+4]+24]](HEAP[a+428]);e=21;break;case 21:e=HEAP[a+432]!=0?22:24;break;case 22:e=HEAP[a+432];HEAP[e]-=1;e=HEAP[e]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+ -432]+4]+24]](HEAP[a+432]);e=24;break;case 24:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);return;default:assert(0,"bad label: "+e)}} -function _type_subclasses(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j;b=g;c=_PyList_New(0);e=c==0?1:2;break;case 1:a=0;e=13;break;case 2:d=HEAP[b+180];e=d==0?3:4;break;case 3:a=c;e=13;break;case 4:j=HEAP[d+8];h=0;e=11;break;case 5:f=HEAP[HEAP[d+12]+4*h];f=HEAP[f+8];e=f!=__Py_NoneStruct?6:10;break;case 6:e=_PyList_Append(c,f)<0?7:10;break;case 7:HEAP[c]-=1;e=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=9;break;case 9:a=0;e=13;break;case 10:h+=1;e=11;break;case 11:e= -h=0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_TypeError],__str894932,allocate([HEAP[HEAP[j+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=-1;b=12;break;case 4:h=j;b=(HEAP[h+84]&512)==0?6:5;break;case 5:b=(HEAP[f+84]&512)==0?6:7;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError], -__str904933,allocate(1,"i32",ALLOC_STACK));d=-1;b=12;break;case 7:b=_compatible_for_assignment(h,f,__str914934)!=0?8:11;break;case 8:HEAP[h]+=1;HEAP[a+4]=h;HEAP[f]-=1;b=HEAP[f]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=10;break;case 10:d=0;b=12;break;case 11:d=-1;b=12;break;case 12:return b=d;default:assert(0,"bad label: "+b)}} -function _import_copyreg(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[_copyreg_str_12072]==0?1:3;break;case 1:g=_PyString_InternFromString(__str934936);HEAP[_copyreg_str_12072]=g;g=HEAP[_copyreg_str_12072]==0?2:3;break;case 2:e=0;g=4;break;case 3:e=_PyImport_Import(HEAP[_copyreg_str_12072]);g=4;break;case 4:return e;default:assert(0,"bad label: "+g)}} -function _slotnames(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[HEAP[b+4]+84]>=0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=15;break;case 2:c=HEAP[b+132];c=_PyDict_GetItemString(c,__str944937);e=c!=0?3:5;break;case 3:e=(HEAP[HEAP[c+4]+84]&33554432)!=0?4:5;break;case 4:HEAP[c]+=1;a=c;e=15;break;case 5:d=e=_import_copyreg();e=e==0?6:7;break;case 6:a=0;e=15;break;case 7:c=_PyObject_CallMethod(d,__str954938,__str824925,allocate([b,0,0,0],["%struct.NullImporter*",0, -0,0],ALLOC_STACK));HEAP[d]-=1;e=HEAP[d]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=9;break;case 9:e=c!=0&c!=__Py_NoneStruct?10:14;break;case 10:e=(HEAP[HEAP[c+4]+84]&33554432)==0?11:14;break;case 11:_PyErr_SetString(HEAP[_PyExc_TypeError],__str964939);HEAP[c]-=1;e=HEAP[c]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=13;break;case 13:c=0;e=14;break;case 14:a=c;e=15;break;case 15:return g=a;default:assert(0,"bad label: "+e)}} -function _reduce_2(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x;a=g;u=r=q=p=o=n=m=l=k=j=h=0;d=_PyObject_GetAttrString(a,__str914934);e=d==0?1:2;break;case 1:c=0;e=73;break;case 2:f=_PyObject_GetAttrString(a,__str974940);e=f!=0?3:8;break;case 3:h=_PyObject_CallObject(f,0);HEAP[f]-=1;e=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=5;break;case 5:e=h!=0?6:42;break;case 6:var y=h;(HEAP[HEAP[h+4]+84]&67108864)==0?(b=6,e=7):(b=6,e=9);break; -case 7:_PyErr_Format(HEAP[_PyExc_TypeError],__str984941,allocate([HEAP[HEAP[y+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));e=42;break;case 8:_PyErr_Clear();var z=_PyTuple_New(0);h=z;b=8;e=9;break;case 9:e=(b==8?z:y)==0?42:10;break;case 10:k=_PyObject_GetAttrString(a,__str994942);e=k!=0?11:14;break;case 11:l=_PyObject_CallObject(k,0);HEAP[k]-=1;e=HEAP[k]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);e=13;break;case 13:e=l==0?42:30;break;case 14:_PyErr_Clear();l=_PyObject_GetAttrString(a, -__str264868);e=l==0?15:16;break;case 15:_PyErr_Clear();l=__Py_NoneStruct;HEAP[l]+=1;e=16;break;case 16:m=e=_slotnames(d);e=e==0?42:17;break;case 17:e=m!=__Py_NoneStruct?18:30;break;case 18:n=_PyDict_New();e=n==0?42:19;break;case 19:s=t=0;e=27;break;case 20:v=HEAP[HEAP[m+12]+4*s];w=_PyObject_GetAttr(a,v);e=w==0?21:22;break;case 21:_PyErr_Clear();e=26;break;case 22:x=_PyDict_SetItem(n,v,w);HEAP[w]-=1;e=HEAP[w]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);e=24;break;case 24:e=x!=0?42: -25;break;case 25:t+=1;e=26;break;case 26:s+=1;e=27;break;case 27:e=HEAP[m+8]>s?20:28;break;case 28:e=t!=0?29:30;break;case 29:l=_Py_BuildValue(__str1004943,allocate([l,0,0,0,n,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=l==0?42:30;break;case 30:e=(HEAP[HEAP[a+4]+84]&33554432)==0?31:32;break;case 31:o=__Py_NoneStruct;HEAP[o]+=1;e=33;break;case 32:o=_PyObject_GetIter(a);e=o==0?42:33;break;case 33:e=(HEAP[HEAP[a+4]+84]&536870912)==0?34:35;break;case 34:p=__Py_NoneStruct; -HEAP[p]+=1;e=36;break;case 35:p=_PyObject_CallMethod(a,__str1014944,__str234865,allocate(1,"i32",ALLOC_STACK));e=p==0?42:36;break;case 36:q=e=_import_copyreg();e=e==0?42:37;break;case 37:r=_PyObject_GetAttrString(q,__str1024945);e=r==0?42:38;break;case 38:t=HEAP[h+8];j=_PyTuple_New(t+1);e=j==0?42:39;break;case 39:HEAP[j+12]=d;s=d=0;e=s1?1:2;break;case 1:d=_reduce_2(a);b=7;break;case 2:f=_import_copyreg();b=f==0?3:4;break;case 3:d=0;b=7;break;case 4:h=_PyEval_CallMethod(f,__str1034946,__str1044947,allocate([a,0,0,0,c,0,0,0],["%struct.NullImporter*",0,0,0,"i32",0,0,0],ALLOC_STACK));HEAP[f]-=1;b=HEAP[f]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=6;break;case 6:d=h;b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function _object_reduce(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b;c=g;a=e;HEAP[f]=0;a=_PyArg_ParseTuple(a,__str1054948,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=__common_reduce(c,HEAP[f]);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _object_reduce_ex(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b,k,l,m;c=g;a=e;HEAP[j]=0;a=_PyArg_ParseTuple(a,__str1064949,allocate([j,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=23;break;case 2:f=_PyObject_GetAttrString(c,__str1074950);a=f==0?3:4;break;case 3:_PyErr_Clear();a=22;break;case 4:k=_PyObject_GetAttrString(c,__str914934);a=k==0?5:8;break;case 5:HEAP[f]-=1;a=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+ -4]+24]](f);a=7;break;case 7:d=0;a=23;break;case 8:l=_PyObject_GetAttrString(k,__str1074950);HEAP[k]-=1;a=HEAP[k]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=10;break;case 10:a=l==0?11:14;break;case 11:HEAP[f]-=1;a=HEAP[f]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=13;break;case 13:d=0;a=23;break;case 14:m=_PyDict_GetItemString(HEAP[_PyBaseObject_Type+132],__str1074950);m=l!=m;HEAP[l]-=1;a=HEAP[l]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=16; -break;case 16:var n=f;a=m!=0?17:20;break;case 17:h=_PyObject_CallObject(n,0);HEAP[f]-=1;a=HEAP[f]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=19;break;case 19:d=h;a=23;break;case 20:HEAP[f]=HEAP[n]-1;a=HEAP[f]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=22;break;case 22:d=__common_reduce(c,HEAP[j]);a=23;break;case 23:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _object_subclasshook(){HEAP[__Py_NotImplementedStruct]+=1;return __Py_NotImplementedStruct} -function _object_format(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h=b,j,k,l;d=g;a=e;k=j=0;a=_PyArg_ParseTuple(a,__str1084951,allocate([h,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=15;break;case 2:var m=HEAP[h];a=(HEAP[HEAP[HEAP[h]+4]+84]&268435456)!=0?3:4;break;case 3:l=HEAP[m+8];var n=_PyObject_Unicode(d);j=n;c=3;a=7;break;case 4:a=(HEAP[HEAP[m+4]+84]&134217728)!=0?5:6;break;case 5:l=HEAP[HEAP[h]+8];var o= -_PyObject_Str(d);j=o;c=5;a=7;break;case 6:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1094952);f=0;a=15;break;case 7:a=(c==5?o:n)!=0?8:11;break;case 8:a=l>0?9:10;break;case 9:a=_PyErr_WarnEx(HEAP[_PyExc_PendingDeprecationWarning],__str17,1)<0?11:10;break;case 10:k=_PyObject_Format(j,HEAP[h]);a=11;break;case 11:a=j!=0?12:14;break;case 12:HEAP[j]-=1;a=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=14;break;case 14:f=k;a=15;break;case 15:return c=f,STACKTOP=b,c;default:assert(0, -"bad label: "+a)}}function _object_sizeof(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=0;c=HEAP[HEAP[b+4]+20];e=c>0?1:2;break;case 1:a=c*HEAP[HEAP[b+4]+8];e=2;break;case 2:return a+=HEAP[HEAP[b+4]+16],g=_PyInt_FromSsize_t(a);default:assert(0,"bad label: "+e)}} -function _add_methods(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k;c=g;d=e;h=HEAP[c+132];b=21;break;case 1:b=_PyDict_GetItemString(h,HEAP[d])!=0?2:3;break;case 2:b=(HEAP[d+8]&64)==0?20:3;break;case 3:var l=(HEAP[d+8]&32)!=0;b=(HEAP[d+8]&16)!=0?4:7;break;case 4:b=l?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1204964);f=-1;b=23;break;case 6:var m=_PyDescr_NewClassMethod(c,d);j=m;a=6;b=14;break;case 7:b=l?8:12;break;case 8:k=_PyCFunction_NewEx(d,0,0);b=k==0?9:10; -break;case 9:f=-1;b=23;break;case 10:j=_PyStaticMethod_New(k);HEAP[k]-=1;b=HEAP[k]==0?11:13;break;case 11:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=13;break;case 12:var n=_PyDescr_NewMethod(c,d);j=n;a=12;b=14;break;case 13:var o=j,a=13;b=14;break;case 14:b=(a==13?o:a==12?n:m)==0?15:16;break;case 15:f=-1;b=23;break;case 16:b=_PyDict_SetItemString(h,HEAP[d],j)<0?17:18;break;case 17:f=-1;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:d+= -16;b=21;break;case 21:b=HEAP[d]!=0?1:22;break;case 22:f=0;b=23;break;case 23:return b=f;default:assert(0,"bad label: "+b)}} -function _add_members(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=HEAP[a+132];b=9;break;case 1:b=_PyDict_GetItemString(f,HEAP[c])!=0?8:2;break;case 2:h=_PyDescr_NewMember(a,c);b=h==0?3:4;break;case 3:d=-1;b=11;break;case 4:b=_PyDict_SetItemString(f,HEAP[c],h)<0?5:6;break;case 5:d=-1;b=11;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:c+=20;b=9;break;case 9:b=HEAP[c]!=0?1:10;break;case 10:d=0;b=11;break;case 11:return b= -d;default:assert(0,"bad label: "+b)}} -function _add_getset(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;f=HEAP[a+132];b=9;break;case 1:b=_PyDict_GetItemString(f,HEAP[c])!=0?8:2;break;case 2:h=_PyDescr_NewGetSet(a,c);b=h==0?3:4;break;case 3:d=-1;b=11;break;case 4:b=_PyDict_SetItemString(f,HEAP[c],h)<0?5:6;break;case 5:d=-1;b=11;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=8;break;case 8:c+=20;b=9;break;case 9:b=HEAP[c]!=0?1:10;break;case 10:d=0;b=11;break;case 11:return b= -d;default:assert(0,"bad label: "+b)}} -function _inherit_special(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[a+80]==0?1:3;break;case 1:b=HEAP[c+80]!=0?2:3;break;case 2:HEAP[a+84]&=-2097154;HEAP[a+84]|=HEAP[c+84]&2097153;b=3;break;case 3:b=HEAP[a+52]==0?4:6;break;case 4:b=HEAP[c+52]!=0?5:6;break;case 5:HEAP[a+84]&=-3;HEAP[a+84]|=HEAP[c+84]&2;b=6;break;case 6:b=(HEAP[a+84]&8)!=(HEAP[c+84]&8)?7:14;break;case 7:b=HEAP[a+48]!=0?9:8;break;case 8:b=HEAP[c+48]!=0?11:9;break;case 9:b=HEAP[a+52]!=0?14:10;break;case 10:b= -HEAP[c+52]!=0?11:14;break;case 11:HEAP[a+84]&=-9;b=HEAP[a+48]==0?12:14;break;case 12:b=HEAP[a+52]==0?13:14;break;case 13:HEAP[a+84]|=HEAP[c+84]&8;b=14;break;case 14:b=HEAP[a+48]==0?15:17;break;case 15:b=HEAP[c+48]!=0?16:17;break;case 16:HEAP[a+84]&=-17;HEAP[a+84]|=HEAP[c+84]&16;b=17;break;case 17:f=HEAP[c+16];b=HEAP[a+16]!=0?18:19;break;case 18:d=HEAP[a+16];b=20;break;case 19:d=f;b=20;break;case 20:h=d;b=(HEAP[a+84]&16384)==0?21:29;break;case 21:b=(HEAP[c+84]&16384)!=0?22:29;break;case 22:b=(HEAP[a+ -84]&32)!=0?23:29;break;case 23:b=HEAP[a+92]==0?24:29;break;case 24:b=HEAP[a+96]==0?25:29;break;case 25:HEAP[a+84]|=16384;b=HEAP[a+92]==0?26:27;break;case 26:HEAP[a+92]=HEAP[c+92];b=27;break;case 27:b=HEAP[a+96]==0?28:29;break;case 28:HEAP[a+96]=HEAP[c+96];b=29;break;case 29:b=(HEAP[a+84]&256&HEAP[c+84])!=0?30:34;break;case 30:b=c!=_PyBaseObject_Type?32:31;break;case 31:b=(HEAP[a+84]&512)!=0?32:34;break;case 32:b=HEAP[a+156]==0?33:34;break;case 33:HEAP[a+156]=HEAP[c+156];b=34;break;case 34:HEAP[a+ -16]=h;b=HEAP[a+20]==0?35:36;break;case 35:HEAP[a+20]=HEAP[c+20];b=36;break;case 36:b=(HEAP[a+84]&64&HEAP[c+84])!=0?37:39;break;case 37:b=HEAP[a+104]==0?38:39;break;case 38:HEAP[a+104]=HEAP[c+104];b=39;break;case 39:b=(HEAP[a+84]&256&HEAP[c+84])!=0?40:42;break;case 40:b=HEAP[a+144]==0?41:42;break;case 41:HEAP[a+144]=HEAP[c+144];b=42;break;case 42:b=_PyType_IsSubtype(c,HEAP[_PyExc_BaseException])!=0?43:44;break;case 43:HEAP[a+84]|=1073741824;b=60;break;case 44:b=_PyType_IsSubtype(c,_PyType_Type)!=0? -45:46;break;case 45:HEAP[a+84]|=-2147483648;b=60;break;case 46:b=_PyType_IsSubtype(c,_PyInt_Type)!=0?47:48;break;case 47:HEAP[a+84]|=8388608;b=60;break;case 48:b=_PyType_IsSubtype(c,_PyLong_Type)!=0?49:50;break;case 49:HEAP[a+84]|=16777216;b=60;break;case 50:b=_PyType_IsSubtype(c,_PyString_Type)!=0?51:52;break;case 51:HEAP[a+84]|=134217728;b=60;break;case 52:b=_PyType_IsSubtype(c,_PyUnicode_Type)!=0?53:54;break;case 53:HEAP[a+84]|=268435456;b=60;break;case 54:b=_PyType_IsSubtype(c,_PyTuple_Type)!= -0?55:56;break;case 55:HEAP[a+84]|=67108864;b=60;break;case 56:b=_PyType_IsSubtype(c,_PyList_Type)!=0?57:58;break;case 57:HEAP[a+84]|=33554432;b=60;break;case 58:b=_PyType_IsSubtype(c,_PyDict_Type)!=0?59:60;break;case 59:HEAP[a+84]|=536870912;b=60;break;case 60:return;default:assert(0,"bad label: "+b)}} -function _overrides_name(g,e){var b;for(b=-1;;)switch(b){case -1:var a;b=_PyDict_GetItemString(HEAP[g+132],e)!=0?1:2;break;case 1:a=1;b=3;break;case 2:a=0;b=3;break;case 3:return b=a;default:assert(0,"bad label: "+b)}} -function _inherit_slots(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+48]!=0?1:201;break;case 1:b=HEAP[c+48]!=0?2:201;break;case 2:d=HEAP[c+128];b=HEAP[d+48]==0?3:4;break;case 3:d=0;b=4;break;case 4:b=HEAP[HEAP[a+48]]==0?5:9;break;case 5:b=HEAP[HEAP[c+48]]!=0?6:9;break;case 6:b=d==0?8:7;break;case 7:b=HEAP[HEAP[c+48]]!=HEAP[HEAP[d+48]]?8:9;break;case 8:HEAP[HEAP[a+48]]=HEAP[HEAP[c+48]];b=9;break;case 9:b=HEAP[HEAP[a+48]+4]==0?10:14;break;case 10:b=HEAP[HEAP[c+48]+4]!=0?11:14; -break;case 11:b=d==0?13:12;break;case 12:b=HEAP[HEAP[c+48]+4]!=HEAP[HEAP[d+48]+4]?13:14;break;case 13:HEAP[HEAP[a+48]+4]=HEAP[HEAP[c+48]+4];b=14;break;case 14:b=HEAP[HEAP[a+48]+8]==0?15:19;break;case 15:b=HEAP[HEAP[c+48]+8]!=0?16:19;break;case 16:b=d==0?18:17;break;case 17:b=HEAP[HEAP[c+48]+8]!=HEAP[HEAP[d+48]+8]?18:19;break;case 18:HEAP[HEAP[a+48]+8]=HEAP[HEAP[c+48]+8];b=19;break;case 19:b=HEAP[HEAP[a+48]+12]==0?20:24;break;case 20:b=HEAP[HEAP[c+48]+12]!=0?21:24;break;case 21:b=d==0?23:22;break; -case 22:b=HEAP[HEAP[c+48]+12]!=HEAP[HEAP[d+48]+12]?23:24;break;case 23:HEAP[HEAP[a+48]+12]=HEAP[HEAP[c+48]+12];b=24;break;case 24:b=HEAP[HEAP[a+48]+16]==0?25:29;break;case 25:b=HEAP[HEAP[c+48]+16]!=0?26:29;break;case 26:b=d==0?28:27;break;case 27:b=HEAP[HEAP[c+48]+16]!=HEAP[HEAP[d+48]+16]?28:29;break;case 28:HEAP[HEAP[a+48]+16]=HEAP[HEAP[c+48]+16];b=29;break;case 29:b=HEAP[HEAP[a+48]+20]==0?30:34;break;case 30:b=HEAP[HEAP[c+48]+20]!=0?31:34;break;case 31:b=d==0?33:32;break;case 32:b=HEAP[HEAP[c+48]+ -20]!=HEAP[HEAP[d+48]+20]?33:34;break;case 33:HEAP[HEAP[a+48]+20]=HEAP[HEAP[c+48]+20];b=34;break;case 34:b=HEAP[HEAP[a+48]+24]==0?35:39;break;case 35:b=HEAP[HEAP[c+48]+24]!=0?36:39;break;case 36:b=d==0?38:37;break;case 37:b=HEAP[HEAP[c+48]+24]!=HEAP[HEAP[d+48]+24]?38:39;break;case 38:HEAP[HEAP[a+48]+24]=HEAP[HEAP[c+48]+24];b=39;break;case 39:b=HEAP[HEAP[a+48]+28]==0?40:44;break;case 40:b=HEAP[HEAP[c+48]+28]!=0?41:44;break;case 41:b=d==0?43:42;break;case 42:b=HEAP[HEAP[c+48]+28]!=HEAP[HEAP[d+48]+28]? -43:44;break;case 43:HEAP[HEAP[a+48]+28]=HEAP[HEAP[c+48]+28];b=44;break;case 44:b=HEAP[HEAP[a+48]+32]==0?45:49;break;case 45:b=HEAP[HEAP[c+48]+32]!=0?46:49;break;case 46:b=d==0?48:47;break;case 47:b=HEAP[HEAP[c+48]+32]!=HEAP[HEAP[d+48]+32]?48:49;break;case 48:HEAP[HEAP[a+48]+32]=HEAP[HEAP[c+48]+32];b=49;break;case 49:b=HEAP[HEAP[a+48]+36]==0?50:54;break;case 50:b=HEAP[HEAP[c+48]+36]!=0?51:54;break;case 51:b=d==0?53:52;break;case 52:b=HEAP[HEAP[c+48]+36]!=HEAP[HEAP[d+48]+36]?53:54;break;case 53:HEAP[HEAP[a+ -48]+36]=HEAP[HEAP[c+48]+36];b=54;break;case 54:b=HEAP[HEAP[a+48]+40]==0?55:59;break;case 55:b=HEAP[HEAP[c+48]+40]!=0?56:59;break;case 56:b=d==0?58:57;break;case 57:b=HEAP[HEAP[c+48]+40]!=HEAP[HEAP[d+48]+40]?58:59;break;case 58:HEAP[HEAP[a+48]+40]=HEAP[HEAP[c+48]+40];b=59;break;case 59:b=HEAP[HEAP[a+48]+44]==0?60:64;break;case 60:b=HEAP[HEAP[c+48]+44]!=0?61:64;break;case 61:b=d==0?63:62;break;case 62:b=HEAP[HEAP[c+48]+44]!=HEAP[HEAP[d+48]+44]?63:64;break;case 63:HEAP[HEAP[a+48]+44]=HEAP[HEAP[c+48]+ -44];b=64;break;case 64:b=HEAP[HEAP[a+48]+48]==0?65:69;break;case 65:b=HEAP[HEAP[c+48]+48]!=0?66:69;break;case 66:b=d==0?68:67;break;case 67:b=HEAP[HEAP[c+48]+48]!=HEAP[HEAP[d+48]+48]?68:69;break;case 68:HEAP[HEAP[a+48]+48]=HEAP[HEAP[c+48]+48];b=69;break;case 69:b=HEAP[HEAP[a+48]+52]==0?70:74;break;case 70:b=HEAP[HEAP[c+48]+52]!=0?71:74;break;case 71:b=d==0?73:72;break;case 72:b=HEAP[HEAP[c+48]+52]!=HEAP[HEAP[d+48]+52]?73:74;break;case 73:HEAP[HEAP[a+48]+52]=HEAP[HEAP[c+48]+52];b=74;break;case 74:b= -HEAP[HEAP[a+48]+56]==0?75:79;break;case 75:b=HEAP[HEAP[c+48]+56]!=0?76:79;break;case 76:b=d==0?78:77;break;case 77:b=HEAP[HEAP[c+48]+56]!=HEAP[HEAP[d+48]+56]?78:79;break;case 78:HEAP[HEAP[a+48]+56]=HEAP[HEAP[c+48]+56];b=79;break;case 79:b=HEAP[HEAP[a+48]+60]==0?80:84;break;case 80:b=HEAP[HEAP[c+48]+60]!=0?81:84;break;case 81:b=d==0?83:82;break;case 82:b=HEAP[HEAP[c+48]+60]!=HEAP[HEAP[d+48]+60]?83:84;break;case 83:HEAP[HEAP[a+48]+60]=HEAP[HEAP[c+48]+60];b=84;break;case 84:b=HEAP[HEAP[a+48]+64]==0? -85:89;break;case 85:b=HEAP[HEAP[c+48]+64]!=0?86:89;break;case 86:b=d==0?88:87;break;case 87:b=HEAP[HEAP[c+48]+64]!=HEAP[HEAP[d+48]+64]?88:89;break;case 88:HEAP[HEAP[a+48]+64]=HEAP[HEAP[c+48]+64];b=89;break;case 89:b=HEAP[HEAP[a+48]+68]==0?90:94;break;case 90:b=HEAP[HEAP[c+48]+68]!=0?91:94;break;case 91:b=d==0?93:92;break;case 92:b=HEAP[HEAP[c+48]+68]!=HEAP[HEAP[d+48]+68]?93:94;break;case 93:HEAP[HEAP[a+48]+68]=HEAP[HEAP[c+48]+68];b=94;break;case 94:b=HEAP[HEAP[a+48]+72]==0?95:99;break;case 95:b=HEAP[HEAP[c+ -48]+72]!=0?96:99;break;case 96:b=d==0?98:97;break;case 97:b=HEAP[HEAP[c+48]+72]!=HEAP[HEAP[d+48]+72]?98:99;break;case 98:HEAP[HEAP[a+48]+72]=HEAP[HEAP[c+48]+72];b=99;break;case 99:b=HEAP[HEAP[a+48]+76]==0?100:104;break;case 100:b=HEAP[HEAP[c+48]+76]!=0?101:104;break;case 101:b=d==0?103:102;break;case 102:b=HEAP[HEAP[c+48]+76]!=HEAP[HEAP[d+48]+76]?103:104;break;case 103:HEAP[HEAP[a+48]+76]=HEAP[HEAP[c+48]+76];b=104;break;case 104:b=HEAP[HEAP[a+48]+80]==0?105:109;break;case 105:b=HEAP[HEAP[c+48]+80]!= -0?106:109;break;case 106:b=d==0?108:107;break;case 107:b=HEAP[HEAP[c+48]+80]!=HEAP[HEAP[d+48]+80]?108:109;break;case 108:HEAP[HEAP[a+48]+80]=HEAP[HEAP[c+48]+80];b=109;break;case 109:b=HEAP[HEAP[a+48]+84]==0?110:114;break;case 110:b=HEAP[HEAP[c+48]+84]!=0?111:114;break;case 111:b=d==0?113:112;break;case 112:b=HEAP[HEAP[c+48]+84]!=HEAP[HEAP[d+48]+84]?113:114;break;case 113:HEAP[HEAP[a+48]+84]=HEAP[HEAP[c+48]+84];b=114;break;case 114:b=HEAP[HEAP[a+48]+88]==0?115:119;break;case 115:b=HEAP[HEAP[c+48]+ -88]!=0?116:119;break;case 116:b=d==0?118:117;break;case 117:b=HEAP[HEAP[c+48]+88]!=HEAP[HEAP[d+48]+88]?118:119;break;case 118:HEAP[HEAP[a+48]+88]=HEAP[HEAP[c+48]+88];b=119;break;case 119:b=HEAP[HEAP[a+48]+92]==0?120:124;break;case 120:b=HEAP[HEAP[c+48]+92]!=0?121:124;break;case 121:b=d==0?123:122;break;case 122:b=HEAP[HEAP[c+48]+92]!=HEAP[HEAP[d+48]+92]?123:124;break;case 123:HEAP[HEAP[a+48]+92]=HEAP[HEAP[c+48]+92];b=124;break;case 124:b=HEAP[HEAP[a+48]+96]==0?125:129;break;case 125:b=HEAP[HEAP[c+ -48]+96]!=0?126:129;break;case 126:b=d==0?128:127;break;case 127:b=HEAP[HEAP[c+48]+96]!=HEAP[HEAP[d+48]+96]?128:129;break;case 128:HEAP[HEAP[a+48]+96]=HEAP[HEAP[c+48]+96];b=129;break;case 129:b=HEAP[HEAP[a+48]+100]==0?130:134;break;case 130:b=HEAP[HEAP[c+48]+100]!=0?131:134;break;case 131:b=d==0?133:132;break;case 132:b=HEAP[HEAP[c+48]+100]!=HEAP[HEAP[d+48]+100]?133:134;break;case 133:HEAP[HEAP[a+48]+100]=HEAP[HEAP[c+48]+100];b=134;break;case 134:b=HEAP[HEAP[a+48]+104]==0?135:139;break;case 135:b= -HEAP[HEAP[c+48]+104]!=0?136:139;break;case 136:b=d==0?138:137;break;case 137:b=HEAP[HEAP[c+48]+104]!=HEAP[HEAP[d+48]+104]?138:139;break;case 138:HEAP[HEAP[a+48]+104]=HEAP[HEAP[c+48]+104];b=139;break;case 139:b=HEAP[HEAP[a+48]+108]==0?140:144;break;case 140:b=HEAP[HEAP[c+48]+108]!=0?141:144;break;case 141:b=d==0?143:142;break;case 142:b=HEAP[HEAP[c+48]+108]!=HEAP[HEAP[d+48]+108]?143:144;break;case 143:HEAP[HEAP[a+48]+108]=HEAP[HEAP[c+48]+108];b=144;break;case 144:b=HEAP[HEAP[a+48]+112]==0?145:149; -break;case 145:b=HEAP[HEAP[c+48]+112]!=0?146:149;break;case 146:b=d==0?148:147;break;case 147:b=HEAP[HEAP[c+48]+112]!=HEAP[HEAP[d+48]+112]?148:149;break;case 148:HEAP[HEAP[a+48]+112]=HEAP[HEAP[c+48]+112];b=149;break;case 149:b=HEAP[HEAP[a+48]+116]==0?150:154;break;case 150:b=HEAP[HEAP[c+48]+116]!=0?151:154;break;case 151:b=d==0?153:152;break;case 152:b=HEAP[HEAP[c+48]+116]!=HEAP[HEAP[d+48]+116]?153:154;break;case 153:HEAP[HEAP[a+48]+116]=HEAP[HEAP[c+48]+116];b=154;break;case 154:b=HEAP[HEAP[a+48]+ -120]==0?155:159;break;case 155:b=HEAP[HEAP[c+48]+120]!=0?156:159;break;case 156:b=d==0?158:157;break;case 157:b=HEAP[HEAP[c+48]+120]!=HEAP[HEAP[d+48]+120]?158:159;break;case 158:HEAP[HEAP[a+48]+120]=HEAP[HEAP[c+48]+120];b=159;break;case 159:b=HEAP[HEAP[a+48]+124]==0?160:164;break;case 160:b=HEAP[HEAP[c+48]+124]!=0?161:164;break;case 161:b=d==0?163:162;break;case 162:b=HEAP[HEAP[c+48]+124]!=HEAP[HEAP[d+48]+124]?163:164;break;case 163:HEAP[HEAP[a+48]+124]=HEAP[HEAP[c+48]+124];b=164;break;case 164:b= -HEAP[HEAP[a+48]+128]==0?165:169;break;case 165:b=HEAP[HEAP[c+48]+128]!=0?166:169;break;case 166:b=d==0?168:167;break;case 167:b=HEAP[HEAP[c+48]+128]!=HEAP[HEAP[d+48]+128]?168:169;break;case 168:HEAP[HEAP[a+48]+128]=HEAP[HEAP[c+48]+128];b=169;break;case 169:b=HEAP[HEAP[a+48]+132]==0?170:174;break;case 170:b=HEAP[HEAP[c+48]+132]!=0?171:174;break;case 171:b=d==0?173:172;break;case 172:b=HEAP[HEAP[c+48]+132]!=HEAP[HEAP[d+48]+132]?173:174;break;case 173:HEAP[HEAP[a+48]+132]=HEAP[HEAP[c+48]+132];b=174; -break;case 174:b=(HEAP[c+84]&16)!=0?175:195;break;case 175:b=HEAP[HEAP[a+48]+140]==0?176:180;break;case 176:b=HEAP[HEAP[c+48]+140]!=0?177:180;break;case 177:b=d==0?179:178;break;case 178:b=HEAP[HEAP[c+48]+140]!=HEAP[HEAP[d+48]+140]?179:180;break;case 179:HEAP[HEAP[a+48]+140]=HEAP[HEAP[c+48]+140];b=180;break;case 180:b=HEAP[HEAP[a+48]+136]==0?181:185;break;case 181:b=HEAP[HEAP[c+48]+136]!=0?182:185;break;case 182:b=d==0?184:183;break;case 183:b=HEAP[HEAP[c+48]+136]!=HEAP[HEAP[d+48]+136]?184:185;break; -case 184:HEAP[HEAP[a+48]+136]=HEAP[HEAP[c+48]+136];b=185;break;case 185:b=HEAP[HEAP[a+48]+148]==0?186:190;break;case 186:b=HEAP[HEAP[c+48]+148]!=0?187:190;break;case 187:b=d==0?189:188;break;case 188:b=HEAP[HEAP[c+48]+148]!=HEAP[HEAP[d+48]+148]?189:190;break;case 189:HEAP[HEAP[a+48]+148]=HEAP[HEAP[c+48]+148];b=190;break;case 190:b=HEAP[HEAP[a+48]+144]==0?191:195;break;case 191:b=HEAP[HEAP[c+48]+144]!=0?192:195;break;case 192:b=d==0?194:193;break;case 193:b=HEAP[HEAP[c+48]+144]!=HEAP[HEAP[d+48]+144]? -194:195;break;case 194:HEAP[HEAP[a+48]+144]=HEAP[HEAP[c+48]+144];b=195;break;case 195:b=(HEAP[c+84]&131072)!=0?196:201;break;case 196:b=HEAP[HEAP[a+48]+152]==0?197:201;break;case 197:b=HEAP[HEAP[c+48]+152]!=0?198:201;break;case 198:b=d==0?200:199;break;case 199:b=HEAP[HEAP[c+48]+152]!=HEAP[HEAP[d+48]+152]?200:201;break;case 200:HEAP[HEAP[a+48]+152]=HEAP[HEAP[c+48]+152];b=201;break;case 201:b=HEAP[a+52]!=0?202:255;break;case 202:b=HEAP[c+52]!=0?203:255;break;case 203:d=HEAP[c+128];b=HEAP[d+52]==0? -204:205;break;case 204:d=0;b=205;break;case 205:b=HEAP[HEAP[a+52]]==0?206:210;break;case 206:b=HEAP[HEAP[c+52]]!=0?207:210;break;case 207:b=d==0?209:208;break;case 208:b=HEAP[HEAP[c+52]]!=HEAP[HEAP[d+52]]?209:210;break;case 209:HEAP[HEAP[a+52]]=HEAP[HEAP[c+52]];b=210;break;case 210:b=HEAP[HEAP[a+52]+4]==0?211:215;break;case 211:b=HEAP[HEAP[c+52]+4]!=0?212:215;break;case 212:b=d==0?214:213;break;case 213:b=HEAP[HEAP[c+52]+4]!=HEAP[HEAP[d+52]+4]?214:215;break;case 214:HEAP[HEAP[a+52]+4]=HEAP[HEAP[c+ -52]+4];b=215;break;case 215:b=HEAP[HEAP[a+52]+8]==0?216:220;break;case 216:b=HEAP[HEAP[c+52]+8]!=0?217:220;break;case 217:b=d==0?219:218;break;case 218:b=HEAP[HEAP[c+52]+8]!=HEAP[HEAP[d+52]+8]?219:220;break;case 219:HEAP[HEAP[a+52]+8]=HEAP[HEAP[c+52]+8];b=220;break;case 220:b=HEAP[HEAP[a+52]+12]==0?221:225;break;case 221:b=HEAP[HEAP[c+52]+12]!=0?222:225;break;case 222:b=d==0?224:223;break;case 223:b=HEAP[HEAP[c+52]+12]!=HEAP[HEAP[d+52]+12]?224:225;break;case 224:HEAP[HEAP[a+52]+12]=HEAP[HEAP[c+52]+ -12];b=225;break;case 225:b=HEAP[HEAP[a+52]+16]==0?226:230;break;case 226:b=HEAP[HEAP[c+52]+16]!=0?227:230;break;case 227:b=d==0?229:228;break;case 228:b=HEAP[HEAP[c+52]+16]!=HEAP[HEAP[d+52]+16]?229:230;break;case 229:HEAP[HEAP[a+52]+16]=HEAP[HEAP[c+52]+16];b=230;break;case 230:b=HEAP[HEAP[a+52]+20]==0?231:235;break;case 231:b=HEAP[HEAP[c+52]+20]!=0?232:235;break;case 232:b=d==0?234:233;break;case 233:b=HEAP[HEAP[c+52]+20]!=HEAP[HEAP[d+52]+20]?234:235;break;case 234:HEAP[HEAP[a+52]+20]=HEAP[HEAP[c+ -52]+20];b=235;break;case 235:b=HEAP[HEAP[a+52]+24]==0?236:240;break;case 236:b=HEAP[HEAP[c+52]+24]!=0?237:240;break;case 237:b=d==0?239:238;break;case 238:b=HEAP[HEAP[c+52]+24]!=HEAP[HEAP[d+52]+24]?239:240;break;case 239:HEAP[HEAP[a+52]+24]=HEAP[HEAP[c+52]+24];b=240;break;case 240:b=HEAP[HEAP[a+52]+28]==0?241:245;break;case 241:b=HEAP[HEAP[c+52]+28]!=0?242:245;break;case 242:b=d==0?244:243;break;case 243:b=HEAP[HEAP[c+52]+28]!=HEAP[HEAP[d+52]+28]?244:245;break;case 244:HEAP[HEAP[a+52]+28]=HEAP[HEAP[c+ -52]+28];b=245;break;case 245:b=HEAP[HEAP[a+52]+32]==0?246:250;break;case 246:b=HEAP[HEAP[c+52]+32]!=0?247:250;break;case 247:b=d==0?249:248;break;case 248:b=HEAP[HEAP[c+52]+32]!=HEAP[HEAP[d+52]+32]?249:250;break;case 249:HEAP[HEAP[a+52]+32]=HEAP[HEAP[c+52]+32];b=250;break;case 250:b=HEAP[HEAP[a+52]+36]==0?251:255;break;case 251:b=HEAP[HEAP[c+52]+36]!=0?252:255;break;case 252:b=d==0?254:253;break;case 253:b=HEAP[HEAP[c+52]+36]!=HEAP[HEAP[d+52]+36]?254:255;break;case 254:HEAP[HEAP[a+52]+36]=HEAP[HEAP[c+ -52]+36];b=255;break;case 255:b=HEAP[a+56]!=0?256:274;break;case 256:b=HEAP[c+56]!=0?257:274;break;case 257:d=HEAP[c+128];b=HEAP[d+56]==0?258:259;break;case 258:d=0;b=259;break;case 259:b=HEAP[HEAP[a+56]]==0?260:264;break;case 260:b=HEAP[HEAP[c+56]]!=0?261:264;break;case 261:b=d==0?263:262;break;case 262:b=HEAP[HEAP[c+56]]!=HEAP[HEAP[d+56]]?263:264;break;case 263:HEAP[HEAP[a+56]]=HEAP[HEAP[c+56]];b=264;break;case 264:b=HEAP[HEAP[a+56]+4]==0?265:269;break;case 265:b=HEAP[HEAP[c+56]+4]!=0?266:269;break; -case 266:b=d==0?268:267;break;case 267:b=HEAP[HEAP[c+56]+4]!=HEAP[HEAP[d+56]+4]?268:269;break;case 268:HEAP[HEAP[a+56]+4]=HEAP[HEAP[c+56]+4];b=269;break;case 269:b=HEAP[HEAP[a+56]+8]==0?270:274;break;case 270:b=HEAP[HEAP[c+56]+8]!=0?271:274;break;case 271:b=d==0?273:272;break;case 272:b=HEAP[HEAP[c+56]+8]!=HEAP[HEAP[d+56]+8]?273:274;break;case 273:HEAP[HEAP[a+56]+8]=HEAP[HEAP[c+56]+8];b=274;break;case 274:b=HEAP[a+80]!=0?275:308;break;case 275:b=HEAP[c+80]!=0?276:308;break;case 276:d=HEAP[c+128]; -b=HEAP[d+80]==0?277:278;break;case 277:d=0;b=278;break;case 278:b=HEAP[HEAP[a+80]]==0?279:283;break;case 279:b=HEAP[HEAP[c+80]]!=0?280:283;break;case 280:b=d==0?282:281;break;case 281:b=HEAP[HEAP[c+80]]!=HEAP[HEAP[d+80]]?282:283;break;case 282:HEAP[HEAP[a+80]]=HEAP[HEAP[c+80]];b=283;break;case 283:b=HEAP[HEAP[a+80]+4]==0?284:288;break;case 284:b=HEAP[HEAP[c+80]+4]!=0?285:288;break;case 285:b=d==0?287:286;break;case 286:b=HEAP[HEAP[c+80]+4]!=HEAP[HEAP[d+80]+4]?287:288;break;case 287:HEAP[HEAP[a+80]+ -4]=HEAP[HEAP[c+80]+4];b=288;break;case 288:b=HEAP[HEAP[a+80]+8]==0?289:293;break;case 289:b=HEAP[HEAP[c+80]+8]!=0?290:293;break;case 290:b=d==0?292:291;break;case 291:b=HEAP[HEAP[c+80]+8]!=HEAP[HEAP[d+80]+8]?292:293;break;case 292:HEAP[HEAP[a+80]+8]=HEAP[HEAP[c+80]+8];b=293;break;case 293:b=HEAP[HEAP[a+80]+12]==0?294:298;break;case 294:b=HEAP[HEAP[c+80]+12]!=0?295:298;break;case 295:b=d==0?297:296;break;case 296:b=HEAP[HEAP[c+80]+12]!=HEAP[HEAP[d+80]+12]?297:298;break;case 297:HEAP[HEAP[a+80]+12]= -HEAP[HEAP[c+80]+12];b=298;break;case 298:b=HEAP[HEAP[a+80]+16]==0?299:303;break;case 299:b=HEAP[HEAP[c+80]+16]!=0?300:303;break;case 300:b=d==0?302:301;break;case 301:b=HEAP[HEAP[c+80]+16]!=HEAP[HEAP[d+80]+16]?302:303;break;case 302:HEAP[HEAP[a+80]+16]=HEAP[HEAP[c+80]+16];b=303;break;case 303:b=HEAP[HEAP[a+80]+20]==0?304:308;break;case 304:b=HEAP[HEAP[c+80]+20]!=0?305:308;break;case 305:b=d==0?307:306;break;case 306:b=HEAP[HEAP[c+80]+20]!=HEAP[HEAP[d+80]+20]?307:308;break;case 307:HEAP[HEAP[a+80]+ -20]=HEAP[HEAP[c+80]+20];b=308;break;case 308:d=HEAP[c+128];b=HEAP[a+24]==0?309:313;break;case 309:b=HEAP[c+24]!=0?310:313;break;case 310:b=d==0?312:311;break;case 311:b=HEAP[c+24]!=HEAP[d+24]?312:313;break;case 312:HEAP[a+24]=HEAP[c+24];b=313;break;case 313:b=HEAP[a+28]==0?314:318;break;case 314:b=HEAP[c+28]!=0?315:318;break;case 315:b=d==0?317:316;break;case 316:b=HEAP[c+28]!=HEAP[d+28]?317:318;break;case 317:HEAP[a+28]=HEAP[c+28];b=318;break;case 318:b=HEAP[a+32]==0?319:321;break;case 319:b=HEAP[a+ -72]==0?320:321;break;case 320:HEAP[a+32]=HEAP[c+32];HEAP[a+72]=HEAP[c+72];b=321;break;case 321:b=HEAP[a+36]==0?322:324;break;case 322:b=HEAP[a+76]==0?323:324;break;case 323:HEAP[a+36]=HEAP[c+36];HEAP[a+76]=HEAP[c+76];b=324;break;case 324:b=HEAP[a+44]==0?325:329;break;case 325:b=HEAP[c+44]!=0?326:329;break;case 326:b=d==0?328:327;break;case 327:b=HEAP[c+44]!=HEAP[d+44]?328:329;break;case 328:HEAP[a+44]=HEAP[c+44];b=329;break;case 329:b=HEAP[a+64]==0?330:334;break;case 330:b=HEAP[c+64]!=0?331:334;break; -case 331:b=d==0?333:332;break;case 332:b=HEAP[c+64]!=HEAP[d+64]?333:334;break;case 333:HEAP[a+64]=HEAP[c+64];b=334;break;case 334:b=HEAP[a+68]==0?335:339;break;case 335:b=HEAP[c+68]!=0?336:339;break;case 336:b=d==0?338:337;break;case 337:b=HEAP[c+68]!=HEAP[d+68]?338:339;break;case 338:HEAP[a+68]=HEAP[c+68];b=339;break;case 339:var f=HEAP[a+40]==0;b=(HEAP[a+84]&32&HEAP[c+84])!=0?340:350;break;case 340:b=f?341:355;break;case 341:b=HEAP[a+100]==0?342:355;break;case 342:b=HEAP[a+60]==0?343:355;break; -case 343:HEAP[a+40]=HEAP[c+40];HEAP[a+100]=HEAP[c+100];HEAP[a+60]=HEAP[c+60];b=HEAP[_Py_Py3kWarningFlag]!=0?344:355;break;case 344:b=HEAP[c+60]!=0?345:355;break;case 345:b=HEAP[c+60]!=220?346:355;break;case 346:b=_overrides_name(a,__str1214965)==0?347:355;break;case 347:b=_overrides_name(a,__str1224966)!=0&HEAP[_Py_Py3kWarningFlag]!=0?348:355;break;case 348:b=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str1234967,1)<0?349:355;break;case 349:_PyErr_Clear();b=355;break;case 350:b=f?351:355;break; -case 351:b=HEAP[c+40]!=0?352:355;break;case 352:b=d==0?354:353;break;case 353:b=HEAP[c+40]!=HEAP[d+40]?354:355;break;case 354:HEAP[a+40]=HEAP[c+40];b=355;break;case 355:b=(HEAP[a+84]&128&HEAP[c+84])!=0?356:366;break;case 356:b=HEAP[a+108]==0?357:361;break;case 357:b=HEAP[c+108]!=0?358:361;break;case 358:b=d==0?360:359;break;case 359:b=HEAP[c+108]!=HEAP[d+108]?360:361;break;case 360:HEAP[a+108]=HEAP[c+108];b=361;break;case 361:b=HEAP[a+112]==0?362:366;break;case 362:b=HEAP[c+112]!=0?363:366;break; -case 363:b=d==0?365:364;break;case 364:b=HEAP[c+112]!=HEAP[d+112]?365:366;break;case 365:HEAP[a+112]=HEAP[c+112];b=366;break;case 366:b=(HEAP[a+84]&256&HEAP[c+84])!=0?367:407;break;case 367:b=HEAP[a+136]==0?368:372;break;case 368:b=HEAP[c+136]!=0?369:372;break;case 369:b=d==0?371:370;break;case 370:b=HEAP[c+136]!=HEAP[d+136]?371:372;break;case 371:HEAP[a+136]=HEAP[c+136];b=372;break;case 372:b=HEAP[a+140]==0?373:377;break;case 373:b=HEAP[c+140]!=0?374:377;break;case 374:b=d==0?376:375;break;case 375:b= -HEAP[c+140]!=HEAP[d+140]?376:377;break;case 376:HEAP[a+140]=HEAP[c+140];b=377;break;case 377:b=HEAP[a+144]==0?378:382;break;case 378:b=HEAP[c+144]!=0?379:382;break;case 379:b=d==0?381:380;break;case 380:b=HEAP[c+144]!=HEAP[d+144]?381:382;break;case 381:HEAP[a+144]=HEAP[c+144];b=382;break;case 382:b=HEAP[a+148]==0?383:387;break;case 383:b=HEAP[c+148]!=0?384:387;break;case 384:b=d==0?386:385;break;case 385:b=HEAP[c+148]!=HEAP[d+148]?386:387;break;case 386:HEAP[a+148]=HEAP[c+148];b=387;break;case 387:b= -HEAP[a+152]==0?388:392;break;case 388:b=HEAP[c+152]!=0?389:392;break;case 389:b=d==0?391:390;break;case 390:b=HEAP[c+152]!=HEAP[d+152]?391:392;break;case 391:HEAP[a+152]=HEAP[c+152];b=392;break;case 392:b=HEAP[a+164]==0?393:397;break;case 393:b=HEAP[c+164]!=0?394:397;break;case 394:b=d==0?396:395;break;case 395:b=HEAP[c+164]!=HEAP[d+164]?396:397;break;case 396:HEAP[a+164]=HEAP[c+164];b=397;break;case 397:var h=a;b=(HEAP[a+84]&16384)==(HEAP[c+84]&16384)?398:403;break;case 398:b=HEAP[h+160]==0?399: -407;break;case 399:b=HEAP[c+160]!=0?400:407;break;case 400:b=d==0?402:401;break;case 401:b=HEAP[c+160]!=HEAP[d+160]?402:407;break;case 402:HEAP[a+160]=HEAP[c+160];b=407;break;case 403:b=(HEAP[h+84]&16384)!=0?404:407;break;case 404:b=HEAP[a+160]==0?405:407;break;case 405:b=HEAP[c+160]==210?406:407;break;case 406:HEAP[a+160]=208;b=407;break;case 407:return;default:assert(0,"bad label: "+b)}} -function _PyType_Ready(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n;a=g;e=(HEAP[a+84]&4096)!=0?1:2;break;case 1:c=0;e=61;break;case 2:HEAP[a+84]|=8192;h=HEAP[a+128];e=h==0?3:6;break;case 3:e=a!=_PyBaseObject_Type?4:5;break;case 4:h=HEAP[a+128]=_PyBaseObject_Type;HEAP[h]+=1;e=5;break;case 5:e=h!=0?6:8;break;case 6:e=HEAP[h+132]==0?7:8;break;case 7:e=_PyType_Ready(h)<0?60:8;break;case 8:e=HEAP[a+4]==0?9:11;break;case 9:e=h!=0?10:11;break;case 10:HEAP[a+4]=HEAP[h+4];e=11;break; -case 11:f=HEAP[a+168];e=HEAP[a+168]==0?12:17;break;case 12:e=h==0?13:14;break;case 13:var o=_PyTuple_New(0);f=o;b=13;e=15;break;case 14:var p=_PyTuple_Pack(1,allocate([h,0,0,0],["%struct.PyTypeObject*",0,0,0],ALLOC_STACK));f=p;b=14;e=15;break;case 15:e=(b==14?p:o)==0?60:16;break;case 16:HEAP[a+168]=f;e=17;break;case 17:d=HEAP[a+132];e=HEAP[a+132]==0?18:20;break;case 18:d=_PyDict_New();e=d==0?60:19;break;case 19:HEAP[a+132]=d;e=20;break;case 20:e=_add_operators(a)<0?60:21;break;case 21:e=HEAP[a+116]!= -0?22:23;break;case 22:e=_add_methods(a,HEAP[a+116])<0?60:23;break;case 23:e=HEAP[a+120]!=0?24:25;break;case 24:e=_add_members(a,HEAP[a+120])<0?60:25;break;case 25:e=HEAP[a+124]!=0?26:27;break;case 26:e=_add_getset(a,HEAP[a+124])<0?60:27;break;case 27:e=_mro_internal(a)<0?60:28;break;case 28:e=HEAP[a+128]!=0?29:30;break;case 29:_inherit_special(a,HEAP[a+128]);e=30;break;case 30:f=HEAP[a+172];k=HEAP[f+8];j=1;e=j=0?4:7;break;case 7:h=_PyList_Append(l,k);HEAP[k]-=1;b=HEAP[k]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[k+ -4]+24]](k);b=9;break;case 9:d=h;b=10;break;case 10:return a=d;default:assert(0,"bad label: "+b)}}function _remove_subclass(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;a=HEAP[a+180];b=a==0?5:1;break;case 1:d=HEAP[a+8];b=4;break;case 2:b=HEAP[HEAP[a+12]+4*d];b=HEAP[b+8]==c?3:4;break;case 3:_PySequence_DelItem(a,d);b=5;break;case 4:d=b=d-1;b=b>=0?2:5;break;case 5:return;default:assert(0,"bad label: "+b)}} -function _check_num_args(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=HEAP[a+4]!=_PyTuple_Type?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str1254969);d=0;b=5;break;case 2:b=HEAP[a+8]==c?3:4;break;case 3:d=1;b=5;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str1264970,allocate([c,0,0,0,HEAP[a+8],0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));d=0;b=5;break;case 5:return b=d;default:assert(0,"bad label: "+b)}} -function _wrap_lenfunc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;f=b;a=_check_num_args(a,0)==0?1:2;break;case 1:d=0;a=6;break;case 2:h=FUNCTION_TABLE[f](c);a=h==-1?3:5;break;case 3:a=_PyErr_Occurred()!=0?4:5;break;case 4:d=0;a=6;break;case 5:d=_PyInt_FromLong(h);a=6;break;case 6:return g=d;default:assert(0,"bad label: "+a)}} -function _wrap_inquirypred(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;f=b;a=_check_num_args(a,0)==0?1:2;break;case 1:d=0;a=6;break;case 2:h=FUNCTION_TABLE[f](c);a=h==-1?3:5;break;case 3:a=_PyErr_Occurred()!=0?4:5;break;case 4:d=0;a=6;break;case 5:d=_PyBool_FromLong(h);a=6;break;case 6:return g=d;default:assert(0,"bad label: "+a)}} -function _wrap_binaryfunc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=3;break;case 2:a=HEAP[d+12];f=FUNCTION_TABLE[h](c,a);a=3;break;case 3:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_binaryfunc_l(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=6;break;case 2:j=HEAP[d+12];a=(HEAP[HEAP[c+4]+84]&16)==0?3:5;break;case 3:a=_PyType_IsSubtype(HEAP[j+4],HEAP[c+4])==0?4:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=6;break;case 5:f=FUNCTION_TABLE[h](c,j);a=6;break;case 6:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_binaryfunc_r(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=6;break;case 2:j=HEAP[d+12];a=(HEAP[HEAP[c+4]+84]&16)==0?3:5;break;case 3:a=_PyType_IsSubtype(HEAP[j+4],HEAP[c+4])==0?4:5;break;case 4:HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=6;break;case 5:f=FUNCTION_TABLE[h](j,c);a=6;break;case 6:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_coercefunc(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d=a,f,h,j,k=a+4,l,m;HEAP[d]=g;f=e;j=b;c=_check_num_args(f,1)==0?1:2;break;case 1:h=0;c=13;break;case 2:HEAP[k]=HEAP[f+12];m=FUNCTION_TABLE[j](d,k);c=m<0?3:4;break;case 3:h=0;c=13;break;case 4:c=m>0?5:6;break;case 5:HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct;c=13;break;case 6:l=_PyTuple_New(2);c=l==0?7:12;break;case 7:c=HEAP[d];HEAP[c]-=1;c=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[d]+ -4]+24]](HEAP[d]);c=9;break;case 9:c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=11;break;case 11:h=0;c=13;break;case 12:HEAP[l+12]=HEAP[d];HEAP[l+12+4]=HEAP[k];h=l;c=13;break;case 13:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_ternaryfunc(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;HEAP[k]=__Py_NoneStruct;c=_PyArg_UnpackTuple(c,__str234865,1,2,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=3;break;case 2:f=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k]);c=3;break;case 3:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_ternaryfunc_r(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;HEAP[k]=__Py_NoneStruct;c=_PyArg_UnpackTuple(c,__str234865,1,2,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=3;break;case 2:f=FUNCTION_TABLE[h](HEAP[j],d,HEAP[k]);c=3;break;case 3:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_unaryfunc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f;c=g;a=e;f=b;a=_check_num_args(a,0)==0?1:2;break;case 1:d=0;a=3;break;case 2:d=FUNCTION_TABLE[f](c);a=3;break;case 3:return g=d;default:assert(0,"bad label: "+a)}} -function _wrap_indexargfunc(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k;d=g;c=e;h=b;c=_PyArg_UnpackTuple(c,__str234865,1,1,allocate([j,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=6;break;case 2:k=_PyNumber_AsSsize_t(HEAP[j],HEAP[_PyExc_OverflowError]);c=k==-1?3:5;break;case 3:c=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;c=6;break;case 5:f=FUNCTION_TABLE[h](d,k);c=6;break;case 6:return g=f,STACKTOP=a,g;default:assert(0, -"bad label: "+c)}} -function _getindex(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j;c=g;var k=f=_PyNumber_AsSsize_t(e,HEAP[_PyExc_OverflowError]);k==-1?(a=-1,b=1):(a=-1,b=4);break;case 1:b=_PyErr_Occurred()!=0?2:3;break;case 2:d=-1;b=11;break;case 3:var l=f,a=3;b=4;break;case 4:b=(a==3?l:k)<0?5:10;break;case 5:h=HEAP[HEAP[c+4]+52];b=h!=0?6:10;break;case 6:b=HEAP[h]!=0?7:10;break;case 7:j=FUNCTION_TABLE[HEAP[h]](c);b=j<0?8:9;break;case 8:d=-1;b=11;break;case 9:f=j+f;b=10;break;case 10:d=f;b=11;break;case 11:return b= -d;default:assert(0,"bad label: "+b)}}function _wrap_sq_item(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;f=b;var j=a;a=HEAP[a+8]==1?1:5;break;case 1:h=HEAP[j+12];h=_getindex(c,h);a=h==-1?2:4;break;case 2:a=_PyErr_Occurred()!=0?3:4;break;case 3:d=0;a=6;break;case 4:d=FUNCTION_TABLE[f](c,h);a=6;break;case 5:_check_num_args(j,1);d=0;a=6;break;case 6:return g=d;default:assert(0,"bad label: "+a)}} -function _wrap_ssizessizeargfunc(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;c=_PyArg_ParseTuple(c,__str1274971,allocate([j,0,0,0,k,0,0,0],["i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=3;break;case 2:f=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k]);c=3;break;case 3:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_sq_setitem(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k=a,l=a+4;d=g;c=e;h=b;c=_PyArg_UnpackTuple(c,__str234865,2,2,allocate([k,0,0,0,l,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=9;break;case 2:j=_getindex(d,HEAP[k]);c=j==-1?3:5;break;case 3:c=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;c=9;break;case 5:c=FUNCTION_TABLE[h](d,j,HEAP[l])==-1?6:8;break;case 6:c=_PyErr_Occurred()!= -0?7:8;break;case 7:f=0;c=9;break;case 8:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;c=9;break;case 9:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_sq_delitem(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=9;break;case 2:a=HEAP[d+12];j=_getindex(c,a);a=j==-1?3:5;break;case 3:a=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;a=9;break;case 5:a=FUNCTION_TABLE[h](c,j,0)==-1?6:8;break;case 6:a=_PyErr_Occurred()!=0?7:8;break;case 7:f=0;a=9;break;case 8:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=9;break;case 9:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_ssizessizeobjargproc(g,e,b){var a=STACKTOP;STACKTOP+=12;_memset(a,0,12);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l=a+8;d=g;c=e;h=b;c=_PyArg_ParseTuple(c,__str1284972,allocate([j,0,0,0,k,0,0,0,l,0,0,0],["i32*",0,0,0,"i32*",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=6;break;case 2:c=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k],HEAP[l]);c=c==-1?3:5;break;case 3:c=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;c=6;break;case 5:HEAP[__Py_NoneStruct]+=1; -f=__Py_NoneStruct;c=6;break;case 6:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_delslice(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;c=_PyArg_ParseTuple(c,__str1274971,allocate([j,0,0,0,k,0,0,0],["i32*",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=6;break;case 2:c=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k],0);c=c==-1?3:5;break;case 3:c=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;c=6;break;case 5:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;c=6;break;case 6:return g=f,STACKTOP=a,g;default:assert(0, -"bad label: "+c)}}function _wrap_objobjproc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=6;break;case 2:a=HEAP[d+12];j=FUNCTION_TABLE[h](c,a);a=j!=-1?5:3;break;case 3:a=_PyErr_Occurred()==0?5:4;break;case 4:f=0;a=6;break;case 5:f=_PyBool_FromLong(j);a=6;break;case 6:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_objobjargproc(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;c=_PyArg_UnpackTuple(c,__str234865,2,2,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=6;break;case 2:c=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k]);c=c==-1?3:5;break;case 3:c=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;c=6;break;case 5:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;c=6; -break;case 6:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _wrap_delitem(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=6;break;case 2:a=HEAP[d+12];a=FUNCTION_TABLE[h](c,a,0);a=a==-1?3:5;break;case 3:a=_PyErr_Occurred()!=0?4:5;break;case 4:f=0;a=6;break;case 5:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=6;break;case 6:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_cmpfunc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=8;break;case 2:k=HEAP[d+12];a=HEAP[HEAP[k+4]+40]!=h?3:5;break;case 3:a=_PyType_IsSubtype(HEAP[k+4],HEAP[c+4])==0?4:5;break;case 4:_PyErr_Format(HEAP[_PyExc_TypeError],__str1294973,allocate([HEAP[HEAP[c+4]+12],0,0,0,HEAP[HEAP[c+4]+12],0,0,0,HEAP[HEAP[k+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));f=0;a=8;break;case 5:j=FUNCTION_TABLE[h](c, -k);a=_PyErr_Occurred()!=0?6:7;break;case 6:f=0;a=8;break;case 7:f=_PyInt_FromLong(j);a=8;break;case 8:return g=f;default:assert(0,"bad label: "+a)}} -function _hackcheck(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;a=g;d=e;f=b;var k=HEAP[a+4];j=k;c=-1;a=2;break;case 1:var l=HEAP[j+128];j=l;c=1;a=2;break;case 2:var m=j;a=(c==1?l:k)==0?4:3;break;case 3:a=(HEAP[m+84]&512)!=0?1:4;break;case 4:a=m!=0?5:7;break;case 5:a=HEAP[j+76]!=d?6:7;break;case 6:_PyErr_Format(HEAP[_PyExc_TypeError],__str1304974,allocate([f,0,0,0,HEAP[j+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));h=0;a=8;break;case 7:h=1;a=8;break;case 8:return g=h;default:assert(0, -"bad label: "+a)}} -function _wrap_setattr(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;c=_PyArg_UnpackTuple(c,__str234865,2,2,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=7;break;case 2:c=_hackcheck(d,h,__str1314975)==0?3:4;break;case 3:f=0;c=7;break;case 4:c=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k]);c=c<0?5:6;break;case 5:f=0;c=7;break;case 6:HEAP[__Py_NoneStruct]+=1; -f=__Py_NoneStruct;c=7;break;case 7:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_delattr(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=7;break;case 2:j=HEAP[d+12];a=_hackcheck(c,h,__str1324976)==0?3:4;break;case 3:f=0;a=7;break;case 4:a=FUNCTION_TABLE[h](c,j,0);a=a<0?5:6;break;case 5:f=0;a=7;break;case 6:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=7;break;case 7:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_hashfunc(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;f=b;a=_check_num_args(a,0)==0?1:2;break;case 1:d=0;a=6;break;case 2:h=FUNCTION_TABLE[f](c);a=h==-1?3:5;break;case 3:a=_PyErr_Occurred()!=0?4:5;break;case 4:d=0;a=6;break;case 5:d=_PyInt_FromLong(h);a=6;break;case 6:return g=d;default:assert(0,"bad label: "+a)}}function _wrap_call(g,e,b,a){return FUNCTION_TABLE[b](g,e,a)} -function _wrap_richcmpfunc(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;d=g;f=e;h=b;j=a;c=_check_num_args(f,1)==0?1:2;break;case 1:k=0;c=3;break;case 2:k=HEAP[f+12];k=FUNCTION_TABLE[h](d,k,j);c=3;break;case 3:return g=k;default:assert(0,"bad label: "+c)}}function _richcmp_lt(g,e,b){return _wrap_richcmpfunc(g,e,b,0)}function _richcmp_le(g,e,b){return _wrap_richcmpfunc(g,e,b,1)}function _richcmp_eq(g,e,b){return _wrap_richcmpfunc(g,e,b,2)} -function _richcmp_ne(g,e,b){return _wrap_richcmpfunc(g,e,b,3)}function _richcmp_gt(g,e,b){return _wrap_richcmpfunc(g,e,b,4)}function _richcmp_ge(g,e,b){return _wrap_richcmpfunc(g,e,b,5)} -function _wrap_next(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;f=b;a=_check_num_args(a,0)==0?1:2;break;case 1:d=0;a=6;break;case 2:h=FUNCTION_TABLE[f](c);a=h==0?3:5;break;case 3:a=_PyErr_Occurred()==0?4:5;break;case 4:_PyErr_SetNone(HEAP[_PyExc_StopIteration]);a=5;break;case 5:d=h;a=6;break;case 6:return g=d;default:assert(0,"bad label: "+a)}} -function _wrap_descr_get(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;HEAP[k]=0;c=_PyArg_UnpackTuple(c,__str234865,1,2,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=10;break;case 2:c=HEAP[j]==__Py_NoneStruct?3:4;break;case 3:HEAP[j]=0;c=4;break;case 4:var l=HEAP[k];c=l==__Py_NoneStruct?5:6;break;case 5:HEAP[k]=0;c=7;break;case 6:c=l==0?7:9;break; -case 7:c=HEAP[j]==0?8:9;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1334977);f=0;c=10;break;case 9:f=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k]);c=10;break;case 10:return g=f,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _wrap_descr_set(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4;d=g;c=e;h=b;c=_PyArg_UnpackTuple(c,__str234865,2,2,allocate([j,0,0,0,k,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;c=5;break;case 2:c=FUNCTION_TABLE[h](d,HEAP[j],HEAP[k]);c=c<0?3:4;break;case 3:f=0;c=5;break;case 4:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;c=5;break;case 5:return g=f,STACKTOP=a,g;default:assert(0, -"bad label: "+c)}}function _wrap_descr_delete(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;h=b;a=_check_num_args(d,1)==0?1:2;break;case 1:f=0;a=5;break;case 2:a=HEAP[d+12];a=FUNCTION_TABLE[h](c,a,0);a=a<0?3:4;break;case 3:f=0;a=5;break;case 4:HEAP[__Py_NoneStruct]+=1;f=__Py_NoneStruct;a=5;break;case 5:return g=f;default:assert(0,"bad label: "+a)}} -function _wrap_init(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d;c=FUNCTION_TABLE[b](g,e,a)<0?1:2;break;case 1:d=0;c=3;break;case 2:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;c=3;break;case 3:return g=d;default:assert(0,"bad label: "+c)}} -function _tp_new_wrapper(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o;d=g;f=e;h=b;a=d==0?2:1;break;case 1:a=HEAP[HEAP[d+4]+84]>=0?2:3;break;case 2:throw _Py_FatalError(__str1344978),"Reached an unreachable!";case 3:l=d;a=(HEAP[HEAP[f+4]+84]&67108864)==0?5:4;break;case 4:a=HEAP[f+8]<=0?5:6;break;case 5:_PyErr_Format(HEAP[_PyExc_TypeError],__str1354979,allocate([HEAP[l+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));k=0;a=25;break;case 6:var p=a=HEAP[f+12];a=HEAP[HEAP[a+4]+84]>=0?7: -8;break;case 7:_PyErr_Format(HEAP[_PyExc_TypeError],__str1364980,allocate([HEAP[l+12],0,0,0,HEAP[HEAP[p+4]+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));k=0;a=25;break;case 8:m=p;a=_PyType_IsSubtype(m,l)==0?9:10;break;case 9:_PyErr_Format(HEAP[_PyExc_TypeError],__str1374981,allocate([HEAP[l+12],0,0,0,HEAP[m+12],0,0,0,HEAP[m+12],0,0,0,HEAP[l+12],0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));k=0;a=25;break;case 10:var q=m;n=q;c=10;a=12;break;case 11:var r=HEAP[n+128];n= -r;c=11;a=12;break;case 12:var u=n;a=(c==11?r:q)==0?14:13;break;case 13:a=(HEAP[u+84]&512)!=0?11:14;break;case 14:a=u!=0?15:20;break;case 15:a=HEAP[n+156]!=HEAP[l+156]?16:20;break;case 16:a=n!=0?17:18;break;case 17:j=HEAP[n+12];a=19;break;case 18:j=__str344876;a=19;break;case 19:_PyErr_Format(HEAP[_PyExc_TypeError],__str1384982,allocate([HEAP[l+12],0,0,0,HEAP[m+12],0,0,0,j,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));k=0;a=25;break;case 20:f=a=_PyTuple_GetSlice(f,1,HEAP[f+8]);a=a==0? -21:22;break;case 21:k=0;a=25;break;case 22:o=FUNCTION_TABLE[HEAP[l+156]](m,f,h);HEAP[f]-=1;a=HEAP[f]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=24;break;case 24:k=o;a=25;break;case 25:return g=k;default:assert(0,"bad label: "+a)}} -function _add_tp_new_wrapper(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=_PyDict_GetItemString(HEAP[b+132],__str674909)!=0?1:2;break;case 1:a=0;e=11;break;case 2:c=_PyCFunction_NewEx(_tp_new_methoddef,b,0);e=c==0?3:4;break;case 3:a=-1;e=11;break;case 4:e=_PyDict_SetItemString(HEAP[b+132],__str674909,c)!=0;HEAP[c]-=1;var d=HEAP[c]==0;e=e?5:8;break;case 5:e=d?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=7;break;case 7:a=-1;e=11;break;case 8:e=d?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[c+ -4]+24]](c);e=10;break;case 10:a=0;e=11;break;case 11:return g=a;default:assert(0,"bad label: "+e)}} -function _method_is_overloaded(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;a=e;d=b;j=_PyObject_GetAttrString(HEAP[a+4],d);a=j==0?1:2;break;case 1:_PyErr_Clear();f=0;a=13;break;case 2:h=_PyObject_GetAttrString(HEAP[c+4],d);a=h==0?3:6;break;case 3:_PyErr_Clear();HEAP[j]-=1;a=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=5;break;case 5:f=1;a=13;break;case 6:k=_PyObject_RichCompareBool(h,j,3);HEAP[h]-=1;a=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+ -24]](h);a=8;break;case 8:HEAP[j]-=1;a=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=10;break;case 10:a=k<0?11:12;break;case 11:_PyErr_Clear();f=0;a=13;break;case 12:f=k;a=13;break;case 13:return g=f;default:assert(0,"bad label: "+a)}} -function _slot_sq_length(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;a=_call_method(g,__str1404984,_len_str_15398,__str1414985,allocate(1,"i32",ALLOC_STACK));e=a==0?1:2;break;case 1:b=-1;e=9;break;case 2:c=_PyInt_AsSsize_t(a);HEAP[a]-=1;e=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=4;break;case 4:e=c<0?5:8;break;case 5:e=_PyErr_Occurred()==0?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1424986);e=7;break;case 7:b=-1;e=9;break;case 8:b=c;e=9;break;case 9:return g= -b;default:assert(0,"bad label: "+e)}} -function _slot_sq_item(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;k=j=h=0;b=HEAP[_getitem_str_15424]==0?1:3;break;case 1:b=_PyString_InternFromString(__str1434987);HEAP[_getitem_str_15424]=b;b=HEAP[_getitem_str_15424]==0?2:3;break;case 2:d=0;b=28;break;case 3:f=b=__PyType_Lookup(HEAP[a+4],HEAP[_getitem_str_15424]);b=b!=0?4:17;break;case 4:l=HEAP[HEAP[f+4]+136];b=l==0?5:6;break;case 5:HEAP[f]+=1;b=8;break;case 6:f=FUNCTION_TABLE[l](f,a,HEAP[a+4]);b=f==0?7:8;break;case 7:d= -0;b=28;break;case 8:j=b=_PyInt_FromSsize_t(c);b=b!=0?9:18;break;case 9:h=_PyTuple_New(1);b=h!=0?10:21;break;case 10:HEAP[h+12]=j;k=_PyObject_Call(f,h,0);b=h!=0?11:13;break;case 11:HEAP[h]-=1;b=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=13;break;case 13:b=f!=0?14:16;break;case 14:HEAP[f]-=1;b=HEAP[f]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=16;break;case 16:d=k;b=28;break;case 17:_PyErr_SetObject(HEAP[_PyExc_AttributeError],HEAP[_getitem_str_15424]); -b=18;break;case 18:b=h!=0?19:21;break;case 19:HEAP[h]-=1;b=HEAP[h]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=21;break;case 21:b=j!=0?22:24;break;case 22:HEAP[j]-=1;b=HEAP[j]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=24;break;case 24:b=f!=0?25:27;break;case 25:HEAP[f]-=1;b=HEAP[f]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=27;break;case 27:d=0;b=28;break;case 28:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_sq_slice(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=HEAP[_Py_Py3kWarningFlag]!=0?1:3;break;case 1:a=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str1444988,1)<0?2:3;break;case 2:h=0;a=4;break;case 3:h=_call_method(c,__str1454989,_getslice_str_15516,__str1274971,allocate([d,0,0,0,f,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));a=4;break;case 4:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_sq_ass_item(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;a=e;f=b;var k=a;a=f==0?1:2;break;case 1:var l=_call_method(d,__str1464990,_delitem_str_15533,__str1474991,allocate([k,0,0,0],["i32",0,0,0],ALLOC_STACK));j=l;c=1;a=3;break;case 2:var m=_call_method(d,__str1484992,_setitem_str_15534,__str1494993,allocate([k,0,0,0,f,0,0,0],["i32",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));j=m;c=2;a=3;break;case 3:a=(c==2?m:l)==0?4:5;break;case 4:h=-1;a=8;break;case 5:HEAP[j]-= -1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_sq_ass_slice(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m;f=g;h=e;j=b;k=a;var n=HEAP[_Py_Py3kWarningFlag]!=0;c=k==0?1:5;break;case 1:c=n?2:4;break;case 2:c=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning],__str1504994,1)<0?3:4;break;case 3:l=-1;c=14;break;case 4:var o=_call_method(f,__str1514995,_delslice_str_15558,__str1524996,allocate([h,0,0,0,j,0,0,0],["i32",0,0,0,"i32",0,0,0],ALLOC_STACK));m=o;d=4;c=9;break;case 5:c=n?6:8;break;case 6:c=_PyErr_WarnEx(HEAP[_PyExc_DeprecationWarning], -__str1534997,1)<0?7:8;break;case 7:l=-1;c=14;break;case 8:var p=_call_method(f,__str1544998,_setslice_str_15559,__str1554999,allocate([h,0,0,0,j,0,0,0,k,0,0,0],["i32",0,0,0,"i32",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));m=p;d=8;c=9;break;case 9:c=(d==8?p:o)==0?10:11;break;case 10:l=-1;c=14;break;case 11:HEAP[m]-=1;c=HEAP[m]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=13;break;case 13:l=0;c=14;break;case 14:return g=l;default:assert(0,"bad label: "+c)}} -function _slot_sq_contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;j=-1;d=_lookup_maybe(a,__str1565000,_contains_str_15598);b=d!=0?1:10;break;case 1:h=_PyTuple_Pack(1,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=h==0?2:3;break;case 2:f=0;b=5;break;case 3:f=_PyObject_Call(d,h,0);HEAP[h]-=1;b=HEAP[h]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=5;break;case 5:HEAP[d]-=1;b=HEAP[d]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b= -7;break;case 7:b=f!=0?8:12;break;case 8:j=_PyObject_IsTrue(f);HEAP[f]-=1;b=HEAP[f]==0?9:12;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=12;break;case 10:b=_PyErr_Occurred()==0?11:12;break;case 11:j=__PySequence_IterSearch(a,c,3);b=12;break;case 12:return b=j;default:assert(0,"bad label: "+b)}}function _slot_mp_subscript(g,e){return _call_method(g,__str1434987,_cache_str_15642,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slot_mp_ass_subscript(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;a=e;f=b;var k=a;a=f==0?1:2;break;case 1:var l=_call_method(d,__str1464990,_delitem_str_15652,__str1575001,allocate([k,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));j=l;c=1;a=3;break;case 2:var m=_call_method(d,__str1484992,_setitem_str_15653,__str1585002,allocate([k,0,0,0,f,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));j=m;c=2;a=3;break;case 3:a=(c==2?m:l)== -0?4:5;break;case 4:h=-1;a=8;break;case 5:HEAP[j]-=1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_nb_add(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]]!=222?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]]==222?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1595003)!=0?10:15;break;case 10:var k= -j=_call_maybe(c,__str1595003,_rcache_str_15675,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1605004,_cache_str_15674,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b=HEAP[c+4]==HEAP[a+ -4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1595003,_rcache_str_15675,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_subtract(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+4]!=224?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+4]==224?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1615005)!=0?10:15; -break;case 10:var k=j=_call_maybe(c,__str1615005,_rcache_str_15745,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1625006,_cache_str_15744,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1615005,_rcache_str_15745,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_multiply(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+8]!=226?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+8]==226?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1635007)!=0?10:15; -break;case 10:var k=j=_call_maybe(c,__str1635007,_rcache_str_15815,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1645008,_cache_str_15814,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1635007,_rcache_str_15815,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_divide(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+12]!=228?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+12]==228?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1655009)!=0?10:15; -break;case 10:var k=j=_call_maybe(c,__str1655009,_rcache_str_15885,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1665010,_cache_str_15884,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1655009,_rcache_str_15885,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_remainder(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+16]!=230?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+16]==230?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1675011)!=0?10: -15;break;case 10:var k=j=_call_maybe(c,__str1675011,_rcache_str_15955,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1685012,_cache_str_15954,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1675011,_rcache_str_15955,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_divmod(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+20]!=232?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+20]==232?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1695013)!=0?10:15; -break;case 10:var k=j=_call_maybe(c,__str1695013,_rcache_str_16025,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1705014,_cache_str_16024,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1695013,_rcache_str_16025,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_power_binary(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+24]!=234?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+24]==234?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1715015)!=0? -10:15;break;case 10:var k=j=_call_maybe(c,__str1715015,_rcache_str_16099,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1725016,_cache_str_16098,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1715015,_rcache_str_16099,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_power(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;var j=c;a=f==__Py_NoneStruct?1:2;break;case 1:h=_slot_nb_power_binary(j,d);a=6;break;case 2:a=HEAP[HEAP[j+4]+48]!=0?3:5;break;case 3:a=HEAP[HEAP[HEAP[c+4]+48]+24]==234?4:5;break;case 4:h=_call_method(c,__str1725016,_pow_str_16169,__str1585002,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=6;break;case 5:HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct; -a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}}function _slot_nb_negative(g){return _call_method(g,__str1735017,_cache_str_16190,__str1414985,allocate(1,"i32",ALLOC_STACK))}function _slot_nb_positive(g){return _call_method(g,__str1745018,_cache_str_16197,__str1414985,allocate(1,"i32",ALLOC_STACK))}function _slot_nb_absolute(g){return _call_method(g,__str1755019,_cache_str_16204,__str1414985,allocate(1,"i32",ALLOC_STACK))} -function _slot_nb_nonzero(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l;b=g;j=-1;k=0;f=_lookup_maybe(b,__str1765020,_nonzero_str_16213);e=f==0?1:9;break;case 1:e=_PyErr_Occurred()!=0?2:3;break;case 2:d=-1;e=25;break;case 3:f=_lookup_maybe(b,__str1404984,_len_str_16214);e=f==0?4:8;break;case 4:e=_PyErr_Occurred()!=0?5:6;break;case 5:c=-1;e=7;break;case 6:c=1;e=7;break;case 7:d=c;e=25;break;case 8:k=1;e=9;break;case 9:h=e=_PyTuple_New(0);e=e!=0?10:22;break;case 10:l=_PyObject_Call(f,h, -0);HEAP[h]-=1;e=HEAP[h]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=12;break;case 12:e=l!=0?13:22;break;case 13:e=HEAP[l+4]==_PyInt_Type?15:14;break;case 14:e=HEAP[l+4]==_PyBool_Type?15:16;break;case 15:j=_PyObject_IsTrue(l);e=20;break;case 16:var m=HEAP[HEAP[l+4]+12];e=k!=0?17:18;break;case 17:a=__str1404984;e=19;break;case 18:a=__str1765020;e=19;break;case 19:_PyErr_Format(HEAP[_PyExc_TypeError],__str1775021,allocate([a,0,0,0,m,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));j= --1;e=20;break;case 20:HEAP[l]-=1;e=HEAP[l]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=22;break;case 22:HEAP[f]-=1;e=HEAP[f]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=24;break;case 24:d=j;e=25;break;case 25:return g=d;default:assert(0,"bad label: "+e)}}function _slot_nb_index(g){return _call_method(g,__str1785022,_index_str_16278,__str1414985,allocate(1,"i32",ALLOC_STACK))} -function _slot_nb_invert(g){return _call_method(g,__str1795023,_cache_str_16285,__str1414985,allocate(1,"i32",ALLOC_STACK))} -function _slot_nb_lshift(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+48]!=236?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+48]==236?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1805024)!=0?10:15; -break;case 10:var k=j=_call_maybe(c,__str1805024,_rcache_str_16294,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1815025,_cache_str_16293,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1805024,_rcache_str_16294,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_rshift(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+52]!=238?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+52]==238?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1825026)!=0?10:15; -break;case 10:var k=j=_call_maybe(c,__str1825026,_rcache_str_16364,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1835027,_cache_str_16363,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1825026,_rcache_str_16364,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_and(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+56]!=240?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+56]==240?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1845028)!=0?10:15;break; -case 10:var k=j=_call_maybe(c,__str1845028,_rcache_str_16434,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1855029,_cache_str_16433,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b=HEAP[c+ -4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1845028,_rcache_str_16434,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_xor(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+60]!=242?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+60]==242?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1865030)!=0?10:15;break; -case 10:var k=j=_call_maybe(c,__str1865030,_rcache_str_16504,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1875031,_cache_str_16503,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b=HEAP[c+ -4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1865030,_rcache_str_16504,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_or(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+64]!=244?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+64]==244?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str1885032)!=0?10:15;break; -case 10:var k=j=_call_maybe(c,__str1885032,_rcache_str_16574,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str1895033,_cache_str_16573,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b=HEAP[c+ -4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str1885032,_rcache_str_16574,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_coerce(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;f=HEAP[a];h=HEAP[c];b=HEAP[HEAP[f+4]+48]!=0?1:15;break;case 1:b=HEAP[HEAP[HEAP[f+4]+48]+68]==246?2:15;break;case 2:j=_call_maybe(f,__str1905034,_coerce_str_16643,allocate([h,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j==0?3:4;break;case 3:d=-1;b=32;break;case 4:var l=j;b=j==__Py_NotImplementedStruct?5:7;break;case 5:HEAP[j]=HEAP[l]-1;b=HEAP[j]==0?6:15;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j); -b=15;break;case 7:b=(HEAP[HEAP[l+4]+84]&67108864)==0?9:8;break;case 8:b=HEAP[j+8]!=2?9:12;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1915035);HEAP[j]-=1;b=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=11;break;case 11:d=-1;b=32;break;case 12:HEAP[a]=HEAP[j+12];HEAP[HEAP[a]]+=1;HEAP[c]=HEAP[j+12+4];HEAP[HEAP[c]]+=1;HEAP[j]-=1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:d=0;b=32;break;case 15:b=HEAP[HEAP[h+4]+48]!= -0?16:31;break;case 16:b=HEAP[HEAP[HEAP[h+4]+48]+68]==246?17:31;break;case 17:k=_call_maybe(h,__str1905034,_coerce_str_16643,allocate([f,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=k==0?18:19;break;case 18:d=-1;b=32;break;case 19:var m=k;b=k==__Py_NotImplementedStruct?20:23;break;case 20:HEAP[k]=HEAP[m]-1;b=HEAP[k]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=22;break;case 22:d=1;b=32;break;case 23:b=(HEAP[HEAP[m+4]+84]&67108864)==0?25:24;break;case 24:b=HEAP[k+8]!=2?25: -28;break;case 25:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1915035);HEAP[k]-=1;b=HEAP[k]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=27;break;case 27:d=-1;b=32;break;case 28:HEAP[a]=HEAP[k+12+4];HEAP[HEAP[a]]+=1;HEAP[c]=HEAP[k+12];HEAP[HEAP[c]]+=1;HEAP[k]-=1;b=HEAP[k]==0?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=30;break;case 30:d=0;b=32;break;case 31:d=1;b=32;break;case 32:return b=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_int(g){return _call_method(g,__str1925036,_cache_str_16762,__str1414985,allocate(1,"i32",ALLOC_STACK))}function _slot_nb_long(g){return _call_method(g,__str1935037,_cache_str_16769,__str1414985,allocate(1,"i32",ALLOC_STACK))}function _slot_nb_float(g){return _call_method(g,__str1945038,_cache_str_16776,__str1414985,allocate(1,"i32",ALLOC_STACK))}function _slot_nb_oct(g){return _call_method(g,__str1955039,_cache_str_16783,__str1414985,allocate(1,"i32",ALLOC_STACK))} -function _slot_nb_hex(g){return _call_method(g,__str1965040,_cache_str_16790,__str1414985,allocate(1,"i32",ALLOC_STACK))}function _slot_nb_inplace_add(g,e){return _call_method(g,__str1975041,_cache_str_16798,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_subtract(g,e){return _call_method(g,__str1985042,_cache_str_16806,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slot_nb_inplace_multiply(g,e){return _call_method(g,__str1995043,_cache_str_16814,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_divide(g,e){return _call_method(g,__str2005044,_cache_str_16822,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slot_nb_inplace_remainder(g,e){return _call_method(g,__str2015045,_cache_str_16830,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_power(g,e){return _call_method(g,__str2025046,_cache_str_16839,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slot_nb_inplace_lshift(g,e){return _call_method(g,__str2035047,_cache_str_16847,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_rshift(g,e){return _call_method(g,__str2045048,_cache_str_16855,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slot_nb_inplace_and(g,e){return _call_method(g,__str2055049,_cache_str_16863,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_xor(g,e){return _call_method(g,__str2065050,_cache_str_16871,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_or(g,e){return _call_method(g,__str2075051,_cache_str_16879,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _slot_nb_floor_divide(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+136]!=248?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+136]==248?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str2085052)!= -0?10:15;break;case 10:var k=j=_call_maybe(c,__str2085052,_rcache_str_16888,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str2095053,_cache_str_16887,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break; -case 16:b=HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str2085052,_rcache_str_16888,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_true_divide(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;b=HEAP[a+4]==HEAP[c+4]?4:1;break;case 1:b=HEAP[HEAP[c+4]+48]==0?4:2;break;case 2:b=HEAP[HEAP[HEAP[c+4]+48]+140]!=250?4:3;break;case 3:f=1;b=5;break;case 4:f=0;b=5;break;case 5:h=f;b=HEAP[HEAP[a+4]+48]!=0?6:20;break;case 6:b=HEAP[HEAP[HEAP[a+4]+48]+140]==250?7:20;break;case 7:b=h!=0?8:15;break;case 8:b=_PyType_IsSubtype(HEAP[c+4],HEAP[a+4])!=0?9:15;break;case 9:b=_method_is_overloaded(a,c,__str2105054)!=0? -10:15;break;case 10:var k=j=_call_maybe(c,__str2105054,_rcache_str_16958,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j!=__Py_NotImplementedStruct?11:12;break;case 11:d=k;b=23;break;case 12:HEAP[j]=HEAP[k]-1;b=HEAP[j]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=14;break;case 14:h=0;b=15;break;case 15:j=b=_call_maybe(a,__str2115055,_cache_str_16957,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=b!=__Py_NotImplementedStruct?17:16;break;case 16:b= -HEAP[c+4]==HEAP[a+4]?17:18;break;case 17:d=j;b=23;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:b=h!=0?21:22;break;case 21:d=_call_maybe(c,__str2105054,_rcache_str_16958,allocate([a,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=23;break;case 22:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=23;break;case 23:return a=d;default:assert(0,"bad label: "+b)}} -function _slot_nb_inplace_floor_divide(g,e){return _call_method(g,__str2125056,_cache_str_17027,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))}function _slot_nb_inplace_true_divide(g,e){return _call_method(g,__str2135057,_cache_str_17035,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _half_compare(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;b=g;c=e;h=_lookup_method(b,__str2145058,_cmp_str_17046);b=h==0?1:2;break;case 1:_PyErr_Clear();b=23;break;case 2:j=_PyTuple_Pack(1,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=j==0?3:4;break;case 3:k=0;b=6;break;case 4:k=_PyObject_Call(h,j,0);HEAP[j]-=1;b=HEAP[j]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=6;break;case 6:HEAP[h]-=1;b=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);b=8;break;case 8:var m=k;b=m!=__Py_NotImplementedStruct?9:21;break;case 9:b=m==0?10:11;break;case 10:f=-2;b=24;break;case 11:l=_PyInt_AsLong(k);HEAP[k]-=1;b=HEAP[k]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=13;break;case 13:var n=l;n==-1?(a=13,b=14):(a=13,b=17);break;case 14:b=_PyErr_Occurred()!=0?15:16;break;case 15:f=-2;b=24;break;case 16:var o=l,a=16;b=17;break;case 17:b=(a==16?o:n)>=0?18:19;break;case 18:d=l>0;b=20;break;case 19:d=-1;b=20;break;case 20:f=d;b=24; -break;case 21:HEAP[k]=HEAP[m]-1;b=HEAP[k]==0?22:23;break;case 22:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=23;break;case 23:f=2;b=24;break;case 24:return a=f;default:assert(0,"bad label: "+b)}} -function __PyObject_SlotCompare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[HEAP[a+4]+40]==92?1:3;break;case 1:h=_half_compare(a,c);b=h<=1?2:3;break;case 2:f=h;b=12;break;case 3:b=HEAP[HEAP[c+4]+40]==92?4:8;break;case 4:h=_half_compare(c,a);b=h<-1?5:6;break;case 5:f=-2;b=12;break;case 6:b=h<=1?7:8;break;case 7:f=0-h;b=12;break;case 8:b=a>=c?9:10;break;case 9:d=a>c;b=11;break;case 10:d=-1;b=11;break;case 11:f=d;b=12;break;case 12:return b=f;default:assert(0,"bad label: "+b)}} -function _slot_tp_repr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=_lookup_method(b,__str2155059,_repr_str_17133);e=c!=0?1:4;break;case 1:d=_PyEval_CallObjectWithKeywords(c,0,0);HEAP[c]-=1;e=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=3;break;case 3:a=d;e=5;break;case 4:_PyErr_Clear();a=_PyString_FromFormat(__str854928,allocate([HEAP[HEAP[b+4]+12],0,0,0,b,0,0,0],["i8*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));e=5;break;case 5:return g=a;default:assert(0, -"bad label: "+e)}}function _slot_tp_str(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=_lookup_method(b,__str2165060,_str_str_17155);e=c!=0?1:4;break;case 1:d=_PyEval_CallObjectWithKeywords(c,0,0);HEAP[c]-=1;e=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=3;break;case 3:a=d;e=5;break;case 4:_PyErr_Clear();a=_slot_tp_repr(b);e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _slot_tp_hash(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h;a=g;var j=d=_lookup_method(a,__str1214965,_hash_str_17174);e=d==0|d==__Py_NoneStruct?10:1;break;case 1:h=_PyEval_CallObjectWithKeywords(j,0,0);HEAP[d]-=1;e=HEAP[d]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=3;break;case 3:e=h==0?4:5;break;case 4:c=-1;e=24;break;case 5:e=(HEAP[HEAP[h+4]+84]&16777216)!=0?6:7;break;case 6:f=FUNCTION_TABLE[HEAP[_PyLong_Type+60]](h);e=8;break;case 7:f=_PyInt_AsLong(h);e= -8;break;case 8:HEAP[h]-=1;e=HEAP[h]==0?9:19;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);e=19;break;case 10:e=j!=0?11:13;break;case 11:HEAP[d]-=1;e=HEAP[d]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);e=13;break;case 13:_PyErr_Clear();d=e=_lookup_method(a,__str1224966,_eq_str_17175);e=e==0?14:15;break;case 14:_PyErr_Clear();d=e=_lookup_method(a,__str2145058,_cmp_str_17176);e=e!=0?15:18;break;case 15:HEAP[d]-=1;e=HEAP[d]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d); -e=17;break;case 17:c=_PyObject_HashNotImplemented(a);e=24;break;case 18:_PyErr_Clear();var k=__Py_HashPointer(a);f=k;b=18;e=20;break;case 19:var l=f,b=19;e=20;break;case 20:e=(b==19?l:k)==-1?21:23;break;case 21:e=_PyErr_Occurred()==0?22:23;break;case 22:f=-2;e=23;break;case 23:c=f;e=24;break;case 24:return g=c;default:assert(0,"bad label: "+e)}} -function _slot_tp_call(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;h=_lookup_method(a,__str2175061,_call_str_17246);a=h==0?1:2;break;case 1:f=0;a=5;break;case 2:j=_PyObject_Call(h,c,d);HEAP[h]-=1;a=HEAP[h]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=4;break;case 4:f=j;a=5;break;case 5:return g=f;default:assert(0,"bad label: "+a)}} -function _slot_tp_getattro(g,e){return _call_method(g,__str2185062,_getattribute_str_17266,__str1575001,allocate([e,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK))} -function _call_attribute(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=0;l=HEAP[HEAP[d+4]+136];a=l!=0?1:4;break;case 1:k=FUNCTION_TABLE[l](d,c,HEAP[c+4]);a=k==0?2:3;break;case 2:h=0;a=8;break;case 3:d=k;a=4;break;case 4:j=_PyObject_CallFunctionObjArgs(d,allocate([f,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=k!=0?5:7;break;case 5:HEAP[k]-=1;a=HEAP[k]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=7;break;case 7:h=j;a=8;break; -case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_tp_getattr_hook(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l;c=g;d=e;h=HEAP[c+4];b=HEAP[_getattr_str_17307]==0?1:3;break;case 1:b=_PyString_InternFromString(__str2195063);HEAP[_getattr_str_17307]=b;b=HEAP[_getattr_str_17307]==0?2:3;break;case 2:f=0;b=21;break;case 3:b=HEAP[_getattribute_str_17306]==0?4:6;break;case 4:b=_PyString_InternFromString(__str2185062);HEAP[_getattribute_str_17306]=b;b=HEAP[_getattribute_str_17306]==0?5:6;break;case 5:f=0;b=21;break;case 6:j= -b=__PyType_Lookup(h,HEAP[_getattr_str_17307]);b=b==0?7:8;break;case 7:HEAP[h+72]=252;f=_slot_tp_getattro(c,d);b=21;break;case 8:HEAP[j]+=1;k=__PyType_Lookup(h,HEAP[_getattribute_str_17306]);b=k==0?11:9;break;case 9:b=HEAP[k+4]!=_PyWrapperDescr_Type?12:10;break;case 10:b=HEAP[k+20]==202?11:12;break;case 11:var m=_PyObject_GenericGetAttr(c,d);l=m;a=11;b=15;break;case 12:HEAP[k]+=1;l=_call_attribute(c,k,d);HEAP[k]-=1;b=HEAP[k]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=14;break;case 14:var n= -l,a=14;b=15;break;case 15:b=(a==14?n:m)==0?16:18;break;case 16:b=_PyErr_ExceptionMatches(HEAP[_PyExc_AttributeError])!=0?17:18;break;case 17:_PyErr_Clear();l=_call_attribute(c,j,d);b=18;break;case 18:HEAP[j]-=1;b=HEAP[j]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=20;break;case 20:f=l;b=21;break;case 21:return a=f;default:assert(0,"bad label: "+b)}} -function _slot_tp_setattro(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;a=e;f=b;var k=a;a=f==0?1:2;break;case 1:var l=_call_method(d,__str1324976,_delattr_str_17372,__str1575001,allocate([k,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));j=l;c=1;a=3;break;case 2:var m=_call_method(d,__str1314975,_setattr_str_17373,__str1585002,allocate([k,0,0,0,f,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));j=m;c=2;a=3;break;case 3:a=(c==2?m:l)==0?4:5; -break;case 4:h=-1;a=8;break;case 5:HEAP[j]-=1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _half_richcompare5186(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;d=_lookup_method(a,HEAP[_name_op5064+d*4],_op_str_17399+d*4);a=d==0?1:2;break;case 1:_PyErr_Clear();HEAP[__Py_NotImplementedStruct]+=1;f=__Py_NotImplementedStruct;a=9;break;case 2:h=_PyTuple_Pack(1,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));a=h==0?3:4;break;case 3:j=0;a=6;break;case 4:j=_PyObject_Call(d,h,0);HEAP[h]-=1;a=HEAP[h]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[h+4]+ -24]](h);a=6;break;case 6:HEAP[d]-=1;a=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=8;break;case 8:f=j;a=9;break;case 9:return g=f;default:assert(0,"bad label: "+a)}} -function _slot_tp_richcompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=HEAP[HEAP[c+4]+100]==254?1:5;break;case 1:var k=j=_half_richcompare5186(c,d,f);a=j!=__Py_NotImplementedStruct?2:3;break;case 2:h=k;a=11;break;case 3:HEAP[j]=HEAP[k]-1;a=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=5;break;case 5:a=HEAP[HEAP[d+4]+100]==254?6:10;break;case 6:var l=j=_half_richcompare5186(d,c,HEAP[__Py_SwappedOp+f*4]);a=j!=__Py_NotImplementedStruct?7:8;break;case 7:h= -l;a=11;break;case 8:HEAP[j]=HEAP[l]-1;a=HEAP[j]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=10;break;case 10:HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct;a=11;break;case 11:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_tp_iter(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f;b=g;c=_lookup_method(b,__str2255070,_iter_str_17475);e=c!=0?1:7;break;case 1:f=d=_PyTuple_New(0);e=f!=0?2:4;break;case 2:d=_PyObject_Call(c,f,0);HEAP[f]-=1;e=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);e=4;break;case 4:HEAP[c]-=1;e=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=6;break;case 6:a=d;e=12;break;case 7:_PyErr_Clear();c=_lookup_method(b,__str1434987,_getitem_str_17476); -e=c==0?8:9;break;case 8:_PyErr_Format(HEAP[_PyExc_TypeError],__str2265071,allocate([HEAP[HEAP[b+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=0;e=12;break;case 9:HEAP[c]-=1;e=HEAP[c]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=11;break;case 11:a=_PySeqIter_New(b);e=12;break;case 12:return g=a;default:assert(0,"bad label: "+e)}}function _slot_tp_iternext(g){return _call_method(g,__str2275072,_next_str_17518,__str1414985,allocate(1,"i32",ALLOC_STACK))} -function _slot_tp_descr_get(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[c+4];a=HEAP[_get_str_17529]==0?1:3;break;case 1:a=_PyString_InternFromString(__str2285073);HEAP[_get_str_17529]=a;a=HEAP[_get_str_17529]==0?2:3;break;case 2:h=0;a=12;break;case 3:k=a=__PyType_Lookup(j,HEAP[_get_str_17529]);a=a==0?4:7;break;case 4:a=HEAP[j+136]==256?5:6;break;case 5:HEAP[j+136]=0;a=6;break;case 6:HEAP[c]+=1;h=c;a=12;break;case 7:a=d==0?8:9;break;case 8:d=__Py_NoneStruct;a=9;break; -case 9:a=f==0?10:11;break;case 10:f=__Py_NoneStruct;a=11;break;case 11:h=_PyObject_CallFunctionObjArgs(k,allocate([c,0,0,0,d,0,0,0,f,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=12;break;case 12:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_tp_descr_set(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;a=e;f=b;var k=a;a=f==0?1:2;break;case 1:var l=_call_method(d,__str2295074,_del_str_17559,__str1575001,allocate([k,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));j=l;c=1;a=3;break;case 2:var m=_call_method(d,__str2305075,_set_str_17560,__str1585002,allocate([k,0,0,0,f,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));j=m;c=2;a=3;break;case 3:a=(c==2?m:l)==0?4:5;break; -case 4:h=-1;a=8;break;case 5:HEAP[j]-=1;a=HEAP[j]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=7;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _slot_tp_init(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;h=_lookup_method(a,__str2315076,_init_str_17582);a=h==0?1:2;break;case 1:f=-1;a=13;break;case 2:j=_PyObject_Call(h,c,d);HEAP[h]-=1;a=HEAP[h]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=4;break;case 4:a=j==0?5:6;break;case 5:f=-1;a=13;break;case 6:var k=j;a=j!=__Py_NoneStruct?7:10;break;case 7:_PyErr_Format(HEAP[_PyExc_TypeError],__str2325077,allocate([HEAP[HEAP[k+4]+12],0,0,0],["i8*",0,0,0], -ALLOC_STACK));HEAP[j]-=1;a=HEAP[j]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=9;break;case 9:f=-1;a=13;break;case 10:HEAP[j]=HEAP[k]-1;a=HEAP[j]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=12;break;case 12:f=0;a=13;break;case 13:return g=f;default:assert(0,"bad label: "+a)}} -function _slot_tp_new(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n;c=g;d=e;f=b;a=HEAP[_new_str_17624]==0?1:3;break;case 1:a=_PyString_InternFromString(__str674909);HEAP[_new_str_17624]=a;a=HEAP[_new_str_17624]==0?2:3;break;case 2:h=0;a=14;break;case 3:j=a=_PyObject_GetAttr(c,HEAP[_new_str_17624]);a=a==0?4:5;break;case 4:h=0;a=14;break;case 5:n=HEAP[d+8];k=_PyTuple_New(n+1);a=k==0?6:7;break;case 6:h=0;a=14;break;case 7:HEAP[c]+=1;HEAP[k+12]=c;m=0;a=m363?1:2;break;case 1:var h=HEAP[c+52];d=h;f-=364;a=1;b=7;break;case 2:b=f>351?3:4;break;case 3:var j=HEAP[c+56];d=j;f-=352;a=3;b=7;break;case 4:var k=c;b=f>195?5:6;break;case 5:var l=HEAP[k+48];d=l;f-=196;a=5;b=7;break;case 6:var m=k;d=m;a=6;b=7;break;case 7:b=(a==6?m:a==5?l:a==3?j:h)!=0?8:9;break;case 8:d+=f;b=9;break;case 9:return b=d;default:assert(0,"bad label: "+b)}} -function _resolve_slotdups(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;b=HEAP[_pname_17754]!=c?1:6;break;case 1:HEAP[_pname_17754]=c;h=_ptrs_17755;f=_slotdefs;b=HEAP[f+24]!=0?2:5;break;case 2:b=HEAP[f+24]==c?3:4;break;case 3:HEAP[h]=f;h+=4;b=4;break;case 4:f+=28;b=HEAP[f+24]!=0?2:5;break;case 5:HEAP[h]=0;b=6;break;case 6:j=0;h=_ptrs_17755;b=13;break;case 7:k=_slotptr(a,HEAP[HEAP[h]+4]);b=k==0?12:8;break;case 8:b=HEAP[k]==0?12:9;break;case 9:b=j!=0?10:11;break;case 10:d=0;b=15; -break;case 11:j=k;b=12;break;case 12:h+=4;b=13;break;case 13:b=HEAP[h]!=0?7:14;break;case 14:d=j;b=15;break;case 15:return b=d;default:assert(0,"bad label: "+b)}} -function _update_one_slot(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p;c=g;d=e;m=l=k=0;n=HEAP[d+4];o=_slotptr(c,n);b=o==0?1:3;break;case 1:d+=28;b=HEAP[d+4]==n?1:2;break;case 2:f=d;b=31;break;case 3:h=b=__PyType_Lookup(c,HEAP[d+24]);b=b==0?4:6;break;case 4:b=c+112==o?5:25;break;case 5:l=6;b=25;break;case 6:b=HEAP[h+4]==_PyWrapperDescr_Type?7:16;break;case 7:p=_resolve_slotdups(c,HEAP[d+24]);b=p==0?9:8;break;case 8:b=p==o?9:10;break;case 9:k=HEAP[d+8];b=10;break;case 10:j= -h;b=HEAP[HEAP[j+16]+12]==HEAP[d+12]?11:25;break;case 11:b=_PyType_IsSubtype(c,HEAP[j+8])!=0?12:25;break;case 12:b=l==0?14:13;break;case 13:b=HEAP[j+20]==l?14:15;break;case 14:l=HEAP[j+20];b=25;break;case 15:m=1;b=25;break;case 16:var q=h;HEAP[q+4]!=_PyCFunction_Type?(a=16,b=21):(a=16,b=17);break;case 17:b=HEAP[HEAP[h+8]+4]!=258?20:18;break;case 18:b=c+156!=o?20:19;break;case 19:l=HEAP[c+156];b=25;break;case 20:var r=h,a=20;b=21;break;case 21:b=(a==20?r:q)!=__Py_NoneStruct?24:22;break;case 22:b=c+ -60!=o?24:23;break;case 23:l=220;b=25;break;case 24:m=1;k=HEAP[d+8];b=25;break;case 25:d+=28;b=HEAP[d+4]==n?3:26;break;case 26:b=l==0?29:27;break;case 27:b=m!=0?29:28;break;case 28:HEAP[o]=l;b=30;break;case 29:HEAP[o]=k;b=30;break;case 30:f=d;b=31;break;case 31:return a=f;default:assert(0,"bad label: "+b)}} -function _update_slots_callback(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;c=e;b=HEAP[c]!=0?1:2;break;case 1:_update_one_slot(a,HEAP[c]);c+=4;b=HEAP[c]!=0?1:2;break;case 2:return 0;default:assert(0,"bad label: "+b)}} -function _slotdef_cmp(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;h=b=e;j=HEAP[a+4]-HEAP[h+4];b=j!=0?1:2;break;case 1:f=j;b=9;break;case 2:b=a<=h?3:7;break;case 3:b=a>>7)];e=HEAP[_index2+((g&127)+e*128)];return __PyUnicode_TypeRecords+e*10} -function __PyUnicodeUCS2_ToTitlecase(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=_gettyperecord(b&65535);var d=c=HEAP[e+4];e=(HEAP[e+8]&256)!=0?1:2;break;case 1:a=d&65535;e=5;break;case 2:e=d>32767?3:4;break;case 3:c-=65536;e=4;break;case 4:a=(c&65535)+b;e=5;break;case 5:return g=a,g&65535;default:assert(0,"bad label: "+e)}}function __PyUnicodeUCS2_IsTitlecase(g){g=_gettyperecord(g&65535);return(HEAP[g+8]&64)!=0} -function __PyUnicodeUCS2_ToDecimalDigit(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=_gettyperecord(g&65535);e=(HEAP[a+8]&2)!=0?1:2;break;case 1:b=HEAP[a+6];e=3;break;case 2:b=-1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function __PyUnicodeUCS2_IsDecimalDigit(g){var e;for(e=-1;;)switch(e){case -1:var b;e=__PyUnicodeUCS2_ToDecimalDigit(g&65535)<0?1:2;break;case 1:b=0;e=3;break;case 2:b=1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function __PyUnicodeUCS2_ToDigit(g){var e;for(e=-1;;)switch(e){case -1:var b,a;a=_gettyperecord(g&65535);e=(HEAP[a+8]&4)!=0?1:2;break;case 1:b=HEAP[a+7];e=3;break;case 2:b=-1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}}function __PyUnicodeUCS2_IsDigit(g){var e;for(e=-1;;)switch(e){case -1:var b;e=__PyUnicodeUCS2_ToDigit(g&65535)<0?1:2;break;case 1:b=0;e=3;break;case 2:b=1;e=3;break;case 3:return g=b;default:assert(0,"bad label: "+e)}} -function __PyUnicodeUCS2_IsNumeric(g){g=_gettyperecord(g&65535);return(HEAP[g+8]&512)!=0}function __PyUnicodeUCS2_IsLowercase(g){g=_gettyperecord(g&65535);return(HEAP[g+8]&8)!=0}function __PyUnicodeUCS2_IsUppercase(g){g=_gettyperecord(g&65535);return(HEAP[g+8]&128)!=0} -function __PyUnicodeUCS2_ToUppercase(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=_gettyperecord(b&65535);var d=c=HEAP[e];e=(HEAP[e+8]&256)!=0?1:2;break;case 1:a=d&65535;e=5;break;case 2:e=d>32767?3:4;break;case 3:c-=65536;e=4;break;case 4:a=(c&65535)+b;e=5;break;case 5:return g=a,g&65535;default:assert(0,"bad label: "+e)}} -function __PyUnicodeUCS2_ToLowercase(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;e=_gettyperecord(b&65535);var d=c=HEAP[e+2];e=(HEAP[e+8]&256)!=0?1:2;break;case 1:a=d&65535;e=5;break;case 2:e=d>32767?3:4;break;case 3:c-=65536;e=4;break;case 4:a=(c&65535)+b;e=5;break;case 5:return g=a,g&65535;default:assert(0,"bad label: "+e)}}function __PyUnicodeUCS2_IsAlpha(g){g=_gettyperecord(g&65535);return HEAP[g+8]&1}function _PyUnicodeUCS2_GetMax(){return 65535} -function _make_bloom_mask(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=d=0;b=f255?6:4;break;case 4:b=HEAP[_unicode_latin1+HEAP[HEAP[a+12]]*4]==a?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_SystemError],__str5196);h=-1;b=20;break;case 6:j=HEAP[a+12];b=(c+1)*2>=0?7:11;break;case 7:b=(c+1)*2!=0?8:9;break;case 8:d=(c+1)*2;b=10;break;case 9:d=1;b=10;break;case 10:f= -_realloc(HEAP[a+12],d);b=12;break;case 11:f=0;b=12;break;case 12:HEAP[a+12]=f;b=HEAP[a+12]==0?13:14;break;case 13:HEAP[a+12]=j;_PyErr_NoMemory();h=-1;b=20;break;case 14:HEAP[HEAP[a+12]+2*c]=0;HEAP[a+8]=c;b=15;break;case 15:b=HEAP[a+20]!=0?16:19;break;case 16:b=HEAP[a+20]!=0?17:19;break;case 17:k=HEAP[a+20];HEAP[a+20]=0;HEAP[k]-=1;b=HEAP[k]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=19;break;case 19:HEAP[a+16]=-1;h=0;b=20;break;case 20:return b=h;default:assert(0,"bad label: "+ -b)}} -function __PyUnicode_New(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l;b=g;e=b==0&HEAP[_unicode_empty]!=0?1:2;break;case 1:HEAP[HEAP[_unicode_empty]]+=1;h=HEAP[_unicode_empty];e=29;break;case 2:e=b>1073741822?3:4;break;case 3:h=_PyErr_NoMemory();e=29;break;case 4:e=HEAP[_free_list5197]!=0?5:17;break;case 5:j=HEAP[_free_list5197];HEAP[_free_list5197]=HEAP[j];HEAP[_numfree5198]-=1;e=HEAP[j+12]!=0?6:9;break;case 6:e=HEAP[j+8]=0?10:14;break;case 10:e=k!=0?11:12;break;case 11:d=k;e=13;break;case 12:d=1;e=13;break;case 13:f=_malloc(d);e=15;break;case 14:f=0;e=15;break;case 15:HEAP[j+12]=f;e=16;break;case 16:HEAP[j+4]=_PyUnicode_Type;HEAP[j]=1;e=26;break;case 17:j=__PyObject_New(_PyUnicode_Type);e=j==0?18:19;break;case 18:h=0;e=29;break;case 19:l=(b+1)*2;e=l>=0?20:24;break;case 20:e=l!=0?21:22;break;case 21:a=l;e=23;break;case 22:a=1;e=23;break;case 23:c=_malloc(a);e=25;break; -case 24:c=0;e=25;break;case 25:HEAP[j+12]=c;e=26;break;case 26:e=HEAP[j+12]==0?27:28;break;case 27:_PyErr_NoMemory();_PyObject_Free(j);h=0;e=29;break;case 28:HEAP[HEAP[j+12]]=0;HEAP[HEAP[j+12]+2*b]=0;HEAP[j+8]=b;HEAP[j+16]=-1;HEAP[j+20]=0;h=j;e=29;break;case 29:return g=h;default:assert(0,"bad label: "+e)}} -function _unicode_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+4]!=_PyUnicode_Type|HEAP[_numfree5198]>1023?8:1;break;case 1:e=HEAP[c+8]>8?2:3;break;case 2:_free(HEAP[b+12]);HEAP[b+12]=0;HEAP[b+8]=0;e=3;break;case 3:e=HEAP[b+20]!=0?4:7;break;case 4:e=HEAP[b+20]!=0?5:7;break;case 5:a=HEAP[b+20];HEAP[b+20]=0;HEAP[a]-=1;e=HEAP[a]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);e=7;break;case 7:HEAP[b]=HEAP[_free_list5197];HEAP[_free_list5197]=b;HEAP[_numfree5198]+=1; -e=12;break;case 8:_free(HEAP[c+12]);e=HEAP[b+20]!=0?9:11;break;case 9:e=HEAP[b+20];HEAP[e]-=1;e=HEAP[e]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+20]+4]+24]](HEAP[b+20]);e=11;break;case 11:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);e=12;break;case 12:return;default:assert(0,"bad label: "+e)}} -function __PyUnicode_Resize(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==0?1:2;break;case 1:__PyErr_BadInternalCall(__str15199,407);d=-1;b=16;break;case 2:f=HEAP[a];b=f==0?6:3;break;case 3:b=(HEAP[HEAP[f+4]+84]&268435456)==0?6:4;break;case 4:b=HEAP[f]!=1?6:5;break;case 5:b=c<0?6:7;break;case 6:__PyErr_BadInternalCall(__str15199,412);d=-1;b=16;break;case 7:b=HEAP[f+8]!=c?8:15;break;case 8:b=f==HEAP[_unicode_empty]?10:9;break;case 9:b=HEAP[f+8]==1?10:15;break;case 10:h=b=__PyUnicode_New(c); -b=b==0?11:12;break;case 11:d=-1;b=16;break;case 12:_llvm_memcpy_p0i8_p0i8_i32(HEAP[h+12],HEAP[f+12],(HEAP[f+8]<=c?HEAP[f+8]:c)*2,1,0);b=HEAP[a];HEAP[b]-=1;b=HEAP[b]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[HEAP[a]+4]+24]](HEAP[a]);b=14;break;case 14:HEAP[a]=h;d=0;b=16;break;case 15:d=_unicode_resize(f,c);b=16;break;case 16:return a=d;default:assert(0,"bad label: "+b)}}function _PyUnicodeUCS2_Resize(g,e){return __PyUnicode_Resize(g,e)} -function _PyUnicodeUCS2_FromUnicode(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=a!=0?1:10;break;case 1:b=c==0&HEAP[_unicode_empty]!=0?2:3;break;case 2:HEAP[HEAP[_unicode_empty]]+=1;d=HEAP[_unicode_empty];b=15;break;case 3:b=c==1?4:10;break;case 4:b=HEAP[a]<=255?5:10;break;case 5:f=HEAP[_unicode_latin1+HEAP[a]*4];b=f==0?6:9;break;case 6:f=__PyUnicode_New(1);b=f==0?7:8;break;case 7:d=0;b=15;break;case 8:HEAP[HEAP[f+12]]=HEAP[a];HEAP[_unicode_latin1+HEAP[a]*4]=f;b=9;break;case 9:HEAP[f]+= -1;d=f;b=15;break;case 10:f=b=__PyUnicode_New(c);b=b==0?11:12;break;case 11:d=0;b=15;break;case 12:b=a!=0?13:14;break;case 13:_llvm_memcpy_p0i8_p0i8_i32(HEAP[f+12],a,c*2,1,0);b=14;break;case 14:d=f;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_FromStringAndSize(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=c<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_SystemError],__str25200);d=0;b=16;break;case 2:var h=c;b=a!=0?3:13;break;case 3:b=h==0&HEAP[_unicode_empty]!=0?4:5;break;case 4:HEAP[HEAP[_unicode_empty]]+=1;d=HEAP[_unicode_empty];b=16;break;case 5:b=c==1?6:12;break;case 6:b=HEAP[a]>=0?7:12;break;case 7:f=HEAP[_unicode_latin1+HEAP[a]*4];b=f==0?8:11;break;case 8:f=__PyUnicode_New(1);b=f==0?9:10; -break;case 9:d=0;b=16;break;case 10:HEAP[HEAP[f+12]]=HEAP[a];HEAP[_unicode_latin1+HEAP[a]*4]=f;b=11;break;case 11:HEAP[f]+=1;d=f;b=16;break;case 12:d=_PyUnicodeUCS2_DecodeUTF8(a,c,0);b=16;break;case 13:f=__PyUnicode_New(h);b=f==0?14:15;break;case 14:d=0;b=16;break;case 15:d=f;b=16;break;case 16:return b=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_FromString(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=_strlen(b);e=c<0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str35201);a=0;e=3;break;case 2:a=_PyUnicodeUCS2_FromStringAndSize(b,c);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyUnicodeUCS2_FromWideChar(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k,l;a=g;c=e;b=a==0?1:2;break;case 1:__PyErr_BadInternalCall(__str15199,561);d=0;b=14;break;case 2:j=c;k=a;h=c;b=c>0?3:6;break;case 3:b=HEAP[a]>65535?4:5;break;case 4:j+=1;b=5;break;case 5:a+=4;h=b=h-1;b=b>0?3:6;break;case 6:a=k;f=b=__PyUnicode_New(j);b=b==0?7:8;break;case 7:d=0;b=14;break;case 8:l=HEAP[f+12];h=c;b=c>0?9:13;break;case 9:var m=HEAP[a];b=HEAP[a]>65535?10:11;break;case 10:b=m;a+=4;b-=65536;HEAP[l]= -b>>10&65535|-10240;l+=2;HEAP[l]=b&1023|-9216;l+=2;b=12;break;case 11:HEAP[l]=m&65535;l+=2;a+=4;b=12;break;case 12:h=b=h-1;b=b>0?9:13;break;case 13:d=f;b=14;break;case 14:return a=d;default:assert(0,"bad label: "+b)}} -function _makefmt(g,e,b,a,c,d,f){var h;for(h=-1;;)switch(h){case -1:var j,k,l,m,n,o,p,q;j=g;k=e;l=b;m=a;n=c;o=d;p=f;HEAP[j]=37;j+=1;h=n!=0?1:4;break;case 1:h=m!=0?2:3;break;case 2:HEAP[j]=48;j+=1;h=3;break;case 3:h=_sprintf(j,__str45202,allocate([n,0,0,0],["i32",0,0,0],ALLOC_STACK));j+=h;h=4;break;case 4:h=o!=0?5:6;break;case 5:h=_sprintf(j,__str55203,allocate([o,0,0,0],["i32",0,0,0],ALLOC_STACK));j+=h;h=6;break;case 6:h=k!=0?7:8;break;case 7:HEAP[j]=108;j+=1;h=11;break;case 8:h=l!=0?9:11;break;case 9:q= -__str65204;h=HEAP[q]!=0?10:11;break;case 10:HEAP[j]=HEAP[q];j+=1;q+=1;h=HEAP[q]!=0?10:11;break;case 11:HEAP[j]=p;j+=1;HEAP[j]=0;return;default:assert(0,"bad label: "+h)}} -function _PyUnicodeUCS2_FromFormatV(g,e){var b=STACKTOP;STACKTOP+=93;_memset(b,0,93);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r=b,u,s,t,v,w,x,y,z,C,A=b+4,G=b+8,E,D,R,M=b+29;z=b+89;var L,I,J,F,V,Q,Z,K;c=g;d=e;R=E=x=w=v=t=s=u=0;HEAP[z]=d;_llvm_va_copy(r,z);z=c;a=HEAP[z]!=0?1:14;break;case 1:a=HEAP[z]==37?2:13;break;case 2:a=HEAP[z+1]==37?13:3;break;case 3:a=HEAP[z+1]==83?5:4;break;case 4:a=HEAP[z+1]==82?5:6;break;case 5:u+=1;a=6;break;case 6:var N=___ctype_b_loc();a=(HEAP[HEAP[N]+ -2*HEAP[z]]&2048)!=0?7:8;break;case 7:w=w*10+-48+HEAP[z];z+=1;a=(HEAP[HEAP[N]+2*HEAP[z]]&2048)!=0?7:8;break;case 8:z+=1;a=HEAP[z]==0?11:9;break;case 9:a=HEAP[z]==37?11:10;break;case 10:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[z]]&1024)==0?8:11;break;case 11:a=HEAP[z]==115?12:13;break;case 12:u+=1;a=13;break;case 13:z+=1;a=HEAP[z]!=0?1:14;break;case 14:a=u!=0?15:18;break;case 15:s=_PyObject_Malloc(u*4);a=s==0?16:17;break;case 16:_PyErr_NoMemory();q=0;a=132;break;case 17:t=s;a=18;break;case 18:z=c; -a=51;break;case 19:a=HEAP[z]==37?20:49;break;case 20:L=z;w=0;var H=___ctype_b_loc();a=(HEAP[HEAP[H]+2*HEAP[z]]&2048)!=0?21:22;break;case 21:w=w*10+-48+HEAP[z];z+=1;a=(HEAP[HEAP[H]+2*HEAP[z]]&2048)!=0?21:22;break;case 22:z+=1;a=HEAP[z]==0?25:23;break;case 23:a=HEAP[z]==37?25:24;break;case 24:a=___ctype_b_loc();a=(HEAP[HEAP[a]+2*HEAP[z]]&1024)==0?22:25;break;case 25:a=HEAP[z]==108?27:26;break;case 26:a=HEAP[z]==122?27:30;break;case 27:a=HEAP[z+1]==100?29:28;break;case 28:a=HEAP[z+1]==117?29:30;break; -case 29:z+=1;a=30;break;case 30:a=HEAP[z];a=a==37?32:a==82?45:a==83?43:a==85?39:a==86?40:a==99?31:a==100?33:a==105?33:a==112?47:a==115?37:a==117?33:a==120?33:48;break;case 31:a=HEAP[r];HEAP[r]=a+4;a=32;break;case 32:v+=1;a=50;break;case 33:a=HEAP[r];HEAP[r]=a+4;a=w<=19?34:35;break;case 34:w=20;a=35;break;case 35:v=w+v;a=R20?53:56;break;case 53:E=_PyObject_Malloc(R);a=E==0?54:55;break;case 54:_PyErr_NoMemory();a=123;break;case 55:D=E;a=57;break;case 56:D=G;a=57;break;case 57:a=_PyUnicodeUCS2_FromUnicode(0,v);HEAP[A]=a;a=a==0?123:58;break;case 58:C=HEAP[HEAP[A]+12];t=s;z=c;var ba=M,W=M,B=M,Y=M,fa=M,ha=M,la=G,ra=G+1,ya=G+1,Da=G,Ua=G,Na=G+2,Pa=G,wa=G,Ya= -G+1,Ha=M,ta=M,Va=M,Ia=M,Wa=M,ia=M;a=117;break;case 59:var Ba=z;a=HEAP[z]==37?60:115;break;case 60:I=Ba;z+=1;F=J=0;y=HEAP[z]==48;w=0;var Xa=___ctype_b_loc();a=(HEAP[HEAP[Xa]+2*HEAP[z]]&2048)!=0?61:62;break;case 61:w=w*10+-48+HEAP[z];z+=1;a=(HEAP[HEAP[Xa]+2*HEAP[z]]&2048)!=0?61:62;break;case 62:x=0;a=HEAP[z]==46?63:65;break;case 63:z+=1;var Ta=___ctype_b_loc();a=(HEAP[HEAP[Ta]+2*HEAP[z]]&2048)!=0?64:65;break;case 64:x=x*10+-48+HEAP[z];z+=1;a=(HEAP[HEAP[Ta]+2*HEAP[z]]&2048)!=0?64:65;break;case 65:a= -HEAP[z]==108?66:69;break;case 66:a=HEAP[z+1]==100?68:67;break;case 67:a=HEAP[z+1]==117?68:69;break;case 68:J=1;z+=1;a=69;break;case 69:a=HEAP[z]==122?70:73;break;case 70:a=HEAP[z+1]==100?72:71;break;case 71:a=HEAP[z+1]==117?72:73;break;case 72:F=1;z+=1;a=73;break;case 73:a=HEAP[z];a=a==37?112:a==82?101:a==83?101:a==85?96:a==86?97:a==99?74:a==100?75:a==105?89:a==112?106:a==115?93:a==117?82:a==120?91:113;break;case 74:a=d;d=a+4;HEAP[C]=HEAP[a]&65535;C+=2;a=116;break;case 75:_makefmt(ba,J,F,y,w,x,100); -a=J!=0?76:77;break;case 76:a=d;d=a+4;_sprintf(D,W,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=80;break;case 77:var Ea=d;a=F!=0?78:79;break;case 78:a=Ea;d=a+4;_sprintf(D,B,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=80;break;case 79:a=Ea;d=a+4;_sprintf(D,Y,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=80;break;case 80:k=D;a=HEAP[k]!=0?81:116;break;case 81:HEAP[C]=HEAP[k];C+=2;k+=1;a=HEAP[k]!=0?81:116;break;case 82:_makefmt(Ha,J,F,y,w,x,117);a=J!=0?83:84;break;case 83:a= -d;d=a+4;_sprintf(D,ta,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=87;break;case 84:var Ga=d;a=F!=0?85:86;break;case 85:a=Ga;d=a+4;_sprintf(D,Va,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=87;break;case 86:a=Ga;d=a+4;_sprintf(D,Ia,allocate([HEAP[a],0,0,0],["i32",0,0,0],ALLOC_STACK));a=87;break;case 87:k=D;a=HEAP[k]!=0?88:116;break;case 88:HEAP[C]=HEAP[k];C+=2;k+=1;a=HEAP[k]!=0?88:116;break;case 89:_makefmt(fa,0,0,y,w,x,105);k=d;d=k+4;_sprintf(D,ha,allocate([HEAP[k],0,0,0],["i32", -0,0,0],ALLOC_STACK));k=D;a=HEAP[k]!=0?90:116;break;case 90:HEAP[C]=HEAP[k];C+=2;k+=1;a=HEAP[k]!=0?90:116;break;case 91:_makefmt(Wa,0,0,y,w,x,120);k=d;d=k+4;_sprintf(D,ia,allocate([HEAP[k],0,0,0],["i32",0,0,0],ALLOC_STACK));k=D;a=HEAP[k]!=0?92:116;break;case 92:HEAP[C]=HEAP[k];C+=2;k+=1;a=HEAP[k]!=0?92:116;break;case 93:d+=4;_llvm_memcpy_p0i8_p0i8_i32(C,HEAP[HEAP[t]+12],HEAP[HEAP[t]+8]*2,1,0);C+=2*HEAP[HEAP[t]+8];a=HEAP[t];HEAP[a]-=1;a=HEAP[a]==0?94:95;break;case 94:FUNCTION_TABLE[HEAP[HEAP[HEAP[t]+ -4]+24]](HEAP[t]);a=95;break;case 95:t+=4;a=116;break;case 96:a=d;d=a+4;a=HEAP[a];V=HEAP[a+8];_llvm_memcpy_p0i8_p0i8_i32(C,HEAP[a+12],V*2,1,0);C+=2*V;a=116;break;case 97:j=d;d=j+4;j=HEAP[j];h=d;d=h+4;h=HEAP[h];a=j!=0?98:99;break;case 98:a=HEAP[j+8];_llvm_memcpy_p0i8_p0i8_i32(C,HEAP[j+12],a*2,1,0);C+=2*a;a=116;break;case 99:k=h;a=HEAP[k]!=0?100:116;break;case 100:HEAP[C]=HEAP[k];C+=2;k+=1;a=HEAP[k]!=0?100:116;break;case 101:f=d;d=f+4;f=HEAP[HEAP[t]+12];Q=HEAP[HEAP[t]+8];Z=0;a=Z0?5:6;break;case 5:HEAP[f]=HEAP[k];f+=4;k+=2;l=a=l-1;a=a>0?5:6;break;case 6:a=HEAP[d+8]65535?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str95207);c=0;b=3;break;case 2:HEAP[d]=a&65535;c=_PyUnicodeUCS2_FromUnicode(d,1);b=3;break;case 3:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_FromObject(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c=b=g;e=HEAP[b+4]==_PyUnicode_Type?1:2;break;case 1:HEAP[b]=HEAP[c]+1;a=b;e=5;break;case 2:var d=b;e=(HEAP[HEAP[c+4]+84]&268435456)!=0?3:4;break;case 3:a=_PyUnicodeUCS2_FromUnicode(HEAP[b+12],HEAP[d+8]);e=5;break;case 4:a=_PyUnicodeUCS2_FromEncodedObject(d,0,__str105208);e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _PyUnicodeUCS2_FromEncodedObject(g,e,b){var a=STACKTOP;STACKTOP+=8;_memset(a,0,8);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l=a,m=a+4,n;f=g;h=e;j=b;HEAP[l]=0;c=f==0?1:2;break;case 1:__PyErr_BadInternalCall(__str15199,1112);k=0;c=18;break;case 2:c=(HEAP[HEAP[f+4]+84]&268435456)!=0?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str115209);k=0;c=18;break;case 4:var o=f;c=(HEAP[HEAP[f+4]+84]&134217728)!=0?5:6;break;case 5:HEAP[l]=o+20;var p=HEAP[f+8];HEAP[m]=p;d=5;c=13; -break;case 6:c=HEAP[o+4]==_PyByteArray_Type?8:7;break;case 7:c=_PyType_IsSubtype(HEAP[f+4],_PyByteArray_Type)!=0?8:9;break;case 8:_PyErr_Format(HEAP[_PyExc_TypeError],__str125210,allocate(1,"i32",ALLOC_STACK));k=0;c=18;break;case 9:c=_PyObject_AsCharBuffer(f,l,m)!=0?10:12;break;case 10:c=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?11:17;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError],__str135211,allocate([HEAP[HEAP[f+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));c=17;break;case 12:var q=HEAP[m], -d=12;c=13;break;case 13:c=(d==12?q:p)==0?14:15;break;case 14:HEAP[HEAP[_unicode_empty]]+=1;n=HEAP[_unicode_empty];c=16;break;case 15:n=_PyUnicodeUCS2_Decode(HEAP[l],HEAP[m],h,j);c=16;break;case 16:k=n;c=18;break;case 17:k=0;c=18;break;case 18:return g=k,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _PyUnicodeUCS2_Decode(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;l=0;c=h==0?1:2;break;case 1:h=_PyUnicodeUCS2_GetDefaultEncoding();c=2;break;case 2:c=_strcmp(h,__str145212)==0?3:4;break;case 3:k=_PyUnicodeUCS2_DecodeUTF8(d,f,j);c=20;break;case 4:c=_strcmp(h,__str155213)==0?5:6;break;case 5:k=_PyUnicodeUCS2_DecodeLatin1(d,f,j);c=20;break;case 6:c=_strcmp(h,__str165214);var n=d,o=f;c=c==0?7:8;break;case 7:k=_PyUnicodeUCS2_DecodeASCII(n,o,j);c=20;break;case 8:l= -_PyBuffer_FromMemory(n,o);c=l==0?19:9;break;case 9:m=_PyCodec_Decode(l,h,j);c=m==0?16:10;break;case 10:c=(HEAP[HEAP[m+4]+84]&268435456)==0?11:13;break;case 11:_PyErr_Format(HEAP[_PyExc_TypeError],__str175215,allocate([HEAP[HEAP[m+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[m]-=1;c=HEAP[m]==0?12:16;break;case 12:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);c=16;break;case 13:HEAP[l]-=1;c=HEAP[l]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=15;break;case 15:k=m;c=20;break;case 16:c=l!= -0?17:19;break;case 17:HEAP[l]-=1;c=HEAP[l]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);c=19;break;case 19:k=0;c=20;break;case 20:return g=k;default:assert(0,"bad label: "+c)}} -function _PyUnicode_AsDecodedObject(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=6;break;case 2:a=d==0?3:4;break;case 3:d=_PyUnicodeUCS2_GetDefaultEncoding();a=4;break;case 4:j=a=_PyCodec_Decode(c,d,f);a=a==0?6:5;break;case 5:h=j;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _PyUnicodeUCS2_Encode(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k;c=g;d=e;f=b;h=a;d=_PyUnicodeUCS2_FromUnicode(c,d);c=d==0?1:2;break;case 1:j=0;c=5;break;case 2:k=_PyUnicodeUCS2_AsEncodedString(d,f,h);HEAP[d]-=1;c=HEAP[d]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);c=4;break;case 4:j=k;c=5;break;case 5:return g=j;default:assert(0,"bad label: "+c)}} -function _PyUnicodeUCS2_AsEncodedObject(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=6;break;case 2:a=d==0?3:4;break;case 3:d=_PyUnicodeUCS2_GetDefaultEncoding();a=4;break;case 4:j=a=_PyCodec_Encode(c,d,f);a=a==0?6:5;break;case 5:h=j;a=7;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _PyUnicodeUCS2_AsEncodedString(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;a=(HEAP[HEAP[c+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=16;break;case 2:a=d==0?3:4;break;case 3:d=_PyUnicodeUCS2_GetDefaultEncoding();a=4;break;case 4:a=f==0?5:11;break;case 5:a=_strcmp(d,__str145212)==0?6:7;break;case 6:h=_PyUnicodeUCS2_AsUTF8String(c);a=17;break;case 7:a=_strcmp(d,__str155213)==0?8:9;break;case 8:h=_PyUnicodeUCS2_AsLatin1String(c);a=17;break;case 9:a=_strcmp(d, -__str165214)==0?10:11;break;case 10:h=_PyUnicodeUCS2_AsASCIIString(c);a=17;break;case 11:j=a=_PyCodec_Encode(c,d,f);a=a==0?16:12;break;case 12:var k=j;a=(HEAP[HEAP[j+4]+84]&134217728)==0?13:15;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str185216,allocate([HEAP[HEAP[k+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));HEAP[j]-=1;a=HEAP[j]==0?14:16;break;case 14:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=16;break;case 15:h=k;a=17;break;case 16:h=0;a=17;break;case 17:return g=h;default:assert(0,"bad label: "+ -a)}}function __PyUnicodeUCS2_AsDefaultEncodedString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=HEAP[a+20];b=f!=0?1:2;break;case 1:d=f;b=6;break;case 2:f=_PyUnicodeUCS2_AsEncodedString(a,0,c);b=f!=0?3:5;break;case 3:b=c==0?4:5;break;case 4:HEAP[a+20]=f;b=5;break;case 5:d=f;b=6;break;case 6:return b=d;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_AsUnicode(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=0;e=3;break;case 2:a=HEAP[b+12];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyUnicodeUCS2_GetSize(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=-1;e=3;break;case 2:a=HEAP[b+8];e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _PyUnicodeUCS2_GetDefaultEncoding(){return _unicode_default_encoding} -function _PyUnicodeUCS2_SetDefaultEncoding(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=__PyCodec_Lookup(b);e=c==0?4:1;break;case 1:HEAP[c]-=1;e=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);e=3;break;case 3:_strncpy(_unicode_default_encoding,b,100);a=0;e=5;break;case 4:a=-1;e=5;break;case 5:return g=a;default:assert(0,"bad label: "+e)}} -function _unicode_decode_call_errorhandler(g,e,b,a,c,d,f,h,j,k,l,m,n){var o=STACKTOP;STACKTOP+=8;_memset(o,0,8);var p;for(p=-1;;)switch(p){case -1:var q,r,u,s,t,v,w,x,y,z,C,A,G,E,D=o,R,M,L=o+4,I,J,F;q=g;r=e;u=b;s=a;t=c;v=d;w=f;x=h;y=j;z=k;C=l;A=m;G=n;E=0;HEAP[D]=0;R=HEAP[HEAP[C]+8];F=-1;p=HEAP[r]==0?1:2;break;case 1:p=_PyCodec_LookupError(q);HEAP[r]=p;p=HEAP[r]==0?21:2;break;case 2:p=HEAP[y]==0?3:4;break;case 3:p=_PyUnicodeDecodeError_Create(u,t,v,HEAP[w],HEAP[x],s);HEAP[y]=p;p=HEAP[y]==0?21:7;break; -case 4:p=_PyUnicodeDecodeError_SetStart(HEAP[y],HEAP[w])!=0?21:5;break;case 5:p=_PyUnicodeDecodeError_SetEnd(HEAP[y],HEAP[x])!=0?21:6;break;case 6:p=_PyUnicodeDecodeError_SetReason(HEAP[y],s)!=0?21:7;break;case 7:E=p=_PyObject_CallFunctionObjArgs(HEAP[r],allocate([HEAP[y],0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));p=p==0?24:8;break;case 8:p=(HEAP[HEAP[E+4]+84]&67108864)==0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_TypeError],__str195217+4);p=21;break;case 10:p=__PyArg_ParseTuple_SizeT(E, -__str195217,allocate([_PyUnicode_Type,0,0,0,D,0,0,0,L,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?21:11;break;case 11:p=HEAP[L]<0?12:13;break;case 12:p=v+HEAP[L];HEAP[L]=p;p=p<0?14:13;break;case 13:p=HEAP[L]>v?14:15;break;case 14:_PyErr_Format(HEAP[_PyExc_IndexError],__str205218,allocate([HEAP[L],0,0,0],["i32",0,0,0],ALLOC_STACK));p=21;break;case 15:I=HEAP[HEAP[D]+12];J=HEAP[HEAP[D]+8];M=J+HEAP[A]+v+(0-HEAP[L]);p=M>R?16:20;break;case 16:p=R* -2>M?17:18;break;case 17:M=R*2;p=18;break;case 18:p=__PyUnicode_Resize(C,M)<0?21:19;break;case 19:HEAP[G]=HEAP[HEAP[C]+12]+2*HEAP[A];p=20;break;case 20:HEAP[x]=HEAP[L];HEAP[z]=t+HEAP[L];_llvm_memcpy_p0i8_p0i8_i32(HEAP[G],I,J*2,1,0);HEAP[G]+=2*J;HEAP[A]=J+HEAP[A];F=0;p=21;break;case 21:p=E!=0?22:24;break;case 22:HEAP[E]-=1;p=HEAP[E]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[E+4]+24]](E);p=24;break;case 24:return g=F,STACKTOP=o,g;default:assert(0,"bad label: "+p)}} -function _PyUnicode_DecodeUTF7(g,e,b){return _PyUnicode_DecodeUTF7Stateful(g,e,b,0)} -function _PyUnicode_DecodeUTF7Stateful(g,e,b,a){var c=STACKTOP;STACKTOP+=32;_memset(c,0,32);var d;for(d=-1;;)switch(d){case -1:var f=c,h,j,k,l,m,n,o,p,q,r=c+4,u=c+8,s=c+12,t,v=c+16,w=c+20,x,y,z,C,A,G,E=c+24,D=c+28,R,M;HEAP[f]=g;h=e;j=b;k=a;q=HEAP[f];x=__str215219;G=A=C=y=0;HEAP[E]=0;HEAP[D]=0;d=__PyUnicode_New(h);HEAP[v]=d;d=HEAP[v]==0?1:2;break;case 1:p=0;d=79;break;case 2:d=h==0?3:6;break;case 3:d=k!=0?4:5;break;case 4:HEAP[k]=0;d=5;break;case 5:p=HEAP[v];d=79;break;case 6:HEAP[w]=HEAP[HEAP[v]+ -12];z=HEAP[w];t=HEAP[f]+h;d=50;break;case 7:R=HEAP[HEAP[f]];d=y!=0?8:41;break;case 8:d=___ctype_b_loc();d=(HEAP[HEAP[d]+2*R]&8)!=0?10:9;break;case 9:d=R==43|R==47?10:32;break;case 10:var L=A<<6,I=R;d=R<=64|R>90?12:11;break;case 11:o=I-65;d=22;break;case 12:var J=R;d=I<=96|R>122?14:13;break;case 13:n=J-71;d=21;break;case 14:var F=R;d=J<=47|R>57?16:15;break;case 15:m=F+4;d=20;break;case 16:d=F==43?17:18;break;case 17:l=62;d=19;break;case 18:l=63;d=19;break;case 19:m=l;d=20;break;case 20:n=m;d=21;break; -case 21:o=n;d=22;break;case 22:A=o|L;C=d=C+6;HEAP[f]+=1;d=d>15?23:50;break;case 23:M=A>>>C-16&65535;C-=16;A&=(1<57343?26:25;break;case 25:d=HEAP[w];HEAP[d]=G;HEAP[w]=d+2;G=HEAP[w];HEAP[G]=M;HEAP[w]=G+2;G=0;d=50;break;case 26:G=0;x=__str225220;d=49;break;case 27:var Q=M;d=V<=55295|M>56319?29:28;break;case 28:G=Q;d=50;break;case 29:d=Q<=56319|M>57343?31:30;break;case 30:x=__str235221;d=49;break;case 31:d=HEAP[w];HEAP[d]=M;HEAP[w]=d+2;d=50;break; -case 32:y=0;HEAP[f]+=1;d=G!=0?33:34;break;case 33:x=__str245222;d=49;break;case 34:d=C!=0?35:39;break;case 35:d=C>5?36:37;break;case 36:x=__str255223;d=49;break;case 37:d=A!=0?38:39;break;case 38:x=__str265224;d=49;break;case 39:d=R!=45?40:50;break;case 40:d=HEAP[w];HEAP[d]=R;HEAP[w]=d+2;d=50;break;case 41:d=R==43?42:46;break;case 42:HEAP[r]=HEAP[f]-q;HEAP[f]+=1;d=HEAP[f]>=t?45:43;break;case 43:d=HEAP[HEAP[f]]!=45?45:44;break;case 44:HEAP[f]+=1;d=HEAP[w];HEAP[d]=43;HEAP[w]=d+2;d=50;break;case 45:y= -1;z=HEAP[w];C=0;d=50;break;case 46:d=R>127|R==43?48:47;break;case 47:d=HEAP[w];HEAP[d]=R;HEAP[w]=d+2;HEAP[f]+=1;d=50;break;case 48:HEAP[r]=HEAP[f]-q;HEAP[f]+=1;x=__str275225;d=49;break;case 49:HEAP[s]=(HEAP[w]-HEAP[HEAP[v]+12])/2|0;HEAP[u]=HEAP[f]-q;d=_unicode_decode_call_errorhandler(j,E,__str285226,x,q,h,r,u,D,f,v,s,w)!=0?70:50;break;case 50:d=HEAP[f]5?57:55;break;case 55:d=C==0?58:56;break; -case 56:d=A!=0?57:58;break;case 57:HEAP[s]=(HEAP[w]-HEAP[HEAP[v]+12])/2|0;HEAP[u]=h;d=_unicode_decode_call_errorhandler(j,E,__str285226,__str295227,q,h,r,u,D,f,v,s,w)!=0?70:58;break;case 58:d=k!=0?59:62;break;case 59:d=y!=0?60:61;break;case 60:HEAP[w]=z;HEAP[k]=HEAP[r];d=62;break;case 61:HEAP[k]=HEAP[f]-q;d=62;break;case 62:d=__PyUnicode_Resize(v,(HEAP[w]-HEAP[HEAP[v]+12])/2|0)<0?70:63;break;case 63:d=HEAP[E]!=0?64:66;break;case 64:d=HEAP[E];HEAP[d]-=1;d=HEAP[d]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[HEAP[E]+ -4]+24]](HEAP[E]);d=66;break;case 66:d=HEAP[D]!=0?67:69;break;case 67:d=HEAP[D];HEAP[d]-=1;d=HEAP[d]==0?68:69;break;case 68:FUNCTION_TABLE[HEAP[HEAP[HEAP[D]+4]+24]](HEAP[D]);d=69;break;case 69:p=HEAP[v];d=79;break;case 70:d=HEAP[E]!=0?71:73;break;case 71:d=HEAP[E];HEAP[d]-=1;d=HEAP[d]==0?72:73;break;case 72:FUNCTION_TABLE[HEAP[HEAP[HEAP[E]+4]+24]](HEAP[E]);d=73;break;case 73:d=HEAP[D]!=0?74:76;break;case 74:d=HEAP[D];HEAP[d]-=1;d=HEAP[d]==0?75:76;break;case 75:FUNCTION_TABLE[HEAP[HEAP[HEAP[D]+4]+24]](HEAP[D]); -d=76;break;case 76:d=HEAP[v];HEAP[d]-=1;d=HEAP[d]==0?77:78;break;case 77:FUNCTION_TABLE[HEAP[HEAP[HEAP[v]+4]+24]](HEAP[v]);d=78;break;case 78:p=0;d=79;break;case 79:return g=p,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyUnicode_EncodeUTF7(g,e,b,a){var c=STACKTOP;STACKTOP+=4;_memset(c,0,4);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c,n,o,p,q,r,u,s,t;f=g;h=e;j=b;k=a;n=h*8;r=q=p=o=0;d=(n/8|0)!=h?1:2;break;case 1:l=_PyErr_NoMemory();d=40;break;case 2:d=h==0?3:4;break;case 3:l=_PyString_FromStringAndSize(0,0);d=40;break;case 4:d=_PyString_FromStringAndSize(0,n);HEAP[m]=d;d=HEAP[m]==0?5:6;break;case 5:l=0;d=40;break;case 6:s=u=HEAP[m]+20;d=p127|t==0?30:9;break;case 9:d=HEAP[_utf7_category+t]==0?14:10;break;case 10:d=k!=0?12:11;break;case 11:d=HEAP[_utf7_category+t]==2?14:12;break;case 12:d=j!=0?30:13;break;case 13:d=HEAP[_utf7_category+t]==1?14:30;break;case 14:d=q!=0?15:16;break;case 15:HEAP[u]=HEAP[__str305228+(r<<6-q&63)];u+=1;q=r=0;d=16;break;case 16:o=0;d=___ctype_b_loc();d=(HEAP[HEAP[d]+2*t]&8)!=0?18:17;break;case 17:d=t==43|t==47|t==45?18:19;break;case 18:HEAP[u]=45;u+=1;d=19;break;case 19:HEAP[u]=t&255;u+=1;d=32;break; -case 20:d=v==43?21:22;break;case 21:HEAP[u]=43;u+=1;HEAP[u]=45;u+=1;d=32;break;case 22:d=t>127|t==0?29:23;break;case 23:d=HEAP[_utf7_category+t]==0?28:24;break;case 24:d=k!=0?26:25;break;case 25:d=HEAP[_utf7_category+t]==2?28:26;break;case 26:d=j!=0?29:27;break;case 27:d=HEAP[_utf7_category+t]==1?28:29;break;case 28:HEAP[u]=t&255;u+=1;d=32;break;case 29:HEAP[u]=43;u+=1;o=1;d=30;break;case 30:q+=16;r=t|r<<16;d=q>5?31:32;break;case 31:HEAP[u]=HEAP[__str305228+(r>>>q-6&63)];u+=1;q=d=q-6;d=d>5?31:32; -break;case 32:p+=1;d=pu?10:15;break;case 10:d=k!=0?43:11;break;case 11:v=__str315229;HEAP[p]=HEAP[f]-m;HEAP[q]=HEAP[p]+1;o=1;d=13;break;case 12:HEAP[q]+=1;o+=1;d=13;break;case 13:d=h-HEAP[p]<=o?40:14;break;case 14:d=(HEAP[HEAP[f]+o]&192)==128?12:40;break;case 15:d=n;d=d==0?16:d==1?17:d==2?18:d==3?21:d==4?28:39;break;case 16:v=__str325230;HEAP[p]=HEAP[f]-m;HEAP[q]=HEAP[p]+ -1;d=40;break;case 17:v=__str335231;HEAP[p]=HEAP[f]-m;HEAP[q]=HEAP[p]+1;d=40;break;case 18:d=(HEAP[HEAP[f]+1]&192)!=128?19:20;break;case 19:v=__str345232;HEAP[p]=HEAP[f]-m;HEAP[q]=HEAP[p]+1;d=40;break;case 20:y=(HEAP[HEAP[f]+1]&63)+(HEAP[HEAP[f]]&31)*64;d=HEAP[t];HEAP[d]=y&65535;HEAP[t]=d+2;d=39;break;case 21:d=(HEAP[HEAP[f]+1]&192)!=128?25:22;break;case 22:d=(HEAP[HEAP[f]+2]&192)!=128?25:23;break;case 23:d=HEAP[HEAP[f]]!=-32?27:24;break;case 24:d=HEAP[HEAP[f]+1]<=159?25:27;break;case 25:v=__str345232; -HEAP[p]=HEAP[f]-m;HEAP[q]=HEAP[p]+1;d=(HEAP[HEAP[f]+1]&192)==128?26:40;break;case 26:HEAP[q]+=1;d=40;break;case 27:y=(HEAP[HEAP[f]+1]&63)*64+(HEAP[HEAP[f]]&15)*4096+(HEAP[HEAP[f]+2]&63);d=HEAP[t];HEAP[d]=y&65535;HEAP[t]=d+2;d=39;break;case 28:d=(HEAP[HEAP[f]+1]&192)!=128?35:29;break;case 29:d=(HEAP[HEAP[f]+2]&192)!=128?35:30;break;case 30:d=(HEAP[HEAP[f]+3]&192)!=128?35:31;break;case 31:d=HEAP[HEAP[f]]!=-16?33:32;break;case 32:d=HEAP[HEAP[f]+1]<=143?35:33;break;case 33:d=HEAP[HEAP[f]]!=-12?38:34; -break;case 34:d=HEAP[HEAP[f]+1]>143?35:38;break;case 35:v=__str345232;HEAP[p]=HEAP[f]-m;HEAP[q]=HEAP[p]+1;d=(HEAP[HEAP[f]+1]&192)==128?36:40;break;case 36:HEAP[q]+=1;d=(HEAP[HEAP[f]+2]&192)==128?37:40;break;case 37:HEAP[q]+=1;d=40;break;case 38:y=(HEAP[HEAP[f]+1]&63)*4096+(HEAP[HEAP[f]]&7)*262144+(HEAP[HEAP[f]+2]&63)*64+(HEAP[HEAP[f]+3]&63);y-=65536;d=HEAP[t];HEAP[d]=(y>>>10&65535)+-10240;HEAP[t]=d+2;d=HEAP[t];HEAP[d]=(y&1023)+-9216;HEAP[t]=d+2;d=39;break;case 39:HEAP[f]+=n;d=41;break;case 40:HEAP[r]= -(HEAP[t]-HEAP[HEAP[s]+12])/2|0;d=_unicode_decode_call_errorhandler(j,w,__str355233,v,m,h,p,q,x,f,s,r,t)!=0?52:41;break;case 41:d=HEAP[f]>>6&255|-64;k+=1;HEAP[k]=n&63|-128;k+=1;a=10;break;case 13:a=q<=65535?14:19;break;case 14:a=n>55295&n<=56319?15:18;break;case 15:a=h!=d?16:18;break;case 16:o=HEAP[c+2*h];a=o>56319&o<=57343?17:18;break;case 17:n=(n-55296<<10|o-56320)+65536;h+=1;a=19;break;case 18:HEAP[k]=n>>>12&255|-32;k+=1;HEAP[k]=n>>>6&63|-128;k+=1;HEAP[k]=n&63|-128;k+=1;a=10;break;case 19:HEAP[k]=n>>>18&255|-16; -k+=1;HEAP[k]=n>>>12&63|-128;k+=1;HEAP[k]=n>>>6&63|-128;k+=1;HEAP[k]=n&63|-128;k+=1;a=10;break;case 20:var r=k;a=HEAP[j]==0?21:22;break;case 21:a=r-m;a=_PyString_FromStringAndSize(m,a);HEAP[j]=a;a=24;break;case 22:a=r-(HEAP[j]+20);a=__PyString_Resize(j,a)!=0?23:24;break;case 23:f=0;a=25;break;case 24:f=HEAP[j];a=25;break;case 25:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyUnicodeUCS2_AsUTF8String(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=0;e=3;break;case 2:a=_PyUnicodeUCS2_EncodeUTF8(HEAP[b+12],HEAP[b+8],0);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _PyUnicodeUCS2_DecodeUTF32(g,e,b,a){return _PyUnicodeUCS2_DecodeUTF32Stateful(g,e,b,a,0)} -function _PyUnicodeUCS2_DecodeUTF32Stateful(g,e,b,a,c){var d=STACKTOP;STACKTOP+=48;_memset(d,0,48);var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p,q=d,r=d+4,u=d+8,s=d+12,t=d+16,v,w,x=d+20,y,z,C=d+24,A=d+40,G=d+44,E,D;j=g;k=e;l=b;m=a;n=c;p=j;y=v=0;z=__str215219;HEAP[C]=0;HEAP[C+4]=1;HEAP[C+8]=2;HEAP[C+12]=3;HEAP[A]=0;HEAP[G]=0;HEAP[x]=j;j=HEAP[x]+k;f=m!=0?1:2;break;case 1:var R=HEAP[m];y=R;h=1;f=3;break;case 2:var M=y,h=2;f=3;break;case 3:f=(h==2?M:R)==0?4:9;break;case 4:f=k>3?5:9;break; -case 5:E=HEAP[HEAP[x]+HEAP[C+8]]<<16|HEAP[HEAP[x]+HEAP[C+12]]<<24|HEAP[HEAP[x]+HEAP[C+4]]<<8|HEAP[HEAP[x]+HEAP[C]];f=E==65279?6:7;break;case 6:HEAP[x]+=4;y=-1;f=10;break;case 7:f=E==-131072?8:9;break;case 8:HEAP[x]+=4;var L=y=1,h=8;f=11;break;case 9:var I=y;I==-1?(h=9,f=10):(h=9,f=11);break;case 10:HEAP[C]=0;HEAP[C+4]=1;HEAP[C+8]=2;HEAP[C+12]=3;f=13;break;case 11:f=(h==8?L:I)==1?12:13;break;case 12:HEAP[C]=3;HEAP[C+4]=2;HEAP[C+8]=1;HEAP[C+12]=0;f=13;break;case 13:w=HEAP[x];f=w1114111?28:29;break;case 28:z=__str375235;HEAP[q]=HEAP[x]-p;HEAP[r]=HEAP[q]+4;f=33;break;case 29:var H=HEAP[t],ba=D;f=D>65535?30:31;break;case 30:HEAP[H]=ba-65536>>>10&65535|-10240;HEAP[t]=H+2;f=HEAP[t];HEAP[f]=D&1023|-9216;HEAP[t]=f+2;f=32;break;case 31:HEAP[H]=ba&65535;HEAP[t]=H+2;f=32;break;case 32:HEAP[x]+=4;f=34;break;case 33:HEAP[u]=(HEAP[t]-HEAP[HEAP[s]+12])/2|0;f=_unicode_decode_call_errorhandler(l, -A,__str385236,z,p,k,q,r,G,x,s,u,t)!=0?47:34;break;case 34:f=HEAP[x]n?1:7;break;case 1:c=HEAP[d+2*n]>55295?2:6;break;case 2:c=HEAP[d+2*n]<=56319?3:6;break;case 3:c=HEAP[d+2*(n+1)]>56319?4:6;break;case 4:c=HEAP[d+2*(n+1)]<=57343?5:6;break;case 5:o+=1;c=6;break;case 6:n+=1;c=f-1>n?1:7;break;case 7:c=0-o+f+(h==0);m=c*4;c=(m/4|0)!=c?8:9;break;case 8:j= -_PyErr_NoMemory();c=27;break;case 9:k=_PyString_FromStringAndSize(0,m);c=k==0?10:11;break;case 10:j=0;c=27;break;case 11:l=k+20;c=h==0?12:13;break;case 12:HEAP[l+HEAP[p+12]]=0;HEAP[l+HEAP[p+8]]=0;HEAP[l+HEAP[p+4]]=-2;HEAP[l+HEAP[p]]=-1;l+=4;c=13;break;case 13:c=f==0?14:15;break;case 14:j=k;c=27;break;case 15:c=h==-1?16:17;break;case 16:HEAP[p]=0;HEAP[p+4]=1;HEAP[p+8]=2;HEAP[p+12]=3;c=19;break;case 17:c=h==1?18:19;break;case 18:HEAP[p]=3;HEAP[p+4]=2;HEAP[p+8]=1;HEAP[p+12]=0;c=19;break;case 19:c=f> -0;f-=1;c=c?20:26;break;case 20:var u=p+12,s=p+8,t=p+4,v=p;c=21;break;case 21:q=HEAP[d];d+=2;c=q>55295&q<=56319?22:25;break;case 22:c=f>0?23:25;break;case 23:r=HEAP[d];c=r>56319&r<=57343?24:25;break;case 24:q=((q&1023)<<10|r&1023)+65536;d+=2;f-=1;c=25;break;case 25:HEAP[l+HEAP[u]]=q>>>24&255;HEAP[l+HEAP[s]]=q>>>16&255;HEAP[l+HEAP[t]]=q>>>8&255;HEAP[l+HEAP[v]]=q&255;l+=4;c=f>0;f-=1;c=c!=0?21:26;break;case 26:j=k;c=27;break;case 27:return g=j,STACKTOP=b,g;default:assert(0,"bad label: "+c)}} -function _PyUnicodeUCS2_AsUTF32String(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=0;e=3;break;case 2:a=_PyUnicodeUCS2_EncodeUTF32(HEAP[b+12],HEAP[b+8],0,0);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}}function _PyUnicodeUCS2_DecodeUTF16(g,e,b,a){return _PyUnicodeUCS2_DecodeUTF16Stateful(g,e,b,a,0)} -function _PyUnicodeUCS2_DecodeUTF16Stateful(g,e,b,a,c){var d=STACKTOP;STACKTOP+=32;_memset(d,0,32);var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p,q=d,r=d+4,u=d+8,s=d+12,t=d+16,v=d+20,w,x,y,z,C,A=d+24,G=d+28,E,D,R;j=g;k=e;l=b;m=a;n=c;p=j;x=0;y=__str215219;z=1;C=0;HEAP[A]=0;HEAP[G]=0;f=__PyUnicode_New(k);HEAP[s]=f;f=HEAP[s]==0?1:2;break;case 1:o=0;f=52;break;case 2:var M=HEAP[s];f=k==0?3:4;break;case 3:o=M;f=52;break;case 4:HEAP[t]=HEAP[M+12];HEAP[v]=j;w=HEAP[v]+k;f=m!=0?5:6;break;case 5:var L= -HEAP[m];x=L;h=5;f=7;break;case 6:var I=x,h=6;f=7;break;case 7:f=(h==6?I:L)==0?8:13;break;case 8:f=k>1?9:13;break;case 9:E=HEAP[HEAP[v]+C]|HEAP[HEAP[v]+z]<<8&65535;f=E==-257?10:11;break;case 10:HEAP[v]+=2;x=-1;f=14;break;case 11:f=E==-2?12:13;break;case 12:HEAP[v]+=2;var J=x=1,h=12;f=15;break;case 13:var F=x;F==-1?(h=13,f=14):(h=13,f=15);break;case 14:z=1;C=0;f=30;break;case 15:f=(h==12?J:F)==1?16:30;break;case 16:z=0;C=1;f=30;break;case 17:f=w-HEAP[v]<=1?18:20;break;case 18:f=n!=0?31:19;break;case 19:y= -__str365234;HEAP[q]=HEAP[v]-p;HEAP[r]=w-p;f=29;break;case 20:D=HEAP[HEAP[v]+C]|HEAP[HEAP[v]+z]<<8&65535;HEAP[v]+=2;f=D<=55295|D>57343?21:22;break;case 21:f=HEAP[t];HEAP[f]=D;HEAP[t]=f+2;f=30;break;case 22:f=HEAP[v]>=w?23:24;break;case 23:y=__str315229;HEAP[q]=HEAP[v]+-2-p;HEAP[r]=w-p;f=29;break;case 24:f=D>55295&D<=56319?25:28;break;case 25:R=HEAP[HEAP[v]+C]|HEAP[HEAP[v]+z]<<8&65535;HEAP[v]+=2;f=R<=56319|R>57343?27:26;break;case 26:f=HEAP[t];HEAP[f]=D;HEAP[t]=f+2;f=HEAP[t];HEAP[f]=R;HEAP[t]=f+2;f= -30;break;case 27:y=__str395237;HEAP[q]=HEAP[v]+-4-p;HEAP[r]=HEAP[q]+2;f=29;break;case 28:y=__str405238;HEAP[q]=HEAP[v]+-2-p;HEAP[r]=HEAP[q]+2;f=29;break;case 29:HEAP[u]=(HEAP[t]-HEAP[HEAP[s]+12])/2|0;f=_unicode_decode_call_errorhandler(l,A,__str415239,y,p,k,q,r,G,v,s,u,t)!=0?43:30;break;case 30:f=HEAP[v]0;d-=1;b=b?15:18;break;case 15:b=HEAP[c];c+=2;p=0;HEAP[k+n]=b>>>8&255;HEAP[k+o]=b&255;k+=2;b=p!=0?17:16;break;case 16:b=d>0;d-=1;b=b!=0?15:18;break;case 17:HEAP[k+n]=p>>>8&255;HEAP[k+o]=p&255;k+=2;b=16;break;case 18:h=j;b=19;break;case 19:return g=h;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_AsUTF16String(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=0;e=3;break;case 2:a=_PyUnicodeUCS2_EncodeUTF16(HEAP[b+12],HEAP[b+8],0,0);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyUnicodeUCS2_DecodeUnicodeEscape(g,e,b){var a=STACKTOP;STACKTOP+=36;_memset(a,0,36);var c,d=null;for(c=-1;;)switch(c){case -1:var f=a,h,j,k,l,m=a+4,n=a+8,o=a+12,p,q=a+16,r=a+20,u,s,t=a+24,v=a+28,w=a+32,x,y,z,C;HEAP[f]=g;h=e;j=b;l=HEAP[f];HEAP[t]=-1;HEAP[v]=0;HEAP[w]=0;c=__PyUnicode_New(h);HEAP[q]=c;c=HEAP[q]==0?87:1;break;case 1:var A=HEAP[q];c=h==0?2:3;break;case 2:k=A;c=94;break;case 3:HEAP[r]=HEAP[A+12];u=HEAP[f]+h;c=65;break;case 4:c=HEAP[HEAP[f]]!=92?5:6;break;case 5:c=HEAP[r];var G= -HEAP[f];HEAP[c]=HEAP[G];HEAP[r]=c+2;HEAP[f]=G+1;c=65;break;case 6:HEAP[m]=HEAP[f]-l;HEAP[f]+=1;c=HEAP[f];x=HEAP[c];HEAP[f]=c+1;c=HEAP[f]>u?7:8;break;case 7:x=0;c=8;break;case 8:c=x;c=c==10?65:c==34?11:c==39?10:c==48?19:c==49?19:c==50?19:c==51?19:c==52?19:c==53?19:c==54?19:c==55?19:c==78?50:c==85?29:c==92?9:c==97?18:c==98?12:c==102?13:c==110?15:c==114?16:c==116?14:c==117?28:c==118?17:c==120?27:62;break;case 9:c=HEAP[r];HEAP[c]=92;HEAP[r]=c+2;c=65;break;case 10:c=HEAP[r];HEAP[c]=39;HEAP[r]=c+2;c=65; -break;case 11:c=HEAP[r];HEAP[c]=34;HEAP[r]=c+2;c=65;break;case 12:c=HEAP[r];HEAP[c]=8;HEAP[r]=c+2;c=65;break;case 13:c=HEAP[r];HEAP[c]=12;HEAP[r]=c+2;c=65;break;case 14:c=HEAP[r];HEAP[c]=9;HEAP[r]=c+2;c=65;break;case 15:c=HEAP[r];HEAP[c]=10;HEAP[r]=c+2;c=65;break;case 16:c=HEAP[r];HEAP[c]=13;HEAP[r]=c+2;c=65;break;case 17:c=HEAP[r];HEAP[c]=11;HEAP[r]=c+2;c=65;break;case 18:c=HEAP[r];HEAP[c]=7;HEAP[r]=c+2;c=65;break;case 19:y=HEAP[HEAP[f]+-1]-48;c=HEAP[f]47?21: -26;break;case 21:c=HEAP[HEAP[f]]<=55?22:26;break;case 22:c=HEAP[f];y=y*8+-48+HEAP[c];HEAP[f]=c+1;c=HEAP[f]47?24:26;break;case 24:c=HEAP[HEAP[f]]<=55?25:26;break;case 25:c=HEAP[f];y=y*8+-48+HEAP[c];HEAP[f]=c+1;c=26;break;case 26:c=HEAP[r];HEAP[c]=y;HEAP[r]=c+2;c=65;break;case 27:z=2;s=__str425240;c=30;break;case 28:z=4;s=__str435241;c=30;break;case 29:z=8;s=__str445242;c=30;break;case 30:HEAP[t]=0;HEAP[o]=(HEAP[r]-HEAP[HEAP[q]+12])/2|0;c=HEAP[f]+z>u?31:32;break; -case 31:HEAP[n]=h;c=_unicode_decode_call_errorhandler(j,v,__str455243,__str465244,l,h,m,n,w,f,q,o,r)!=0?84:65;break;case 32:p=0;c=41;break;case 33:x=HEAP[R];c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*x]&4096)==0?34:35;break;case 34:HEAP[n]=HEAP[f]+p+1-l;c=_unicode_decode_call_errorhandler(j,v,__str455243,s,l,h,m,n,w,f,q,o,r)!=0?84:65;break;case 35:HEAP[t]=HEAP[t]<<4&-16;var E=x;c=x<=47|x>57?37:36;break;case 36:HEAP[t]=E+-48+HEAP[t];c=40;break;case 37:var D=x+HEAP[t];c=E<=96|x>102?39:38;break;case 38:HEAP[t]= -D-87;c=40;break;case 39:HEAP[t]=D-55;c=40;break;case 40:p+=1;c=41;break;case 41:var R=HEAP[f]+p;c=p>>10&65535)+-10240;HEAP[r]=c+2;c=HEAP[r];HEAP[c]= -(HEAP[t]&1023)+-9216;HEAP[r]=c+2;c=65;break;case 49:HEAP[n]=HEAP[f]-l;HEAP[o]=(HEAP[r]-HEAP[HEAP[q]+12])/2|0;c=_unicode_decode_call_errorhandler(j,v,__str455243,__str475245,l,h,m,n,w,f,q,o,r)!=0?84:65;break;case 50:s=__str485246;c=HEAP[_ucnhash_CAPI]==0?51:52;break;case 51:c=_PyCapsule_Import(__str495247,1);HEAP[_ucnhash_CAPI]=c;c=HEAP[_ucnhash_CAPI]==0?74:52;break;case 52:c=HEAP[HEAP[f]]==123?53:61;break;case 53:C=HEAP[f]+1;c=55;break;case 54:HEAP[f]+=1;c=55;break;case 55:c=HEAP[HEAP[f]]==125?57: -56;break;case 56:c=HEAP[f]C?58:61;break;case 58:c=HEAP[f]u?63:64;break;case 63:s=__str515249;HEAP[f]+=-1;HEAP[n]=HEAP[f]-l; -HEAP[o]=(HEAP[r]-HEAP[HEAP[q]+12])/2|0;c=_unicode_decode_call_errorhandler(j,v,__str455243,s,l,h,m,n,w,f,q,o,r)!=0?84:65;break;case 64:c=HEAP[r];HEAP[c]=92;HEAP[r]=c+2;c=HEAP[r];HEAP[c]=HEAP[HEAP[f]+-1];HEAP[r]=c+2;c=65;break;case 65:c=HEAP[f]0;d-=1;a=a!=0?1:5;break;case 5:h=0;a=6;break;case 6:return g=h;default:assert(0,"bad label: "+a)}} -function _unicodeescape_string(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m=a,n,o,p,q;f=g;h=e;j=b;o=6;c=(2147483644/o|0)0;h-=1;c=c?11:31;break;case 11:p=HEAP[f];f+=2;c=j==0?13:12;break;case 12:c=HEAP[HEAP[m]+20+1]==p|p==92?14:16;break;case 13:c=p==92?14:16;break;case 14:HEAP[n]=92;n+=1;HEAP[n]=p&255;n+=1;c=15;break;case 15:c=h>0;h-=1;c=c!=0?11:31;break;case 16:var r=p;p>55295&r<=56319?(d=16,c=17):(d=16,c=20);break;case 17:q=HEAP[f];f+=2;h-=1;c=q>56319&q<=57343?18:19;break;case 18:c=((p&1023)<<10|q&1023)+65536;HEAP[n]=92;n+=1;HEAP[n]=85;n+=1;HEAP[n]=HEAP[__str535251+ -(c>>>28&15)];n+=1;HEAP[n]=HEAP[__str535251+(c>>>24&15)];n+=1;HEAP[n]=HEAP[__str535251+(c>>>20&15)];n+=1;HEAP[n]=HEAP[__str535251+(c>>>16&15)];n+=1;HEAP[n]=HEAP[__str535251+(c>>>12&15)];n+=1;HEAP[n]=HEAP[__str535251+(c>>>8&15)];n+=1;HEAP[n]=HEAP[__str535251+(c>>>4&15)];n+=1;HEAP[n]=HEAP[__str535251+(c&15)];n+=1;c=15;break;case 19:f+=-2;h+=1;var u=p,d=19;c=20;break;case 20:c=(d==19?u:r)>255?21:22;break;case 21:HEAP[n]=92;n+=1;HEAP[n]=117;n+=1;HEAP[n]=HEAP[__str535251+(p>>>12&15)];n+=1;HEAP[n]=HEAP[__str535251+ -(p>>>8&15)];n+=1;HEAP[n]=HEAP[__str535251+(p>>>4&15)];n+=1;HEAP[n]=HEAP[__str535251+(p&15)];n+=1;c=15;break;case 22:c=p==9?23:24;break;case 23:HEAP[n]=92;n+=1;HEAP[n]=116;n+=1;c=15;break;case 24:c=p==10?25:26;break;case 25:HEAP[n]=92;n+=1;HEAP[n]=110;n+=1;c=15;break;case 26:c=p==13?27:28;break;case 27:HEAP[n]=92;n+=1;HEAP[n]=114;n+=1;c=15;break;case 28:c=p<=31|p>126?29:30;break;case 29:HEAP[n]=92;n+=1;HEAP[n]=120;n+=1;HEAP[n]=HEAP[__str535251+(p>>>4&15)];n+=1;HEAP[n]=HEAP[__str535251+(p&15)];n+=1; -c=15;break;case 30:HEAP[n]=p&255;n+=1;c=15;break;case 31:c=j!=0?32:33;break;case 32:HEAP[n]=HEAP[HEAP[m]+20+1];n+=1;c=33;break;case 33:HEAP[n]=0;c=__PyString_Resize(m,n-(HEAP[m]+20))!=0?34:35;break;case 34:l=0;c=36;break;case 35:l=HEAP[m];c=36;break;case 36:return g=l,STACKTOP=a,g;default:assert(0,"bad label: "+c)}}function _PyUnicodeUCS2_EncodeUnicodeEscape(g,e){return _unicodeescape_string(g,e,0)} -function _PyUnicodeUCS2_AsUnicodeEscapeString(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=0;e=3;break;case 2:a=_PyUnicodeUCS2_EncodeUnicodeEscape(HEAP[b+12],HEAP[b+8]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _PyUnicodeUCS2_DecodeRawUnicodeEscape(g,e,b){var a=STACKTOP;STACKTOP+=32;_memset(a,0,32);var c;for(c=-1;;)switch(c){case -1:var d=a,f,h,j,k,l,m=a+4,n=a+8,o=a+12,p=a+16,q=a+20,r,u,s=a+24,t=a+28,v,w,x,y;HEAP[d]=g;f=e;h=b;l=HEAP[d];HEAP[s]=0;HEAP[t]=0;c=__PyUnicode_New(f);HEAP[p]=c;c=HEAP[p]==0?44:1;break;case 1:var z=HEAP[p];c=f==0?2:3;break;case 2:k=z;c=51;break;case 3:HEAP[q]=HEAP[z+12];r=HEAP[d]+f;c=32;break;case 4:c=HEAP[HEAP[d]]!=92?5:6;break;case 5:c=HEAP[q];var C=HEAP[d];HEAP[c]=HEAP[C]; -HEAP[q]=c+2;HEAP[d]=C+1;c=32;break;case 6:HEAP[m]=HEAP[d]-l;u=HEAP[d];c=9;break;case 7:c=HEAP[HEAP[d]]!=92?10:8;break;case 8:c=HEAP[q];C=HEAP[d];HEAP[c]=HEAP[C];HEAP[q]=c+2;HEAP[d]=C+1;c=9;break;case 9:c=HEAP[d]=r?32:12;break;case 12:c=HEAP[HEAP[d]]==117?14:13;break;case 13:c=HEAP[HEAP[d]]!=85?32:14;break;case 14:HEAP[q]+=-2;c=HEAP[HEAP[d]]==117?15:16;break;case 15:j=4;c=17;break;case 16:j=8;c=17;break;case 17:y=j;HEAP[d]+=1;HEAP[o]= -(HEAP[q]-HEAP[HEAP[p]+12])/2|0;x=w=0;c=26;break;case 18:v=HEAP[HEAP[d]];c=___ctype_b_loc();c=(HEAP[HEAP[c]+2*v]&4096)==0?19:20;break;case 19:HEAP[n]=HEAP[d]-l;c=_unicode_decode_call_errorhandler(h,s,__str545252,__str555253,l,f,m,n,t,d,p,o,q)!=0?41:32;break;case 20:w=w<<4&-16;var A=v;c=v<=47|v>57?22:21;break;case 21:w=A+-48+w;c=25;break;case 22:var G=v+w;c=A<=96|v>102?24:23;break;case 23:w=G-87;c=25;break;case 24:w=G-55;c=25;break;case 25:x+=1;HEAP[d]+=1;c=26;break;case 26:c=x>>10&65535)+-10240;HEAP[q]=c+2;c=HEAP[q];HEAP[c]=(w&1023)+-9216;HEAP[q]=c+2;c=32;break;case 31:HEAP[n]=HEAP[d]-l;HEAP[o]=(HEAP[q]-HEAP[HEAP[p]+12])/2|0;c=_unicode_decode_call_errorhandler(h,s,__str545252,__str565254,l,f,m,n,t,d,p,o,q)!=0?41:32;break;case 32:c=HEAP[d]0;f-=1;a=a?7:15;break;case 7:n=HEAP[d];d+=2;var q=n;n>55295&q<=56319?(c=7,a=8):(c= -7,a=12);break;case 8:o=HEAP[d];d+=2;f-=1;a=o>56319&o<=57343?9:11;break;case 9:a=((n&1023)<<10|o&1023)+65536;HEAP[k]=92;k+=1;HEAP[k]=85;k+=1;HEAP[k]=HEAP[__str535251+(a>>>28&15)];k+=1;HEAP[k]=HEAP[__str535251+(a>>>24&15)];k+=1;HEAP[k]=HEAP[__str535251+(a>>>20&15)];k+=1;HEAP[k]=HEAP[__str535251+(a>>>16&15)];k+=1;HEAP[k]=HEAP[__str535251+(a>>>12&15)];k+=1;HEAP[k]=HEAP[__str535251+(a>>>8&15)];k+=1;HEAP[k]=HEAP[__str535251+(a>>>4&15)];k+=1;HEAP[k]=HEAP[__str535251+(a&15)];k+=1;a=10;break;case 10:a=f>0; -f-=1;a=a!=0?7:15;break;case 11:d+=-2;f+=1;var r=n,c=11;a=12;break;case 12:a=(c==11?r:q)>255?13:14;break;case 13:HEAP[k]=92;k+=1;HEAP[k]=117;k+=1;HEAP[k]=HEAP[__str535251+(n>>>12&15)];k+=1;HEAP[k]=HEAP[__str535251+(n>>>8&15)];k+=1;HEAP[k]=HEAP[__str535251+(n>>>4&15)];k+=1;HEAP[k]=HEAP[__str535251+(n&15)];k+=1;a=10;break;case 14:HEAP[k]=n&255;k+=1;a=10;break;case 15:HEAP[k]=0;a=__PyString_Resize(j,k-l)!=0?16:17;break;case 16:h=0;a=18;break;case 17:h=HEAP[j];a=18;break;case 18:return c=h,STACKTOP=b, -c;default:assert(0,"bad label: "+a)}}function _PyUnicodeUCS2_AsRawUnicodeEscapeString(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=(HEAP[HEAP[b+4]+84]&268435456)==0?1:2;break;case 1:_PyErr_BadArgument();a=0;e=3;break;case 2:a=_PyUnicodeUCS2_EncodeRawUnicodeEscape(HEAP[b+12],HEAP[b+8]);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function __PyUnicode_DecodeUnicodeInternal(g,e,b){var a=STACKTOP;STACKTOP+=32;_memset(a,0,32);var c;for(c=-1;;)switch(c){case -1:var d=a,f,h,j,k,l=a+4,m=a+8,n=a+12,o=a+16,p=a+20,q,r,u=a+24,s=a+28;HEAP[d]=g;f=e;h=b;k=HEAP[d];HEAP[u]=0;HEAP[s]=0;c=__PyUnicode_New((f+1)/2|0);HEAP[o]=c;c=HEAP[o]==0?22:1;break;case 1:c=_PyUnicodeUCS2_GetSize(HEAP[o]);var t=HEAP[o];c=c==0?2:3;break;case 2:j=t;c=29;break;case 3:HEAP[p]=HEAP[t+12];q=HEAP[d]+f;c=10;break;case 4:_llvm_memcpy_p0i8_p0i8_i32(HEAP[p],HEAP[d],2, -1,0);c=q-HEAP[d]<=1?5:9;break;case 5:HEAP[l]=HEAP[d]-k;c=q-HEAP[d]<=1?6:7;break;case 6:HEAP[m]=q-k;r=__str575255;c=8;break;case 7:HEAP[m]=HEAP[d]+2+(0-k);r=__str585256;c=8;break;case 8:HEAP[n]=(HEAP[p]-HEAP[HEAP[o]+12])/2|0;c=_unicode_decode_call_errorhandler(h,u,__str595257,r,k,f,l,m,s,d,o,n,p)!=0?19:10;break;case 9:HEAP[p]+=2;HEAP[d]+=2;c=10;break;case 10:c=HEAP[d]0;d-=1;a=a?6:7;break;case 6:HEAP[j]=HEAP[c];j+=2;c+=1;a=d>0;d-=1;a=a!=0?6:7;break;case 7:f=h;a=12;break;case 8:a=h!=0?9:11;break;case 9:HEAP[h]-=1;a= -HEAP[h]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=11;break;case 11:f=0;a=12;break;case 12:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _make_encode_exception(g,e,b,a,c,d,f){var h;for(h=-1;;)switch(h){case -1:var j,k,l,m,n,o,p;j=g;k=e;l=b;m=a;n=c;o=d;p=f;h=HEAP[j]==0?1:2;break;case 1:h=_PyUnicodeEncodeError_Create(k,l,m,n,o,p);HEAP[j]=h;h=8;break;case 2:h=_PyUnicodeEncodeError_SetStart(HEAP[j],n)!=0?5:3;break;case 3:h=_PyUnicodeEncodeError_SetEnd(HEAP[j],o)!=0?5:4;break;case 4:h=_PyUnicodeEncodeError_SetReason(HEAP[j],p)!=0?5:8;break;case 5:h=HEAP[j];HEAP[h]-=1;h=HEAP[h]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+ -4]+24]](HEAP[j]);h=7;break;case 7:HEAP[j]=0;h=8;break;case 8:return;default:assert(0,"bad label: "+h)}}function _raise_encode_exception(g,e,b,a,c,d,f){var h;for(h=-1;;)switch(h){case -1:var j;j=g;_make_encode_exception(j,e,b,a,c,d,f);h=HEAP[j]!=0?1:2;break;case 1:_PyCodec_StrictErrors(HEAP[j]);h=2;break;case 2:return;default:assert(0,"bad label: "+h)}} -function _unicode_encode_call_errorhandler(g,e,b,a,c,d,f,h,j,k){var l=STACKTOP;STACKTOP+=4;_memset(l,0,4);var m;for(m=-1;;)switch(m){case -1:var n,o,p,q,r,u,s,t,v,w,x,y,z=l;n=g;o=e;p=b;q=a;r=c;u=d;s=f;t=h;v=j;w=k;m=HEAP[o]==0?1:3;break;case 1:m=_PyCodec_LookupError(n);HEAP[o]=m;m=HEAP[o]==0?2:3;break;case 2:x=0;m=25;break;case 3:_make_encode_exception(s,p,r,u,t,v,q);m=HEAP[s]==0?4:5;break;case 4:x=0;m=25;break;case 5:y=_PyObject_CallFunctionObjArgs(HEAP[o],allocate([HEAP[s],0,0,0,0,0,0,0],["%struct.NullImporter*", -0,0,0,"i8*",0,0,0],ALLOC_STACK));m=y==0?6:7;break;case 6:x=0;m=25;break;case 7:m=(HEAP[HEAP[y+4]+84]&67108864)==0?8:11;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str605258+4);HEAP[y]-=1;m=HEAP[y]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);m=10;break;case 10:x=0;m=25;break;case 11:m=__PyArg_ParseTuple_SizeT(y,__str605258,allocate([_PyUnicode_Type,0,0,0,z,0,0,0,w,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?12:15;break; -case 12:HEAP[y]-=1;m=HEAP[y]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);m=14;break;case 14:x=0;m=25;break;case 15:m=HEAP[w]<0?16:17;break;case 16:HEAP[w]=u+HEAP[w];m=17;break;case 17:m=HEAP[w]<0?19:18;break;case 18:m=HEAP[w]>u?19:22;break;case 19:_PyErr_Format(HEAP[_PyExc_IndexError],__str205218,allocate([HEAP[w],0,0,0],["i32",0,0,0],ALLOC_STACK));HEAP[y]-=1;m=HEAP[y]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);m=21;break;case 21:x=0;m=25;break;case 22:HEAP[HEAP[z]]+= -1;HEAP[y]-=1;m=HEAP[y]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);m=24;break;case 24:x=HEAP[z];m=25;break;case 25:return g=x,STACKTOP=l,g;default:assert(0,"bad label: "+m)}} -function _unicode_encode_ucs1(g,e,b,a){var c=STACKTOP;STACKTOP+=16;_memset(c,0,16);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o=c,p,q,r,u,s,t,v,w=c+4,x=c+8,y,z,C,A,G,E,D=c+12,R,M,L,I;f=g;h=e;j=b;k=a;p=f;q=f+2*h;u=0;d=k==256?1:2;break;case 1:n=__str155213;d=3;break;case 2:n=__str165214;d=3;break;case 3:t=n;d=k==256?4:5;break;case 4:m=__str615259;d=6;break;case 5:m=__str625260;d=6;break;case 6:v=m;HEAP[w]=0;HEAP[x]=0;y=-1;d=_PyString_FromStringAndSize(0,h);HEAP[o]=d;d=d==0?79:7;break;case 7:var J= -HEAP[o];d=h==0?8:9;break;case 8:l=J;d=86;break;case 9:r=J+20;s=h;d=66;break;case 10:z=HEAP[f];d=z=q?16:15;break;case 15:d=HEAP[I]>=k?13:16;break;case 16:d=y;d=d==-1?17:d==1?28:d==2?22:d==3?30:d==4?31:50;break;case 17:d=j==0?19:18;break;case 18:d=_strcmp(j,__str105208)==0?19:20;break;case 19:y=1;d=28;break;case 20:d=_strcmp(j,__str75205)==0?21:23;break;case 21:y=2;d=22; -break;case 22:d=Ls?43:47;break;case 43:d=s*2>A?44:45;break;case 44:A=s*2;d=45;break;case 45:d=__PyString_Resize(o,A)!=0?76:46;break;case 46:r=HEAP[o]+20+R;s=A;d=47;break;case 47:f=L;d=fs?52:58;break;case 52:d=s*2>A?53:54;break;case 53:A=s*2;d=54;break;case 54:d=__PyString_Resize(o,A)!=0?55:57;break;case 55:HEAP[G]-=1;d=HEAP[G]==0?56:76;break;case 56:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=76;break;case 57:r=HEAP[o]+20+R;s=A;d=58;break;case 58:M=HEAP[G+12];d=63;break;case 59:z= -HEAP[M];d=z>=k?60:62;break;case 60:_raise_encode_exception(x,t,p,h,C,C+1,v);HEAP[G]-=1;d=HEAP[G]==0?61:76;break;case 61:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=76;break;case 62:HEAP[r]=z&255;M+=2;r+=1;d=63;break;case 63:d=E>0;E-=1;d=d!=0?59:64;break;case 64:f=p+2*HEAP[D];HEAP[G]-=1;d=HEAP[G]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=66;break;case 66:d=f=0?2:3;break;case 2:HEAP[s]=HEAP[HEAP[d]];j=_PyUnicodeUCS2_FromUnicode(s,1);c=30;break;case 3:c=__PyUnicode_New(f);HEAP[l]=c;c=c==0?23:4;break;case 4:var v=HEAP[l];c=f==0?5:6;break;case 5:j=v;c=30;break;case 6:HEAP[m]= -HEAP[v+12];q=HEAP[d]+f;c=10;break;case 7:t=HEAP[HEAP[d]];c=t>=0?8:9;break;case 8:c=HEAP[m];HEAP[c]=t;HEAP[m]=c+2;HEAP[d]+=1;c=10;break;case 9:HEAP[n]=HEAP[d]-k;HEAP[o]=HEAP[n]+1;HEAP[p]=(HEAP[m]-HEAP[HEAP[l]+12])/2|0;c=_unicode_decode_call_errorhandler(h,r,__str165214,__str625260,k,f,n,o,u,d,l,p,m)!=0?20:10;break;case 10:c=HEAP[d]65535?21:23;break;case 21:_PyErr_SetString(HEAP[_PyExc_TypeError], -__str685266);HEAP[G]-=1;d=HEAP[G]==0?22:55;break;case 22:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=55;break;case 23:d=HEAP[s];HEAP[d]=E&65535;HEAP[s]=d+2;d=42;break;case 24:d=J==__Py_NoneStruct?25:30;break;case 25:HEAP[q]=(HEAP[s]-HEAP[HEAP[u]+12])/2|0;HEAP[o]=HEAP[h]-n;HEAP[p]=HEAP[o]+1;d=_unicode_decode_call_errorhandler(l,v,__str665264,__str675265,n,j,o,p,w,h,u,q,s)!=0;HEAP[G]-=1;var F=HEAP[G]==0;d=d?26:28;break;case 26:d=F?27:55;break;case 27:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=55;break;case 28:d= -F?29:45;break;case 29:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=45;break;case 30:d=(HEAP[HEAP[G+4]+84]&268435456)!=0?31:40;break;case 31:D=HEAP[G+8];d=D==1?32:33;break;case 32:d=HEAP[s];HEAP[d]=HEAP[HEAP[G+12]];HEAP[s]=d+2;d=42;break;case 33:d=D>1?34:42;break;case 34:d=D>t?35:39;break;case 35:R=(HEAP[s]-HEAP[HEAP[u]+12])/2|0;d=0-t+D+D*4;t=d+t;d=__PyUnicode_Resize(u,d+HEAP[HEAP[u]+8])<0?36:38;break;case 36:HEAP[G]-=1;d=HEAP[G]==0?37:55;break;case 37:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=55;break;case 38:HEAP[s]= -HEAP[HEAP[u]+12]+2*R;d=39;break;case 39:_llvm_memcpy_p0i8_p0i8_i32(HEAP[s],HEAP[G+12],D*2,1,0);HEAP[s]+=2*D;t-=D;d=42;break;case 40:_PyErr_SetString(HEAP[_PyExc_TypeError],__str695267);HEAP[G]-=1;d=HEAP[G]==0?41:55;break;case 41:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=55;break;case 42:HEAP[G]-=1;d=HEAP[G]==0?43:44;break;case 43:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);d=44;break;case 44:HEAP[h]+=1;d=45;break;case 45:d=HEAP[h]>>11;t=HEAP[h+2*k]>>>7;b=HEAP[m+s]==-1?10:11;break;case 10:HEAP[m+s]=r&255;r+=1;b=11;break;case 11:b=HEAP[n+t]==-1?12:13;break;case 12:HEAP[n+t]=u&255;u+=1;b=13;break;case 13:var z=k+1;k=z;a=13;b=14;break;case 14:b=(a==13?z:1)<=255?6:15;break;case 15:b=r>254?17:16;break;case 16:b=u>254?17:18;break;case 17:l=1;b=19;break;case 18:b=l!=0?19:42;break;case 19:v=b=_PyDict_New();b=b==0?20:21;break;case 20:f= -0;b=56;break;case 21:k=0;a=21;b=30;break;case 22:w=_PyInt_FromLong(HEAP[h+2*k]);var C=_PyInt_FromLong(k);x=C;w==0?(a=22,b=36):(a=22,b=23);break;case 23:b=x==0?32:24;break;case 24:b=_PyDict_SetItem(v,w,x)==-1?32:25;break;case 25:HEAP[w]-=1;b=HEAP[w]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);b=27;break;case 27:HEAP[x]-=1;b=HEAP[x]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);b=29;break;case 29:var A=k+1;k=A;a=29;b=30;break;case 30:b=(a==29?A:0)<=255?22:31;break;case 31:f= -v;b=56;break;case 32:b=w!=0?33:35;break;case 33:HEAP[w]-=1;b=HEAP[w]==0?34:35;break;case 34:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);b=35;break;case 35:var G=x,a=35;b=36;break;case 36:b=(a==35?G:C)!=0?37:39;break;case 37:HEAP[x]-=1;b=HEAP[x]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);b=39;break;case 39:HEAP[v]-=1;b=HEAP[v]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);b=41;break;case 41:f=0;b=56;break;case 42:b=(u*8+r)*16+51>=0?43:46;break;case 43:b=(u*8+r)*16!=-51?44: -45;break;case 44:d=(u*8+r)*16+51;b=47;break;case 45:d=1;b=47;break;case 46:j=0;b=48;break;case 47:j=b=_malloc(d);b=b==0?48:49;break;case 48:f=_PyErr_NoMemory();b=56;break;case 49:_PyObject_Init(j,_EncodingMapType);k=j;HEAP[k+40]=r;HEAP[k+44]=u;o=k+8;p=k+48;q=k+48+r*16;_llvm_memcpy_p0i8_p0i8_i32(o,m,32,1,0);_llvm_memset_p0i8_i32(p,-1,r*16,1,0);_llvm_memset_p0i8_i32(q,0,u*128,1,0);u=0;k=1;b=50;break;case 50:b=HEAP[h+2*k]==-2?54:51;break;case 51:y=HEAP[h+2*k]>>>11;b=HEAP[h+2*k]>>>7&15;y=HEAP[o+y]*16+ -b;b=HEAP[p+y]==-1?52:53;break;case 52:HEAP[p+y]=u&255;u+=1;b=53;break;case 53:b=HEAP[h+2*k]&127;b=HEAP[p+y]*128+b;HEAP[q+b]=k&255;b=54;break;case 54:k=b=k+1;b=b<=255?50:55;break;case 55:f=j;b=56;break;case 56:return g=f,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _encoding_map_lookup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;b=g;c=e;d=b>>>11;f=b>>>7&15;h=b&127;b=b==0?1:2;break;case 1:a=0;b=9;break;case 2:j=HEAP[c+8+d];b=j==255?3:4;break;case 3:a=-1;b=9;break;case 4:j=HEAP[c+48+(j*16+f)];b=j==255?5:6;break;case 5:a=-1;b=9;break;case 6:j=HEAP[c+48+((j*8+HEAP[c+40])*16+h)];b=j==0?7:8;break;case 7:a=-1;b=9;break;case 8:a=j;b=9;break;case 9:return a;default:assert(0,"bad label: "+b)}} -function _charmapencode_lookup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;a=_PyInt_FromLong(a);b=a==0?1:2;break;case 1:d=0;b=21;break;case 2:f=_PyObject_GetItem(c,a);HEAP[a]-=1;b=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=4;break;case 4:b=f==0?5:8;break;case 5:b=_PyErr_ExceptionMatches(HEAP[_PyExc_LookupError])!=0?6:7;break;case 6:_PyErr_Clear();f=__Py_NoneStruct;HEAP[f]+=1;d=f;b=21;break;case 7:d=0;b=21;break;case 8:var h=f;b=f==__Py_NoneStruct?9:10;break; -case 9:d=h;b=21;break;case 10:var j=f;b=(HEAP[HEAP[h+4]+84]&8388608)!=0?11:16;break;case 11:b=HEAP[j+8];b=b<0|b>255?12:15;break;case 12:_PyErr_SetString(HEAP[_PyExc_TypeError],__str735271);HEAP[f]-=1;b=HEAP[f]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=14;break;case 14:d=0;b=21;break;case 15:d=f;b=21;break;case 16:b=(HEAP[HEAP[j+4]+84]&134217728)!=0?17:18;break;case 17:d=f;b=21;break;case 18:_PyErr_SetString(HEAP[_PyExc_TypeError],__str745272);HEAP[f]-=1;b=HEAP[f]==0?19:20;break; -case 19:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=20;break;case 20:d=0;b=21;break;case 21:return c=d;default:assert(0,"bad label: "+b)}}function _charmapencode_resize(g,e,b){for(e=-1;;)switch(e){case -1:var a,c,d,f;a=g;c=b;f=HEAP[HEAP[a]+8];e=f*2>c?1:2;break;case 1:c=f*2;e=2;break;case 2:e=__PyString_Resize(a,c)!=0?3:4;break;case 3:d=0;e=5;break;case 4:d=1;e=5;break;case 5:return g=d;default:assert(0,"bad label: "+e)}} -function _charmapencode_output(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r;d=g;c=e;f=b;h=a;l=HEAP[HEAP[f]+8];d&=65535;var u=c;c=HEAP[c+4]==_EncodingMapType?1:7;break;case 1:m=_encoding_map_lookup(d,u);n=HEAP[h]+1;c=m==-1?2:3;break;case 2:j=1;c=29;break;case 3:c=l0;z-=1;m=m!=0?48:56;break;case 56:HEAP[p]=HEAP[C];HEAP[y]-=1;m=HEAP[y]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[y+4]+24]](y);m=58;break;case 58:x=0;m=59;break;case 59:return g=x,STACKTOP=l,g;default:assert(0,"bad label: "+m)}} -function _PyUnicodeUCS2_EncodeCharmap(g,e,b,a){var c=STACKTOP;STACKTOP+=24;_memset(c,0,24);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c,n=c+4,o=c+8,p=c+12,q=c+16,r=c+20,u;f=g;h=e;j=b;k=a;HEAP[m]=0;HEAP[n]=0;HEAP[o]=0;HEAP[p]=0;HEAP[q]=0;HEAP[r]=-1;d=j==0?1:2;break;case 1:l=_PyUnicodeUCS2_EncodeLatin1(f,h,k);d=29;break;case 2:d=_PyString_FromStringAndSize(0,h);HEAP[m]=d;d=HEAP[m]==0?22:3;break;case 3:d=h==0?4:9;break;case 4:l=HEAP[m];d=29;break;case 5:u=_charmapencode_output(HEAP[f+2*HEAP[n]]& -65535,j,m,o);d=u==2?19:6;break;case 6:d=u==1?7:8;break;case 7:d=_charmap_encoding_error(f,h,n,j,q,r,p,k,m,o)!=0?19:9;break;case 8:HEAP[n]+=1;d=9;break;case 9:d=HEAP[n]HEAP[o]?11:12;break;case 11:d=__PyString_Resize(m,HEAP[o])!=0?19:12;break;case 12:d=HEAP[q]!=0?13:15;break;case 13:d=HEAP[q];HEAP[d]-=1;d=HEAP[d]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);d=15;break;case 15:d=HEAP[p]!=0?16:18;break;case 16:d=HEAP[p];HEAP[d]-=1;d= -HEAP[d]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[HEAP[p]+4]+24]](HEAP[p]);d=18;break;case 18:l=HEAP[m];d=29;break;case 19:d=HEAP[m]!=0?20:22;break;case 20:d=HEAP[m];HEAP[d]-=1;d=HEAP[d]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);d=22;break;case 22:d=HEAP[q]!=0?23:25;break;case 23:d=HEAP[q];HEAP[d]-=1;d=HEAP[d]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[HEAP[q]+4]+24]](HEAP[q]);d=25;break;case 25:d=HEAP[p]!=0?26:28;break;case 26:d=HEAP[p];HEAP[d]-=1;d=HEAP[d]== -0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[HEAP[p]+4]+24]](HEAP[p]);d=28;break;case 28:l=0;d=29;break;case 29:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyUnicodeUCS2_AsCharmapString(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&268435456)==0?2:1;break;case 1:b=c==0?2:3;break;case 2:_PyErr_BadArgument();d=0;b=4;break;case 3:d=_PyUnicodeUCS2_EncodeCharmap(HEAP[a+12],HEAP[a+8],c,0);b=4;break;case 4:return b=d;default:assert(0,"bad label: "+b)}} -function _make_translate_exception(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=HEAP[h]==0?1:2;break;case 1:f=_PyUnicodeTranslateError_Create(j,k,l,m,n);HEAP[h]=f;f=8;break;case 2:f=_PyUnicodeTranslateError_SetStart(HEAP[h],l)!=0?5:3;break;case 3:f=_PyUnicodeTranslateError_SetEnd(HEAP[h],m)!=0?5:4;break;case 4:f=_PyUnicodeTranslateError_SetReason(HEAP[h],n)!=0?5:8;break;case 5:f=HEAP[h];HEAP[f]-=1;f=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+ -4]+24]](HEAP[h]);f=7;break;case 7:HEAP[h]=0;f=8;break;case 8:return;default:assert(0,"bad label: "+f)}}function _raise_translate_exception(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h;h=g;_make_translate_exception(h,e,b,a,c,d);f=HEAP[h]!=0?1:2;break;case 1:_PyCodec_StrictErrors(HEAP[h]);f=2;break;case 2:return;default:assert(0,"bad label: "+f)}} -function _unicode_translate_call_errorhandler(g,e,b,a,c,d,f,h,j){var k=STACKTOP;STACKTOP+=8;_memset(k,0,8);var l;for(l=-1;;)switch(l){case -1:var m,n,o,p,q,r,u,s,t,v,w=k,x,y=k+4;m=g;n=e;o=b;p=a;q=c;r=d;u=f;s=h;t=j;l=HEAP[n]==0?1:3;break;case 1:l=_PyCodec_LookupError(m);HEAP[n]=l;l=HEAP[n]==0?2:3;break;case 2:v=0;l=26;break;case 3:_make_translate_exception(r,p,q,u,s,o);l=HEAP[r]==0?4:5;break;case 4:v=0;l=26;break;case 5:x=_PyObject_CallFunctionObjArgs(HEAP[n],allocate([HEAP[r],0,0,0,0,0,0,0],["%struct.NullImporter*", -0,0,0,"i8*",0,0,0],ALLOC_STACK));l=x==0?6:7;break;case 6:v=0;l=26;break;case 7:l=(HEAP[HEAP[x+4]+84]&67108864)==0?8:11;break;case 8:_PyErr_SetString(HEAP[_PyExc_TypeError],__str755273+4);HEAP[x]-=1;l=HEAP[x]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);l=10;break;case 10:v=0;l=26;break;case 11:l=__PyArg_ParseTuple_SizeT(x,__str755273,allocate([_PyUnicode_Type,0,0,0,y,0,0,0,w,0,0,0],["%struct.PyTypeObject*",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?12:15;break; -case 12:HEAP[x]-=1;l=HEAP[x]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);l=14;break;case 14:v=0;l=26;break;case 15:var z=HEAP[w];l=HEAP[w]<0?16:17;break;case 16:HEAP[t]=q+z;l=18;break;case 17:HEAP[t]=z;l=18;break;case 18:l=HEAP[t]<0?20:19;break;case 19:l=HEAP[t]>q?20:23;break;case 20:_PyErr_Format(HEAP[_PyExc_IndexError],__str205218,allocate([HEAP[t],0,0,0],["i32",0,0,0],ALLOC_STACK));HEAP[x]-=1;l=HEAP[x]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);l=22;break;case 22:v= -0;l=26;break;case 23:HEAP[HEAP[y]]+=1;HEAP[x]-=1;l=HEAP[x]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[x+4]+24]](x);l=25;break;case 25:v=HEAP[y];l=26;break;case 26:return g=v,STACKTOP=k,g;default:assert(0,"bad label: "+l)}} -function _charmaptranslate_lookup(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;a=g;c=e;d=b;h=_PyInt_FromLong(a);a=h==0?1:2;break;case 1:f=-1;a=22;break;case 2:j=_PyObject_GetItem(c,h);HEAP[h]-=1;a=HEAP[h]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=4;break;case 4:a=j==0?5:8;break;case 5:a=_PyErr_ExceptionMatches(HEAP[_PyExc_LookupError])!=0?6:7;break;case 6:_PyErr_Clear();f=HEAP[d]=0;a=22;break;case 7:f=-1;a=22;break;case 8:a=j==__Py_NoneStruct?9:10;break;case 9:HEAP[d]= -j;f=0;a=22;break;case 10:var m=j;a=(HEAP[HEAP[j+4]+84]&8388608)!=0?11:17;break;case 11:k=HEAP[m+8];l=_PyUnicodeUCS2_GetMax();a=k<0?13:12;break;case 12:a=k>l?13:16;break;case 13:_PyErr_Format(HEAP[_PyExc_TypeError],__str765274,allocate([l+1,0,0,0],["i32",0,0,0],ALLOC_STACK));HEAP[j]-=1;a=HEAP[j]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=15;break;case 15:f=-1;a=22;break;case 16:HEAP[d]=j;f=0;a=22;break;case 17:a=(HEAP[HEAP[m+4]+84]&268435456)!=0?18:19;break;case 18:HEAP[d]=j;f= -0;a=22;break;case 19:_PyErr_SetString(HEAP[_PyExc_TypeError],__str695267);HEAP[j]-=1;a=HEAP[j]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=21;break;case 21:f=-1;a=22;break;case 22:return g=f;default:assert(0,"bad label: "+a)}} -function _charmaptranslate_makespace(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=HEAP[HEAP[c]+8];a=f>j?1:6;break;case 1:k=(HEAP[d]-HEAP[HEAP[c]+12])/2|0;a=j*2>f?2:3;break;case 2:f=j*2;a=3;break;case 3:a=_PyUnicodeUCS2_Resize(c,f)<0?4:5;break;case 4:h=-1;a=7;break;case 5:HEAP[d]=HEAP[HEAP[c]+12]+2*k;a=6;break;case 6:h=0;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _charmaptranslate_output(g,e,b,a,c,d,f){var h;for(h=-1;;)switch(h){case -1:var j,k,l,m,n,o,p,q;j=g;k=e;l=b;h=a;m=c;n=d;o=f;h=_charmaptranslate_lookup(HEAP[k]&65535,h,o)!=0?1:2;break;case 1:p=-1;h=16;break;case 2:h=HEAP[o]==0?3:4;break;case 3:h=HEAP[n];HEAP[h]=HEAP[k];HEAP[n]=h+2;h=15;break;case 4:h=HEAP[o]!=__Py_NoneStruct?5:15;break;case 5:h=(HEAP[HEAP[HEAP[o]+4]+84]&8388608)!=0?6:7;break;case 6:h=HEAP[n];HEAP[h]=HEAP[HEAP[o]+8]&65535;HEAP[n]=h+2;h=15;break;case 7:h=(HEAP[HEAP[HEAP[o]+4]+ -84]&268435456)!=0?8:14;break;case 8:q=HEAP[HEAP[o]+8];h=q==1?9:10;break;case 9:h=HEAP[n];HEAP[h]=HEAP[HEAP[HEAP[o]+12]];HEAP[n]=h+2;h=15;break;case 10:h=q!=0?11:15;break;case 11:h=((HEAP[n]-HEAP[HEAP[m]+12])/2|0)+-1+(0-((k-j)/2|0))+l+q;h=_charmaptranslate_makespace(m,n,h)!=0?12:13;break;case 12:p=-1;h=16;break;case 13:_llvm_memcpy_p0i8_p0i8_i32(HEAP[n],HEAP[HEAP[o]+12],q*2,1,0);HEAP[n]+=2*q;h=15;break;case 14:p=-1;h=16;break;case 15:p=0;h=16;break;case 16:return g=p;default:assert(0,"bad label: "+ -h)}} -function _PyUnicodeUCS2_TranslateCharmap(g,e,b,a){var c=STACKTOP;STACKTOP+=57;_memset(c,0,57);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m=c,n,o,p=c+4,q,r,u=c+8,s=c+12,t,v=c+16,w,x,y=c+20,z,C,A,G,E=c+24,D;f=g;h=e;j=b;k=a;HEAP[m]=0;n=f;o=f+2*h;q=0;r=__str675265;HEAP[u]=0;HEAP[s]=0;t=-1;d=j==0?1:2;break;case 1:_PyErr_BadArgument();l=0;d=73;break;case 2:d=_PyUnicodeUCS2_FromUnicode(0,h);HEAP[m]=d;d=HEAP[m]==0?66:3;break;case 3:var R=HEAP[m];d=h==0?4:5;break;case 4:l=R;d=73;break;case 5:HEAP[p]=HEAP[R+ -12];var M=E,L=E,I=E;d=53;break;case 6:HEAP[v]=0;d=_charmaptranslate_output(n,f,h,j,m,p,v);var J=HEAP[v]!=0;d=d!=0?7:10;break;case 7:d=J?8:63;break;case 8:d=HEAP[v];HEAP[d]-=1;d=HEAP[d]==0?9:63;break;case 9:FUNCTION_TABLE[HEAP[HEAP[HEAP[v]+4]+24]](HEAP[v]);d=63;break;case 10:d=J?11:13;break;case 11:d=HEAP[v];HEAP[d]-=1;d=HEAP[d]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[HEAP[v]+4]+24]](HEAP[v]);d=13;break;case 13:d=HEAP[v]!=__Py_NoneStruct?14:15;break;case 14:f+=2;d=53;break;case 15:w=0;C=f; -A=f+2;d=22;break;case 16:d=_charmaptranslate_lookup(HEAP[A]&65535,j,v)!=0?63:17;break;case 17:d=HEAP[v]!=0?18:23;break;case 18:d=HEAP[v];HEAP[d]-=1;d=HEAP[d]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[HEAP[v]+4]+24]](HEAP[v]);d=20;break;case 20:d=HEAP[v]!=__Py_NoneStruct?23:21;break;case 21:A+=2;d=22;break;case 22:d=A0;x-=1;d=d!=0?50:51;break;case 50:d=HEAP[p];HEAP[d]=HEAP[z];HEAP[p]=d+2;z+=2;d=x>0;x-=1;d=d!=0?50:51;break;case 51:f=n+2*HEAP[y];HEAP[w]-=1;d=HEAP[w]==0?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);d=53;break;case 53:d=fq?55:56;break; -case 55:d=_PyUnicodeUCS2_Resize(m,q)<0?63:56;break;case 56:d=HEAP[s]!=0?57:59;break;case 57:d=HEAP[s];HEAP[d]-=1;d=HEAP[d]==0?58:59;break;case 58:FUNCTION_TABLE[HEAP[HEAP[HEAP[s]+4]+24]](HEAP[s]);d=59;break;case 59:d=HEAP[u]!=0?60:62;break;case 60:d=HEAP[u];HEAP[d]-=1;d=HEAP[d]==0?61:62;break;case 61:FUNCTION_TABLE[HEAP[HEAP[HEAP[u]+4]+24]](HEAP[u]);d=62;break;case 62:l=HEAP[m];d=73;break;case 63:d=HEAP[m]!=0?64:66;break;case 64:d=HEAP[m];HEAP[d]-=1;d=HEAP[d]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+ -4]+24]](HEAP[m]);d=66;break;case 66:d=HEAP[s]!=0?67:69;break;case 67:d=HEAP[s];HEAP[d]-=1;d=HEAP[d]==0?68:69;break;case 68:FUNCTION_TABLE[HEAP[HEAP[HEAP[s]+4]+24]](HEAP[s]);d=69;break;case 69:d=HEAP[u]!=0?70:72;break;case 70:d=HEAP[u];HEAP[d]-=1;d=HEAP[d]==0?71:72;break;case 71:FUNCTION_TABLE[HEAP[HEAP[HEAP[u]+4]+24]](HEAP[u]);d=72;break;case 72:l=0;d=73;break;case 73:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _PyUnicodeUCS2_Translate(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;var k=c=_PyUnicodeUCS2_FromObject(c);a=c==0?4:1;break;case 1:j=_PyUnicodeUCS2_TranslateCharmap(HEAP[c+12],HEAP[k+8],d,f);HEAP[c]-=1;a=HEAP[c]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=3;break;case 3:h=j;a=8;break;case 4:a=k!=0?5:7;break;case 5:HEAP[c]-=1;a=HEAP[c]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=7;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0, -"bad label: "+a)}} -function _PyUnicodeUCS2_EncodeDecimal(g,e,b,a){var c=STACKTOP;STACKTOP+=12;_memset(c,0,12);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p=c,q=c+4,r,u,s,t,v,w,x,y=c+8,z,C,A,G;h=g;j=e;k=b;l=a;HEAP[p]=0;HEAP[q]=0;r=__str775275;u=__str785276;s=-1;d=k==0?1:2;break;case 1:_PyErr_BadArgument();m=-1;d=71;break;case 2:n=h;o=h+2*j;d=56;break;case 3:var E=t=HEAP[n];d=t<=127?4:5;break;case 4:var D=HEAP[__Py_ascii_whitespace+E]!=0,f=4;d=6;break;case 5:var R=__PyUnicodeUCS2_IsWhitespace(E&65535)!= -0,f=5;d=6;break;case 6:d=(f==5?R:D)!=0?7:8;break;case 7:HEAP[k]=32;k+=1;n+=2;d=56;break;case 8:v=__PyUnicodeUCS2_ToDecimalDigit(t&65535);d=v>=0?9:10;break;case 9:HEAP[k]=(v&255)+48;k+=1;n+=2;d=56;break;case 10:d=t!=0&t<=255?11:12;break;case 11:HEAP[k]=t&255;k+=1;n+=2;d=56;break;case 12:C=n;A=n+2;d=19;break;case 13:d=HEAP[A]==0?15:14;break;case 14:d=HEAP[A]<=255?20:15;break;case 15:var M=HEAP[A];d=HEAP[A]<=127?16:17;break;case 16:d=HEAP[__Py_ascii_whitespace+M]==0?20:18;break;case 17:d=__PyUnicodeUCS2_IsWhitespace(M& -65535)==0?20:18;break;case 18:d=__PyUnicodeUCS2_ToDecimalDigit(HEAP[A]&65535)!=0?20:19;break;case 19:d=A=0?46:47;break;case 46:HEAP[k]=(v&255)+48;k+=1;d=52;break;case 47:d=G==0|G>255?49:48;break;case 48:HEAP[k]=G&255;k+=1;d=52;break;case 49:HEAP[w]-=1;d=HEAP[w]==0?50:51;break;case 50:FUNCTION_TABLE[HEAP[HEAP[w+4]+ -24]](w);d=51;break;case 51:_raise_encode_exception(q,r,h,j,(C-h)/2|0,(A-h)/2|0,u);d=64;break;case 52:z+=2;d=53;break;case 53:d=x>0;x-=1;d=d!=0?40:54;break;case 54:n=h+2*HEAP[y];HEAP[w]-=1;d=HEAP[w]==0?55:56;break;case 55:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);d=56;break;case 56:d=n-1?22:26;break;case 26:p=-1;f=76;break;case 27:v=x-1;r=v-1;q=0;f=o!=2?28:51;break;case 28:s=0;var G= -l;s>>(HEAP[j+2*(m+s)]&31)&1)==0?45:46;break;case 45:s=m+D;f=49;break;case 46:s=r+D;f=49;break;case 47:f=(q>>>(HEAP[j+2*(m+s)]&31)&1)==0?48:49;break;case 48:s=m+s;f=49;break;case 49:s+=1;f=50;break;case 50:f=s<=w?33:73;break;case 51:q|=1<<(HEAP[l]&31);s=v;f=v>0?52:55;break;case 52:q|=1<<(HEAP[l+2*s]&31);f=HEAP[l+2*s]==HEAP[l]?53:54;break;case 53:r=s-1;f=54;break;case 54:s=f=s-1;f=f>0?52:55; -break;case 55:var R=w;s=R;h=55;f=72;break;case 56:f=HEAP[j+2*s]==HEAP[l]?57:68;break;case 57:var M=v;t=M;h=57;f=60;break;case 58:var L=t;HEAP[j+2*(t+s)]!=HEAP[l+2*L]?(h=58,f=62):(h=58,f=59);break;case 59:var I=t-1;t=I;h=59;f=60;break;case 60:f=(h==59?I:M)>0?58:61;break;case 61:var J=t,h=61;f=62;break;case 62:var F=s;f=(h==61?J:L)==0?63:64;break;case 63:p=F;f=76;break;case 64:f=F<=0?67:65;break;case 65:f=(q>>>(HEAP[j+2*(s-1)]&31)&1)!=0?67:66;break;case 66:s-=m;f=71;break;case 67:s-=r;f=71;break;case 68:f= -s>0?69:71;break;case 69:f=(q>>>(HEAP[j+2*(s-1)]&31)&1)==0?70:71;break;case 70:s-=m;f=71;break;case 71:var V=s-1;s=V;h=71;f=72;break;case 72:f=(h==71?V:R)>=0?56:73;break;case 73:f=o!=0?74:75;break;case 74:p=-1;f=76;break;case 75:p=u;f=76;break;case 76:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_count5486(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o;f=g;h=e;j=b;k=a;l=c;d=h<0?1:2;break;case 1:n=0;d=10;break;case 2:d=k==0?3:7;break;case 3:d=h=0?5:6;break;case 5:n=l+n;d=6;break;case 6:m=n;d=7;break;case 7:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_rfind5488(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;l=c;d=h<0?1:2;break;case 1:m=-1;d=7;break;case 2:d=k==0?3:4;break;case 3:m=l+h;d=7;break;case 4:n=_fastsearch5485(f,h,j,k,-1,2);d=n>=0?5:6;break;case 5:n=l+n;d=6;break;case 6:m=n;d=7;break;case 7:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_find_slice5489(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=n>j?1:2;break;case 1:n=j;f=5;break;case 2:f=n<0?3:5;break;case 3:n=j+n;f=n<0?4:5;break;case 4:n=0;f=5;break;case 5:f=m<0?6:8;break;case 6:m=j+m;f=m<0?7:8;break;case 7:m=0;f=8;break;case 8:return g=_stringlib_find5487(h+2*m,n-m,k,l,m);default:assert(0,"bad label: "+f)}} -function _stringlib_rfind_slice5490(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n;h=g;j=e;k=b;l=a;m=c;n=d;f=n>j?1:2;break;case 1:n=j;f=5;break;case 2:f=n<0?3:5;break;case 3:n=j+n;f=n<0?4:5;break;case 4:n=0;f=5;break;case 5:f=m<0?6:8;break;case 6:m=j+m;f=m<0?7:8;break;case 7:m=0;f=8;break;case 8:return g=_stringlib_rfind5488(h+2*m,n-m,k,l,m);default:assert(0,"bad label: "+f)}} -function _stringlib_contains_obj5491(g,e){return _stringlib_find5487(HEAP[g+12],HEAP[g+8],HEAP[e+12],HEAP[e+8],0)!=-1} -function _stringlib_parse_args_finds5492(g,e,b,a,c){var d=STACKTOP;STACKTOP+=70;_memset(d,0,70);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o=d+4,p=d+8,q=d+12,r=d+16,u=d+20,s;f=g;h=e;j=b;k=a;l=c;HEAP[o]=0;HEAP[p]=2147483647;HEAP[q]=__Py_NoneStruct;HEAP[r]=__Py_NoneStruct;_llvm_memcpy_p0i8_p0i8_i32(u,__str795277,50,1,0);s=_strlen(u);_strncpy(u+s,f,49-s);HEAP[u+49]=0;f=__PyArg_ParseTuple_SizeT(h,u,allocate([n,0,0,0,q,0,0,0,r,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0, -0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:m=0;f=9;break;case 2:f=HEAP[q]!=__Py_NoneStruct?3:5;break;case 3:f=__PyEval_SliceIndex(HEAP[q],o)==0?4:5;break;case 4:m=0;f=9;break;case 5:f=HEAP[r]!=__Py_NoneStruct?6:8;break;case 6:f=__PyEval_SliceIndex(HEAP[r],p)==0?7:8;break;case 7:m=0;f=9;break;case 8:HEAP[k]=HEAP[o];HEAP[l]=HEAP[p];HEAP[j]=HEAP[n];m=1;f=9;break;case 9:return g=m,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _stringlib_parse_args_finds_unicode(g,e,b,a,c){var d=STACKTOP;STACKTOP+=4;_memset(d,0,4);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l=d;f=g;h=e;j=b;f=_stringlib_parse_args_finds5492(f,h,l,a,c)!=0?1:4;break;case 1:f=_PyUnicodeUCS2_FromObject(HEAP[l]);HEAP[l]=f;f=HEAP[l]==0?2:3;break;case 2:k=0;f=5;break;case 3:HEAP[j]=HEAP[l];k=1;f=5;break;case 4:k=0;f=5;break;case 5:return g=k,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _stringlib_partition5493(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q;h=g;j=e;k=b;l=a;m=c;n=d;f=n==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str805278);o=0;f=11;break;case 2:p=_PyTuple_New(3);f=p==0?3:4;break;case 3:o=0;f=11;break;case 4:q=_fastsearch5485(j,k,m,n,-1,1);f=q<0?5:6;break;case 5:HEAP[h]+=1;HEAP[p+12]=h;HEAP[HEAP[_unicode_empty]]+=1;HEAP[p+12+4]=HEAP[_unicode_empty];HEAP[HEAP[_unicode_empty]]+=1;HEAP[p+12+8]=HEAP[_unicode_empty];o= -p;f=11;break;case 6:var r=p;f=_PyUnicodeUCS2_FromUnicode(j,q);HEAP[r+12]=f;HEAP[l]+=1;HEAP[p+12+4]=l;q=n+q;r=p;f=_PyUnicodeUCS2_FromUnicode(j+2*q,k-q);HEAP[r+12+8]=f;f=_PyErr_Occurred();r=p;f=f!=0?7:10;break;case 7:HEAP[p]=HEAP[r]-1;f=HEAP[p]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);f=9;break;case 9:o=0;f=11;break;case 10:o=r;f=11;break;case 11:return g=o;default:assert(0,"bad label: "+f)}} -function _stringlib_rpartition5494(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q;h=g;j=e;k=b;l=a;m=c;n=d;f=n==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str805278);o=0;f=11;break;case 2:p=_PyTuple_New(3);f=p==0?3:4;break;case 3:o=0;f=11;break;case 4:q=_fastsearch5485(j,k,m,n,-1,2);f=q<0?5:6;break;case 5:HEAP[HEAP[_unicode_empty]]+=1;HEAP[p+12]=HEAP[_unicode_empty];HEAP[HEAP[_unicode_empty]]+=1;HEAP[p+12+4]=HEAP[_unicode_empty];HEAP[h]+=1;HEAP[p+12+8]=h;o= -p;f=11;break;case 6:var r=p;f=_PyUnicodeUCS2_FromUnicode(j,q);HEAP[r+12]=f;HEAP[l]+=1;HEAP[p+12+4]=l;q=n+q;r=p;f=_PyUnicodeUCS2_FromUnicode(j+2*q,k-q);HEAP[r+12+8]=f;f=_PyErr_Occurred();r=p;f=f!=0?7:10;break;case 7:HEAP[p]=HEAP[r]-1;f=HEAP[p]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);f=9;break;case 9:o=0;f=11;break;case 10:o=r;f=11;break;case 11:return g=o;default:assert(0,"bad label: "+f)}} -function _stringlib_split_whitespace5495(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;j=a;o=0;c=j<=11?1:2;break;case 1:l=j+1;c=3;break;case 2:l=12;c=3;break;case 3:p=c=_PyList_New(l);c=c==0?4:5;break;case 4:k=0;c=52;break;case 5:m=n=0;c=31;break;case 6:m+=1;c=7;break;case 7:c=m>=h?11:8;break;case 8:var r=HEAP[f+2*m];c=HEAP[f+2*m]<=127?9:10;break;case 9:c=HEAP[__Py_ascii_whitespace+r]!=0?6:11;break;case 10:c=__PyUnicodeUCS2_IsWhitespace(r&65535)!=0?6:11;break;case 11:c= -m==h?32:12;break;case 12:n=m;m+=1;c=14;break;case 13:m+=1;c=14;break;case 14:c=m>=h?18:15;break;case 15:var u=HEAP[f+2*m];c=HEAP[f+2*m]<=127?16:17;break;case 16:c=HEAP[__Py_ascii_whitespace+u]==0?13:18;break;case 17:c=__PyUnicodeUCS2_IsWhitespace(u&65535)==0?13:18;break;case 18:c=n==0?19:22;break;case 19:c=m==h?20:22;break;case 20:c=HEAP[d+4]==_PyUnicode_Type?21:22;break;case 21:HEAP[d]+=1;HEAP[HEAP[p+12]]=d;o+=1;c=32;break;case 22:q=c=_PyUnicodeUCS2_FromUnicode(f+2*n,m-n);c=c==0?49:23;break;case 23:var s= -p;c=o<=11?24:25;break;case 24:HEAP[HEAP[s+12]+4*o]=q;c=30;break;case 25:c=_PyList_Append(s,q)!=0;HEAP[q]-=1;var t=HEAP[q]==0;c=c?26:28;break;case 26:c=t?27:49;break;case 27:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=49;break;case 28:c=t?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=30;break;case 30:o+=1;c=31;break;case 31:c=j>0;j-=1;c=c!=0?7:32;break;case 32:c=m=h?38:35;break;case 35:var v=HEAP[f+2*m];c=HEAP[f+2*m]<=127?36:37;break;case 36:c= -HEAP[__Py_ascii_whitespace+v]!=0?33:38;break;case 37:c=__PyUnicodeUCS2_IsWhitespace(v&65535)!=0?33:38;break;case 38:c=m!=h?39:48;break;case 39:q=_PyUnicodeUCS2_FromUnicode(f+2*m,h-m);c=q==0?49:40;break;case 40:var w=p;c=o<=11?41:42;break;case 41:HEAP[HEAP[w+12]+4*o]=q;c=47;break;case 42:c=_PyList_Append(w,q)!=0;HEAP[q]-=1;var x=HEAP[q]==0;c=c?43:45;break;case 43:c=x?44:49;break;case 44:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=49;break;case 45:c=x?46:47;break;case 46:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q); -c=47;break;case 47:o+=1;c=48;break;case 48:HEAP[p+8]=o;k=p;c=52;break;case 49:HEAP[p]-=1;c=HEAP[p]==0?50:51;break;case 50:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=51;break;case 51:k=0;c=52;break;case 52:return g=k;default:assert(0,"bad label: "+c)}} -function _stringlib_split_char5496(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u;f=g;h=e;j=b;k=a;l=c;q=0;d=l<=11?1:2;break;case 1:n=l+1;d=3;break;case 2:n=12;d=3;break;case 3:r=d=_PyList_New(n);d=d==0?4:5;break;case 4:m=0;d=37;break;case 5:o=p=0;d=18;break;case 6:var s=p;d=HEAP[h+2*p]==k?7:16;break;case 7:u=_PyUnicodeUCS2_FromUnicode(h+2*o,s-o);d=u==0?34:8;break;case 8:var t=r;d=q<=11?9:10;break;case 9:HEAP[HEAP[t+12]+4*q]=u;d=15;break;case 10:d=_PyList_Append(t,u)!=0; -HEAP[u]-=1;var v=HEAP[u]==0;d=d?11:13;break;case 11:d=v?12:34;break;case 12:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=34;break;case 13:d=v?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=15;break;case 15:q+=1;p+=1;o=p;d=18;break;case 16:p=s+1;d=17;break;case 17:d=p=j?20:19;break;case 19:d=l>0;l-=1;d=d!=0?17:20;break;case 20:d=q!=0?23:21;break;case 21:d=HEAP[f+4]!=_PyUnicode_Type?23:22;break;case 22:HEAP[f]+=1;HEAP[HEAP[r+12]]=f;q+=1;d=33;break;case 23:d=o<=j?24: -33;break;case 24:u=_PyUnicodeUCS2_FromUnicode(h+2*o,j-o);d=u==0?34:25;break;case 25:var w=r;d=q<=11?26:27;break;case 26:HEAP[HEAP[w+12]+4*q]=u;d=32;break;case 27:d=_PyList_Append(w,u)!=0;HEAP[u]-=1;var x=HEAP[u]==0;d=d?28:30;break;case 28:d=x?29:34;break;case 29:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=34;break;case 30:d=x?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=32;break;case 32:q+=1;d=33;break;case 33:HEAP[r+8]=q;m=r;d=37;break;case 34:HEAP[r]-=1;d=HEAP[r]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[r+ -4]+24]](r);d=36;break;case 36:m=0;d=37;break;case 37:return g=m;default:assert(0,"bad label: "+d)}} -function _stringlib_split5497(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t,v;h=g;j=e;k=b;l=a;m=c;n=d;s=0;f=m==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str805278);p=0;f=37;break;case 2:f=m==1?3:4;break;case 3:p=_stringlib_split_char5496(h,j,k,HEAP[l]&65535,n);f=37;break;case 4:f=n<=11?5:6;break;case 5:o=n+1;f=7;break;case 6:o=12;f=7;break;case 7:t=f=_PyList_New(o);f=f==0?8:9;break;case 8:p=0;f=37;break;case 9:q=r=0;f=20;break;case 10:u=_fastsearch5485(j+ -2*q,k-q,l,m,-1,1);f=u<0?21:11;break;case 11:r=u+q;v=_PyUnicodeUCS2_FromUnicode(j+2*q,r-q);f=v==0?34:12;break;case 12:var w=t;f=s<=11?13:14;break;case 13:HEAP[HEAP[w+12]+4*s]=v;f=19;break;case 14:f=_PyList_Append(w,v)!=0;HEAP[v]-=1;var x=HEAP[v]==0;f=f?15:17;break;case 15:f=x?16:34;break;case 16:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=34;break;case 17:f=x?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=19;break;case 19:s+=1;q=m+r;f=20;break;case 20:f=n>0;n-=1;f=f!=0?10:21;break;case 21:f= -s!=0?24:22;break;case 22:f=HEAP[h+4]!=_PyUnicode_Type?24:23;break;case 23:HEAP[h]+=1;HEAP[HEAP[t+12]]=h;s+=1;f=33;break;case 24:v=f=_PyUnicodeUCS2_FromUnicode(j+2*q,k-q);f=f==0?34:25;break;case 25:var y=t;f=s<=11?26:27;break;case 26:HEAP[HEAP[y+12]+4*s]=v;f=32;break;case 27:f=_PyList_Append(y,v)!=0;HEAP[v]-=1;var z=HEAP[v]==0;f=f?28:30;break;case 28:f=z?29:34;break;case 29:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=34;break;case 30:f=z?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);f=32;break; -case 32:s+=1;f=33;break;case 33:HEAP[t+8]=s;p=t;f=37;break;case 34:HEAP[t]-=1;f=HEAP[t]==0?35:36;break;case 35:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=36;break;case 36:p=0;f=37;break;case 37:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_rsplit_whitespace5498(g,e,b,a){var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k,l,m,n,o,p,q,r;f=g;h=e;j=b;k=a;p=0;c=k<=11?1:2;break;case 1:m=k+1;c=3;break;case 2:m=12;c=3;break;case 3:q=c=_PyList_New(m);c=c==0?4:5;break;case 4:l=0;c=54;break;case 5:n=o=j-1;c=32;break;case 6:var u=n-1;n=u;d=6;c=8;break;case 7:var s=n,d=7;c=8;break;case 8:c=(d==7?s:u)<0?12:9;break;case 9:var t=HEAP[h+2*n];c=HEAP[h+2*n]<=127?10:11;break;case 10:c=HEAP[__Py_ascii_whitespace+t]!=0?6:12;break;case 11:c= -__PyUnicodeUCS2_IsWhitespace(t&65535)!=0?6:12;break;case 12:c=n<0?49:13;break;case 13:o=n;var v=n-1;n=v;d=13;c=15;break;case 14:var w=n-1;n=w;d=14;c=15;break;case 15:c=(d==14?w:v)<0?19:16;break;case 16:var x=HEAP[h+2*n];c=HEAP[h+2*n]<=127?17:18;break;case 17:c=HEAP[__Py_ascii_whitespace+x]==0?14:19;break;case 18:c=__PyUnicodeUCS2_IsWhitespace(x&65535)==0?14:19;break;case 19:c=j-1==o?20:23;break;case 20:c=n<0?21:23;break;case 21:c=HEAP[f+4]==_PyUnicode_Type?22:23;break;case 22:HEAP[f]+=1;HEAP[HEAP[q+ -12]]=f;p+=1;c=33;break;case 23:r=c=_PyUnicodeUCS2_FromUnicode(h+2*(n+1),0-n+o);c=c==0?51:24;break;case 24:var y=q;c=p<=11?25:26;break;case 25:HEAP[HEAP[y+12]+4*p]=r;c=31;break;case 26:c=_PyList_Append(y,r)!=0;HEAP[r]-=1;var z=HEAP[r]==0;c=c?27:29;break;case 27:c=z?28:51;break;case 28:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=51;break;case 29:c=z?30:31;break;case 30:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=31;break;case 31:p+=1;c=32;break;case 32:c=k>0;k-=1;c=c!=0?7:33;break;case 33:var C=n;C>=0?(d=33, -c=35):(d=33,c=49);break;case 34:var A=n-1;n=A;d=34;c=35;break;case 35:c=(d==34?A:C)<0?39:36;break;case 36:var G=HEAP[h+2*n];c=HEAP[h+2*n]<=127?37:38;break;case 37:c=HEAP[__Py_ascii_whitespace+G]!=0?34:39;break;case 38:c=__PyUnicodeUCS2_IsWhitespace(G&65535)!=0?34:39;break;case 39:c=n>=0?40:49;break;case 40:r=_PyUnicodeUCS2_FromUnicode(h,n+1);c=r==0?51:41;break;case 41:var E=q;c=p<=11?42:43;break;case 42:HEAP[HEAP[E+12]+4*p]=r;c=48;break;case 43:c=_PyList_Append(E,r)!=0;HEAP[r]-=1;var D=HEAP[r]==0; -c=c?44:46;break;case 44:c=D?45:51;break;case 45:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=51;break;case 46:c=D?47:48;break;case 47:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);c=48;break;case 48:p+=1;c=49;break;case 49:HEAP[q+8]=p;c=_PyList_Reverse(q)<0?51:50;break;case 50:l=q;c=54;break;case 51:HEAP[q]-=1;c=HEAP[q]==0?52:53;break;case 52:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);c=53;break;case 53:l=0;c=54;break;case 54:return g=l;default:assert(0,"bad label: "+c)}} -function _stringlib_rsplit_char5499(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u,s;h=g;j=e;k=b;l=a;m=c;r=0;d=m<=11?1:2;break;case 1:o=m+1;d=3;break;case 2:o=12;d=3;break;case 3:u=d=_PyList_New(o);d=d==0?4:5;break;case 4:n=0;d=40;break;case 5:var t=q=k-1;p=t;f=5;d=20;break;case 6:d=HEAP[j+2*p]==l?7:16;break;case 7:s=_PyUnicodeUCS2_FromUnicode(j+2*(p+1),0-p+q);d=s==0?37:8;break;case 8:var v=u;d=r<=11?9:10;break;case 9:HEAP[HEAP[v+12]+4*r]=s;d=15;break;case 10:d=_PyList_Append(v, -s)!=0;HEAP[s]-=1;var w=HEAP[s]==0;d=d?11:13;break;case 11:d=w?12:37;break;case 12:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=37;break;case 13:d=w?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=15;break;case 15:r+=1;p-=1;var x=p;q=x;f=15;d=20;break;case 16:var y=p-1;p=y;f=16;d=18;break;case 17:var z=p,f=17;d=18;break;case 18:d=(f==17?z:y)>=0?6:19;break;case 19:var C=p,f=19;d=20;break;case 20:d=(f==5?t:f==19?C:x)<0?22:21;break;case 21:d=m>0;m-=1;d=d!=0?17:22;break;case 22:d=r!=0?25:23;break; -case 23:d=HEAP[h+4]!=_PyUnicode_Type?25:24;break;case 24:HEAP[h]+=1;HEAP[HEAP[u+12]]=h;r+=1;d=35;break;case 25:d=q>=-1?26:35;break;case 26:s=_PyUnicodeUCS2_FromUnicode(j,q+1);d=s==0?37:27;break;case 27:var A=u;d=r<=11?28:29;break;case 28:HEAP[HEAP[A+12]+4*r]=s;d=34;break;case 29:d=_PyList_Append(A,s)!=0;HEAP[s]-=1;var G=HEAP[s]==0;d=d?30:32;break;case 30:d=G?31:37;break;case 31:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=37;break;case 32:d=G?33:34;break;case 33:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d= -34;break;case 34:r+=1;d=35;break;case 35:HEAP[u+8]=r;d=_PyList_Reverse(u)<0?37:36;break;case 36:n=u;d=40;break;case 37:HEAP[u]-=1;d=HEAP[u]==0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[u+4]+24]](u);d=39;break;case 39:n=0;d=40;break;case 40:return g=n;default:assert(0,"bad label: "+d)}} -function _stringlib_rsplit5500(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t;h=g;j=e;k=b;l=a;m=c;n=d;u=0;f=m==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str805278);p=0;f=38;break;case 2:f=m==1?3:4;break;case 3:p=_stringlib_rsplit_char5499(h,j,k,HEAP[l]&65535,n);f=38;break;case 4:f=n<=11?5:6;break;case 5:o=n+1;f=7;break;case 6:o=12;f=7;break;case 7:s=f=_PyList_New(o);f=f==0?8:9;break;case 8:p=0;f=38;break;case 9:q=k;f=20;break;case 10:r=_fastsearch5485(j, -q,l,m,-1,2);f=r<0?21:11;break;case 11:t=_PyUnicodeUCS2_FromUnicode(j+2*(m+r),0-m+(0-r)+q);f=t==0?35:12;break;case 12:var v=s;f=u<=11?13:14;break;case 13:HEAP[HEAP[v+12]+4*u]=t;f=19;break;case 14:f=_PyList_Append(v,t)!=0;HEAP[t]-=1;var w=HEAP[t]==0;f=f?15:17;break;case 15:f=w?16:35;break;case 16:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=35;break;case 17:f=w?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=19;break;case 19:u+=1;q=r;f=20;break;case 20:f=n>0;n-=1;f=f!=0?10:21;break;case 21:f= -u!=0?24:22;break;case 22:f=HEAP[h+4]!=_PyUnicode_Type?24:23;break;case 23:HEAP[h]+=1;HEAP[HEAP[s+12]]=h;u+=1;f=33;break;case 24:t=f=_PyUnicodeUCS2_FromUnicode(j,q);f=f==0?35:25;break;case 25:var x=s;f=u<=11?26:27;break;case 26:HEAP[HEAP[x+12]+4*u]=t;f=32;break;case 27:f=_PyList_Append(x,t)!=0;HEAP[t]-=1;var y=HEAP[t]==0;f=f?28:30;break;case 28:f=y?29:35;break;case 29:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=35;break;case 30:f=y?31:32;break;case 31:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);f=32;break;case 32:u+= -1;f=33;break;case 33:HEAP[s+8]=u;f=_PyList_Reverse(s)<0?35:34;break;case 34:p=s;f=38;break;case 35:HEAP[s]-=1;f=HEAP[s]==0?36:37;break;case 36:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);f=37;break;case 37:p=0;f=38;break;case 38:return g=p;default:assert(0,"bad label: "+f)}} -function _stringlib_splitlines5501(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;j=a;o=_PyList_New(0);c=o==0?1:2;break;case 1:l=0;c=36;break;case 2:m=n=0;c=31;break;case 3:m+=1;c=4;break;case 4:c=m>=h?12:5;break;case 5:c=HEAP[f+2*m]<=127?6:7;break;case 6:c=HEAP[_ascii_linebreak+HEAP[f+2*m]]==0?3:12;break;case 7:c=(HEAP[_bloom_linebreak]>>>(HEAP[f+2*m]&31)&1)==0?9:8;break;case 8:c=__PyUnicodeUCS2_IsLinebreak(HEAP[f+2*m]&65535)==0?9:10;break;case 9:k=1;c=11;break; -case 10:k=0;c=11;break;case 11:c=(k&255)!=0?3:12;break;case 12:q=m;c=m=h?17:15;break;case 15:c=HEAP[f+2*(m+1)]!=10?17:16;break;case 16:m+=2;c=18;break;case 17:m+=1;c=18;break;case 18:c=j!=0?19:20;break;case 19:q=m;c=20;break;case 20:c=n==0?21:24;break;case 21:c=q==h?22:24;break;case 22:c=HEAP[d+4]==_PyUnicode_Type?23:24;break;case 23:c=_PyList_Append(o,d)!=0?33:32;break;case 24:p=c=_PyUnicodeUCS2_FromUnicode(f+2*n,q-n);c=c==0?33:25; -break;case 25:c=_PyList_Append(o,p)!=0;HEAP[p]-=1;var r=HEAP[p]==0;c=c?26:28;break;case 26:c=r?27:33;break;case 27:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=33;break;case 28:c=r?29:30;break;case 29:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);c=30;break;case 30:n=m;c=31;break;case 31:c=m0?7:8;break;case 7:n=_stringlib_find_slice5489(r,q,p,o,u,s);d=9;break; -case 8:n=_stringlib_rfind_slice5490(r,q,p,o,u,s);d=9;break;case 9:HEAP[f]-=1;d=HEAP[f]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);d=11;break;case 11:HEAP[h]-=1;d=HEAP[h]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);d=13;break;case 13:m=n;d=14;break;case 14:return g=m;default:assert(0,"bad label: "+d)}} -function _tailmatch(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m;f=g;h=e;j=b;k=a;l=c;d=HEAP[h+8]==0?1:2;break;case 1:m=1;d=22;break;case 2:d=HEAP[f+8]0?13:17;break;case 13:d=HEAP[n+2*k]==HEAP[HEAP[h+ -12]]?14:21;break;case 14:d=HEAP[HEAP[f+12]+2*k+2*HEAP[h+8]+-2]==HEAP[HEAP[h+12]+2*HEAP[h+8]+-2]?15:21;break;case 15:d=_memcmp(HEAP[f+12]+2*k,HEAP[h+12],HEAP[h+8]*2)==0?16:21;break;case 16:m=1;d=22;break;case 17:d=HEAP[n+2*j]==HEAP[HEAP[h+12]]?18:21;break;case 18:d=HEAP[HEAP[f+12]+2*j+2*HEAP[h+8]+-2]==HEAP[HEAP[h+12]+2*HEAP[h+8]+-2]?19:21;break;case 19:d=_memcmp(HEAP[f+12]+2*j,HEAP[h+12],HEAP[h+8]*2)==0?20:21;break;case 20:m=1;d=22;break;case 21:m=0;d=22;break;case 22:return g=m;default:assert(0,"bad label: "+ -d)}} -function _PyUnicodeUCS2_Tailmatch(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n;f=g;h=e;j=b;k=a;l=c;f=_PyUnicodeUCS2_FromObject(f);d=f==0?1:2;break;case 1:m=-1;d=11;break;case 2:h=_PyUnicodeUCS2_FromObject(h);d=h==0?3:6;break;case 3:HEAP[f]-=1;d=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);d=5;break;case 5:m=-1;d=11;break;case 6:n=_tailmatch(f,h,j,k,l);HEAP[f]-=1;d=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);d=8;break;case 8:HEAP[h]-=1; -d=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);d=10;break;case 10:m=n;d=11;break;case 11:return g=m;default:assert(0,"bad label: "+d)}} -function _fixup(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=_PyUnicodeUCS2_FromUnicode(0,HEAP[a+8]);b=f==0?1:2;break;case 1:d=0;b=8;break;case 2:_llvm_memcpy_p0i8_p0i8_i32(HEAP[f+12],HEAP[a+12],HEAP[a+8]*2,1,0);b=FUNCTION_TABLE[c](f)==0?3:7;break;case 3:b=HEAP[a+4]==_PyUnicode_Type?4:7;break;case 4:HEAP[a]+=1;HEAP[f]-=1;b=HEAP[f]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=6;break;case 6:d=a;b=8;break;case 7:d=f;b=8;break;case 8:return b=d;default:assert(0,"bad label: "+ -b)}}function _fixupper(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;a=HEAP[b+8];b=HEAP[b+12];c=0;e=a>0;a-=1;e=e?1:4;break;case 1:d=__PyUnicodeUCS2_ToUppercase(HEAP[b]&65535);e=HEAP[b]!=d?2:3;break;case 2:c=1;HEAP[b]=d;e=3;break;case 3:b+=2;e=a>0;a-=1;e=e!=0?1:4;break;case 4:return g=c;default:assert(0,"bad label: "+e)}} -function _fixlower(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;a=HEAP[b+8];b=HEAP[b+12];c=0;e=a>0;a-=1;e=e?1:4;break;case 1:d=__PyUnicodeUCS2_ToLowercase(HEAP[b]&65535);e=HEAP[b]!=d?2:3;break;case 2:c=1;HEAP[b]=d;e=3;break;case 3:b+=2;e=a>0;a-=1;e=e!=0?1:4;break;case 4:return g=c;default:assert(0,"bad label: "+e)}} -function _fixswapcase(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;a=HEAP[b+8];b=HEAP[b+12];c=0;e=a>0;a-=1;e=e?1:6;break;case 1:e=__PyUnicodeUCS2_IsUppercase(HEAP[b]&65535);var d=HEAP[b]&65535;e=e!=0?2:3;break;case 2:c=__PyUnicodeUCS2_ToLowercase(d);HEAP[b]=c;c=1;e=5;break;case 3:e=__PyUnicodeUCS2_IsLowercase(d)!=0?4:5;break;case 4:c=__PyUnicodeUCS2_ToUppercase(HEAP[b]&65535);HEAP[b]=c;c=1;e=5;break;case 5:b+=2;e=a>0;a-=1;e=e!=0?1:6;break;case 6:return g=c;default:assert(0,"bad label: "+e)}} -function _fixcapitalize(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;c=HEAP[b+8];b=HEAP[b+12];d=0;e=c==0?1:2;break;case 1:a=0;e=9;break;case 2:e=__PyUnicodeUCS2_IsLowercase(HEAP[b]&65535)!=0?3:4;break;case 3:d=__PyUnicodeUCS2_ToUppercase(HEAP[b]&65535);HEAP[b]=d;d=1;e=4;break;case 4:b+=2;c=e=c-1;e=e>0?5:8;break;case 5:e=__PyUnicodeUCS2_IsUppercase(HEAP[b]&65535)!=0?6:7;break;case 6:d=__PyUnicodeUCS2_ToLowercase(HEAP[b]&65535);HEAP[b]=d;d=1;e=7;break;case 7:b+=2;c=e=c-1;e=e>0?5:8;break;case 8:a= -d;e=9;break;case 9:return g=a;default:assert(0,"bad label: "+e)}} -function _fixtitle(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k;a=g;d=HEAP[a+12];e=HEAP[a+8]==1?1:4;break;case 1:j=__PyUnicodeUCS2_ToTitlecase(HEAP[d]&65535);e=HEAP[d]!=j?2:3;break;case 2:HEAP[d]=j;c=1;e=16;break;case 3:c=0;e=16;break;case 4:f=d+2*HEAP[a+8];h=0;d1?12:16;break;case 12:a=d==0?13:14;break;case 13:n=m;o=1;a=16;break;case 14:l=_PyUnicodeUCS2_FromObject(d);a=l==0?53:15;break;case 15:n=HEAP[l+12];o=HEAP[l+8];s=HEAP[f+8];a=16;break;case 16:a=__PyUnicode_New(q);HEAP[p]=a;a=a==0?50:17;break;case 17:u=HEAP[HEAP[p]+12];v=r=0;a=40;break;case 18:var A=f;a=(HEAP[HEAP[f+4]+ -84]&33554432)!=0?19:20;break;case 19:h=HEAP[HEAP[A+12]+4*v];a=21;break;case 20:h=HEAP[A+12+v*4];a=21;break;case 21:t=h;a=(HEAP[HEAP[t+4]+84]&268435456)==0?22:24;break;case 22:a=(HEAP[HEAP[t+4]+84]&134217728)==0?23:24;break;case 23:_PyErr_Format(HEAP[_PyExc_TypeError],__str815279,allocate([v,0,0,0,HEAP[HEAP[t+4]+12],0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=50;break;case 24:t=a=_PyUnicodeUCS2_FromObject(t);a=a==0?50:25;break;case 25:s=HEAP[f+8];w=HEAP[t+8];x=w+r;a=x<0?48:26;break;case 26:a= -s-1>v?27:28;break;case 27:x=o+x;a=x<0?48:28;break;case 28:a=x>q?29:35;break;case 29:q=a=q+q;a=a<=0?48:30;break;case 30:a=x>q?29:31;break;case 31:a=__PyUnicode_Resize(p,q)<0?32:34;break;case 32:HEAP[t]-=1;a=HEAP[t]==0?33:50;break;case 33:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=50;break;case 34:u=HEAP[HEAP[p]+12]+2*r;a=35;break;case 35:_llvm_memcpy_p0i8_p0i8_i32(u,HEAP[t+12],w*2,1,0);u+=2*w;a=s-1>v?36:37;break;case 36:_llvm_memcpy_p0i8_p0i8_i32(u,n,o*2,1,0);u+=2*o;a=37;break;case 37:HEAP[t]-=1;a=HEAP[t]== -0?38:39;break;case 38:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);a=39;break;case 39:r=x;v+=1;a=40;break;case 40:a=vm?11:46;break;case 16:m=_stringlib_find5487(HEAP[d+12],HEAP[d+8],HEAP[f+12],HEAP[w+8],0);c=m<0?47:17;break;case 17:l=_PyUnicodeUCS2_FromUnicode(0,HEAP[d+8]);c=l==0?18:19;break;case 18:k=0;c=50;break;case 19:_llvm_memcpy_p0i8_p0i8_i32(HEAP[l+ -12],HEAP[d+12],HEAP[d+8]*2,1,0);_llvm_memcpy_p0i8_p0i8_i32(HEAP[l+12]+2*m,HEAP[h+12],HEAP[h+8]*2,1,0);m+=HEAP[f+8];c=22;break;case 20:m=_stringlib_find5487(HEAP[d+12]+2*m,HEAP[d+8]-m,HEAP[f+12],HEAP[f+8],m);c=m==-1?46:21;break;case 21:_llvm_memcpy_p0i8_p0i8_i32(HEAP[l+12]+2*m,HEAP[h+12],HEAP[h+8]*2,1,0);m+=HEAP[f+8];c=22;break;case 22:j=c=j-1;c=c>0?20:46;break;case 23:p=_stringlib_count5486(HEAP[d+12],HEAP[d+8],HEAP[f+12],v,j);c=p==0?47:24;break;case 24:c=HEAP[h+8]-HEAP[f+8];c=c==0?25:26;break;case 25:s= -HEAP[d+8];c=30;break;case 26:u=(HEAP[h+8]-HEAP[f+8])*p;c=(u/(HEAP[h+8]-HEAP[f+8])|0)!=p?27:28;break;case 27:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str845282);k=0;c=50;break;case 28:s=u+HEAP[d+8];c=s<0?29:30;break;case 29:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str845282);k=0;c=50;break;case 30:l=c=__PyUnicode_New(s);c=c==0?31:32;break;case 31:k=0;c=50;break;case 32:q=0;t=HEAP[l+12];c=HEAP[f+8]>0?39:44;break;case 33:r=_stringlib_find5487(HEAP[d+12]+2*q,HEAP[d+8]-q,HEAP[f+12],HEAP[f+8], -q);c=r==-1?40:34;break;case 34:c=r>q?35:36;break;case 35:_llvm_memcpy_p0i8_p0i8_i32(t,HEAP[d+12]+2*q,(r-q)*2,1,0);t+=2*(r-q);c=36;break;case 36:c=HEAP[h+8]>0?37:38;break;case 37:_llvm_memcpy_p0i8_p0i8_i32(t,HEAP[h+12],HEAP[h+8]*2,1,0);t+=2*HEAP[h+8];c=38;break;case 38:q=r+HEAP[f+8];c=39;break;case 39:c=p>0;p-=1;c=c!=0?33:40;break;case 40:c=HEAP[d+8]>q?41:46;break;case 41:_llvm_memcpy_p0i8_p0i8_i32(t,HEAP[d+12]+2*q,(HEAP[d+8]-q)*2,1,0);c=46;break;case 42:_llvm_memcpy_p0i8_p0i8_i32(t,HEAP[h+12],HEAP[h+ -8]*2,1,0);t+=2*HEAP[h+8];p-=1;c=p<=0?45:43;break;case 43:HEAP[t]=HEAP[HEAP[d+12]+2*q];t+=2;q+=1;c=44;break;case 44:c=p>0?42:45;break;case 45:_llvm_memcpy_p0i8_p0i8_i32(t,HEAP[d+12]+2*q,(HEAP[d+8]-q)*2,1,0);c=46;break;case 46:k=l;c=50;break;case 47:var x=d;c=HEAP[d+4]==_PyUnicode_Type?48:49;break;case 48:HEAP[x]+=1;k=d;c=50;break;case 49:k=_PyUnicodeUCS2_FromUnicode(HEAP[d+12],HEAP[x+8]);c=50;break;case 50:return g=k;default:assert(0,"bad label: "+c)}} -function _unicode_title(g){return _fixup(g,264)}function _unicode_capitalize(g){return _fixup(g,266)} -function _convert_uc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;d=e;a=_PyUnicodeUCS2_FromObject(a);b=a==0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_TypeError],__str855285);c=0;b=9;break;case 2:b=HEAP[a+8]!=1?3:6;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str865286);HEAP[a]-=1;b=HEAP[a]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);b=5;break;case 5:c=0;b=9;break;case 6:b=HEAP[a+12];HEAP[d]=HEAP[b];HEAP[a]-=1;b=HEAP[a]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[a+ -4]+24]](a);b=8;break;case 8:c=1;b=9;break;case 9:return c;default:assert(0,"bad label: "+b)}} -function _unicode_center(g,e){var b=STACKTOP;STACKTOP+=6;_memset(b,0,6);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=e;HEAP[h]=32;a=__PyArg_ParseTuple_SizeT(a,__str875288,allocate([f,0,0,0,268,0,0,0,h,0,0,0],["i32*",0,0,0,"i32 (%struct.NullImporter*, i8*)*",0,0,0,"i16*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=6;break;case 2:a=HEAP[c+8]>=HEAP[f]?3:5;break;case 3:a=HEAP[c+4]==_PyUnicode_Type?4:5;break;case 4:HEAP[c]+=1;d=c;a=6;break;case 5:d=HEAP[f]-HEAP[c+8];a=(HEAP[f]&1&d)+(d/ -2|0);d=_pad5506(c,a,d-a,HEAP[h]&65535);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_compare(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n;c=g;b=e;k=HEAP[c+12];l=HEAP[b+12];var o=HEAP[c+8];c=o;j=HEAP[b+8];a=-1;b=7;break;case 1:m=HEAP[k];k+=2;n=HEAP[l];l+=2;b=m!=n?2:6;break;case 2:b=m0?1:9;break;case 9:b=c>=j?10:11;break;case 10:d=c!=j;b=12;break;case 11:d=-1;b=12;break;case 12:h=d; -b=13;break;case 13:return d=h;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_Compare(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;b=g;a=e;f=0;d=_PyUnicodeUCS2_FromObject(b);b=d==0?16:1;break;case 1:f=_PyUnicodeUCS2_FromObject(a);b=f==0?13:2;break;case 2:var j=d;b=f==d?3:8;break;case 3:HEAP[j]-=1;b=HEAP[j]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:HEAP[f]-=1;b=HEAP[f]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=7;break;case 7:c=0;b=20;break;case 8:h=_unicode_compare(j,f);HEAP[d]-=1;b=HEAP[d]== -0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=10;break;case 10:HEAP[f]-=1;b=HEAP[f]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=12;break;case 12:c=h;b=20;break;case 13:b=d!=0?14:16;break;case 14:HEAP[d]-=1;b=HEAP[d]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=16;break;case 16:b=f!=0?17:19;break;case 17:HEAP[f]-=1;b=HEAP[f]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=19;break;case 19:c=-1;b=20;break;case 20:return a=c;default:assert(0, -"bad label: "+b)}} -function _PyUnicodeUCS2_RichCompare(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;a=e;d=b;c=_PyUnicodeUCS2_Compare(c,a);a=c==-1?1:2;break;case 1:a=_PyErr_Occurred()!=0?10:2;break;case 2:a=d;a=a==0?7:a==1?5:a==2?3:a==3?4:a==4?8:a==5?6:9;break;case 3:c=c==0;a=9;break;case 4:c=c!=0;a=9;break;case 5:c=c<=0;a=9;break;case 6:c=c>=0;a=9;break;case 7:c=c==-1;a=9;break;case 8:c=c==1;a=9;break;case 9:h=_PyBool_FromLong(c);a=22;break;case 10:a=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?11: -12;break;case 11:_PyErr_Clear();HEAP[__Py_NotImplementedStruct]+=1;h=__Py_NotImplementedStruct;a=22;break;case 12:a=d!=2&d!=3?13:14;break;case 13:h=0;a=22;break;case 14:a=_PyErr_ExceptionMatches(HEAP[_PyExc_UnicodeDecodeError])==0?15:16;break;case 15:h=0;a=22;break;case 16:_PyErr_Clear();a=d==2?17:18;break;case 17:f=__str885289;a=19;break;case 18:f=__str895290;a=19;break;case 19:a=_PyErr_WarnEx(HEAP[_PyExc_UnicodeWarning],f,1)<0?20:21;break;case 20:h=0;a=22;break;case 21:c=d==3;h=_PyBool_FromLong(c); -a=22;break;case 22:return g=h;default:assert(0,"bad label: "+a)}} -function _PyUnicodeUCS2_Contains(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;f=_PyUnicodeUCS2_FromObject(e);b=f==0?1:2;break;case 1:c=-1;b=11;break;case 2:d=_PyUnicodeUCS2_FromObject(a);b=d==0?3:6;break;case 3:HEAP[f]-=1;b=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=5;break;case 5:c=-1;b=11;break;case 6:h=_stringlib_contains_obj5491(d,f);HEAP[d]-=1;b=HEAP[d]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=8;break;case 8:HEAP[f]-=1;b=HEAP[f]==0?9:10; -break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=10;break;case 10:c=h;b=11;break;case 11:return b=c;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_Concat(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;b=g;a=e;f=0;d=_PyUnicodeUCS2_FromObject(b);b=d==0?19:1;break;case 1:f=_PyUnicodeUCS2_FromObject(a);b=f==0?16:2;break;case 2:b=f==HEAP[_unicode_empty]?3:6;break;case 3:HEAP[f]-=1;b=HEAP[f]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=5;break;case 5:c=d;b=23;break;case 6:var j=d;b=d==HEAP[_unicode_empty]?7:10;break;case 7:HEAP[j]-=1;b=HEAP[j]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d); -b=9;break;case 9:c=f;b=23;break;case 10:h=__PyUnicode_New(HEAP[f+8]+HEAP[j+8]);b=h==0?16:11;break;case 11:_llvm_memcpy_p0i8_p0i8_i32(HEAP[h+12],HEAP[d+12],HEAP[d+8]*2,1,0);_llvm_memcpy_p0i8_p0i8_i32(HEAP[h+12]+2*HEAP[d+8],HEAP[f+12],HEAP[f+8]*2,1,0);HEAP[d]-=1;b=HEAP[d]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=13;break;case 13:HEAP[f]-=1;b=HEAP[f]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=15;break;case 15:c=h;b=23;break;case 16:b=d!=0?17:19;break;case 17:HEAP[d]-= -1;b=HEAP[d]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=19;break;case 19:b=f!=0?20:22;break;case 20:HEAP[f]-=1;b=HEAP[f]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=22;break;case 22:c=0;b=23;break;case 23:return a=c;default:assert(0,"bad label: "+b)}} -function _unicode_count(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j=b+8,k;c=g;a=e;HEAP[h]=0;HEAP[j]=2147483647;a=_stringlib_parse_args_finds_unicode(__str905292,a,f,h,j)==0?1:2;break;case 1:d=0;a=13;break;case 2:a=HEAP[c+8]0?5:12;break;case 5:n=HEAP[p]-m%HEAP[p];a=2147483647-n0?20:28;break;case 20:l=HEAP[p]-m%HEAP[p];m=l+m;a=23;break;case 21:a=j>= -k?31:22;break;case 22:HEAP[j]=32;j+=2;a=23;break;case 23:l=a=l-1;a=a!=-1?21:28;break;case 24:a=j>=k?31:25;break;case 25:HEAP[j]=HEAP[h];j+=2;m+=1;a=HEAP[h]==10?27:26;break;case 26:a=HEAP[h]==13?27:28;break;case 27:m=0;a=28;break;case 28:h+=2;a=29;break;case 29:a=h=0?3:4;break;case 3:f=f*1000003&4294967295;f^=unSign(HEAP[d],16,1);d=d+2&4294967295;c=e=c-1;e=e>=0?3:4;break;case 4:f=e=f^HEAP[b+8];e=e==-1?5:6;break;case 5:f=-2;e=6;break;case 6:a=HEAP[b+16]=f;e=7;break;case 7:return g=a;default:assert(0,"bad label: "+e)}} -function _unicode_index(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k=b+8;c=g;a=_stringlib_parse_args_finds_unicode(__str1015308,e,h,j,k)==0?1:2;break;case 1:d=0;a=7;break;case 2:f=_stringlib_find_slice5489(HEAP[c+12],HEAP[c+8],HEAP[HEAP[h]+12],HEAP[HEAP[h]+8],HEAP[j],HEAP[k]);a=HEAP[h];HEAP[a]-=1;a=HEAP[a]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[h]+4]+24]](HEAP[h]);a=4;break;case 4:a=f<0?5:6;break;case 5:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str1025309);d=0;a=7;break;case 6:d=_PyInt_FromSsize_t(f);a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_islower(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;c=HEAP[b+12];e=HEAP[b+8]==1?1:2;break;case 1:e=__PyUnicodeUCS2_IsLowercase(HEAP[c]&65535);a=_PyBool_FromLong(e);e=14;break;case 2:e=HEAP[b+8]==0?3:4;break;case 3:a=_PyBool_FromLong(0);e=14;break;case 4:d=c+2*HEAP[b+8];f=0;e=12;break;case 5:h=HEAP[c];e=__PyUnicodeUCS2_IsUppercase(h&65535)!=0?7:6;break;case 6:e=__PyUnicodeUCS2_IsTitlecase(h&65535)!=0?7:8;break;case 7:a=_PyBool_FromLong(0);e=14;break;case 8:e=f==0?9: -11;break;case 9:e=__PyUnicodeUCS2_IsLowercase(h&65535)!=0?10:11;break;case 10:f=1;e=11;break;case 11:c+=2;e=12;break;case 12:e=c=HEAP[f]?3:5;break;case 3:a=HEAP[c+4]==_PyUnicode_Type?4:5;break;case 4:HEAP[c]+=1;d=c;a=6;break;case 5:d=_pad5506(c,0,HEAP[f]-HEAP[c+8],HEAP[h]& -65535);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _unicode_lower(g){return _fixup(g,270)} -function __PyUnicode_XStrip(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;a=b;h=HEAP[c+12];j=HEAP[c+8];k=HEAP[a+12];l=HEAP[a+8];o=_make_bloom_mask(k,l);m=0;a=d!=1?3:1;break;case 1:n=j;a=7;break;case 2:m+=1;a=3;break;case 3:a=m>=j?6:4;break;case 4:a=((o>>>(HEAP[h+2*m]&31)&1)!=0^1)!=0?6:5;break;case 5:a=_unicode_member(HEAP[h+2*m]&65535,k,l)!=0?2:6;break;case 6:n=j;a=d!=0?7:11;break;case 7:n-=1;a=n>>(HEAP[h+2*n]&31)&1)!=0^1)!=0?10:9;break;case 9:a= -_unicode_member(HEAP[h+2*n]&65535,k,l)!=0?7:10;break;case 10:n+=1;a=11;break;case 11:a=m!=0?15:12;break;case 12:a=n!=j?15:13;break;case 13:a=HEAP[c+4]!=_PyUnicode_Type?15:14;break;case 14:HEAP[c]+=1;f=c;a=16;break;case 15:f=_PyUnicodeUCS2_FromUnicode(h+2*m,n-m);a=16;break;case 16:return g=f;default:assert(0,"bad label: "+a)}} -function _do_strip5511(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;c=e;f=HEAP[a+12];h=HEAP[a+8];j=0;b=c!=1?3:1;break;case 1:k=h;b=8;break;case 2:j+=1;b=3;break;case 3:b=j>=h?7:4;break;case 4:var l=HEAP[f+2*j];b=HEAP[f+2*j]<=127?5:6;break;case 5:b=HEAP[__Py_ascii_whitespace+l]!=0?2:7;break;case 6:b=__PyUnicodeUCS2_IsWhitespace(l&65535)!=0?2:7;break;case 7:k=h;b=c!=0?8:13;break;case 8:k-=1;b=k=HEAP[f]?3:5;break;case 3:a=HEAP[c+4]==_PyUnicode_Type?4:5;break;case 4:HEAP[c]+=1;d=c;a=6;break;case 5:d=_pad5506(c,HEAP[f]-HEAP[c+8],0,HEAP[h]& -65535);a=6;break;case 6:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_slice(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j;d=g;f=e;h=b;f<0?(c=-1,a=1):(c=-1,a=2);break;case 1:f=0;var k=h,c=1;a=2;break;case 2:a=(c==1?k:b)<0?3:4;break;case 3:h=0;a=4;break;case 4:a=HEAP[d+8]h?11:12;break;case 11:f=h;a=12;break;case 12:j=_PyUnicodeUCS2_FromUnicode(HEAP[d+ -12]+2*f,h-f);a=13;break;case 13:return g=j;default:assert(0,"bad label: "+a)}} -function _PyUnicodeUCS2_Split(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;c=_PyUnicodeUCS2_FromObject(c);a=c==0?1:2;break;case 1:h=0;a=13;break;case 2:a=d!=0?3:7;break;case 3:d=_PyUnicodeUCS2_FromObject(d);a=d==0?4:7;break;case 4:HEAP[c]-=1;a=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=6;break;case 6:h=0;a=13;break;case 7:j=_split(c,d,f);HEAP[c]-=1;a=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=9;break;case 9:a=d!=0?10:12;break; -case 10:HEAP[d]-=1;a=HEAP[d]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=12;break;case 12:h=j;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function _unicode_split(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=e;HEAP[f]=__Py_NoneStruct;HEAP[h]=-1;a=__PyArg_ParseTuple_SizeT(a,__str1135339,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:a=HEAP[f]==__Py_NoneStruct?3:4;break;case 3:d=_split(c,0,HEAP[h]);a=7;break;case 4:var j=HEAP[h],k=HEAP[f];a=(HEAP[HEAP[HEAP[f]+4]+84]&268435456)!=0?5:6;break;case 5:d= -_split(c,k,j);a=7;break;case 6:d=_PyUnicodeUCS2_Split(c,k,j);a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _PyUnicodeUCS2_Partition(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;b=g;a=e;d=_PyUnicodeUCS2_FromObject(b);b=d==0?1:2;break;case 1:c=0;b=11;break;case 2:f=_PyUnicodeUCS2_FromObject(a);b=f==0?3:6;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=11;break;case 6:h=_stringlib_partition5493(d,HEAP[d+12],HEAP[d+8],f,HEAP[f+12],HEAP[f+8]);HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b= -8;break;case 8:HEAP[d]-=1;b=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=10;break;case 10:c=h;b=11;break;case 11:return a=c;default:assert(0,"bad label: "+b)}} -function _PyUnicodeUCS2_RPartition(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;b=g;a=e;d=_PyUnicodeUCS2_FromObject(b);b=d==0?1:2;break;case 1:c=0;b=11;break;case 2:f=_PyUnicodeUCS2_FromObject(a);b=f==0?3:6;break;case 3:HEAP[d]-=1;b=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=5;break;case 5:c=0;b=11;break;case 6:h=_stringlib_rpartition5494(d,HEAP[d+12],HEAP[d+8],f,HEAP[f+12],HEAP[f+8]);HEAP[f]-=1;b=HEAP[f]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f); -b=8;break;case 8:HEAP[d]-=1;b=HEAP[d]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);b=10;break;case 10:c=h;b=11;break;case 11:return a=c;default:assert(0,"bad label: "+b)}}function _unicode_partition(g,e){return _PyUnicodeUCS2_Partition(g,e)}function _unicode_rpartition(g,e){return _PyUnicodeUCS2_RPartition(g,e)} -function _PyUnicodeUCS2_RSplit(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;d=e;f=b;c=_PyUnicodeUCS2_FromObject(c);a=c==0?1:2;break;case 1:h=0;a=13;break;case 2:a=d!=0?3:7;break;case 3:d=_PyUnicodeUCS2_FromObject(d);a=d==0?4:7;break;case 4:HEAP[c]-=1;a=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=6;break;case 6:h=0;a=13;break;case 7:j=_rsplit(c,d,f);HEAP[c]-=1;a=HEAP[c]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[c+4]+24]](c);a=9;break;case 9:a=d!=0?10:12;break; -case 10:HEAP[d]-=1;a=HEAP[d]==0?11:12;break;case 11:FUNCTION_TABLE[HEAP[HEAP[d+4]+24]](d);a=12;break;case 12:h=j;a=13;break;case 13:return g=h;default:assert(0,"bad label: "+a)}} -function _unicode_rsplit(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4;c=g;a=e;HEAP[f]=__Py_NoneStruct;HEAP[h]=-1;a=__PyArg_ParseTuple_SizeT(a,__str1145343,allocate([f,0,0,0,h,0,0,0],["%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:a=HEAP[f]==__Py_NoneStruct?3:4;break;case 3:d=_rsplit(c,0,HEAP[h]);a=7;break;case 4:var j=HEAP[h],k=HEAP[f];a=(HEAP[HEAP[HEAP[f]+4]+84]&268435456)!=0?5:6;break;case 5:d= -_rsplit(c,k,j);a=7;break;case 6:d=_PyUnicodeUCS2_RSplit(c,k,j);a=7;break;case 7:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_splitlines(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b;c=g;a=e;HEAP[f]=0;a=__PyArg_ParseTuple_SizeT(a,__str1155345,allocate([f,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=3;break;case 2:d=_PyUnicodeUCS2_Splitlines(c,HEAP[f]);a=3;break;case 3:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _unicode_str(g){return _PyUnicodeUCS2_AsEncodedString(g,0,0)} -function _unicode_swapcase(g){return _fixup(g,272)}function _unicode_translate(g,e){return _PyUnicodeUCS2_TranslateCharmap(HEAP[g+12],HEAP[g+8],e,__str635261)}function _unicode_upper(g){return _fixup(g,274)} -function _unicode_zfill(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j=b;c=g;a=__PyArg_ParseTuple_SizeT(e,__str1165350,allocate([j,0,0,0],["i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=12;break;case 2:a=HEAP[c+8]>=HEAP[j]?3:6;break;case 3:var k=c;a=HEAP[c+4]==_PyUnicode_Type?4:5;break;case 4:HEAP[k]+=1;d=c;a=12;break;case 5:d=_PyUnicodeUCS2_FromUnicode(HEAP[c+12],HEAP[k+8]);a=12;break;case 6:f=HEAP[j]-HEAP[c+8];h=_pad5506(c,f,0,48);a=h==0?7: -8;break;case 7:d=0;a=12;break;case 8:a=HEAP[HEAP[h+12]+2*f]==43?10:9;break;case 9:a=HEAP[HEAP[h+12]+2*f]==45?10:11;break;case 10:HEAP[HEAP[h+12]]=HEAP[HEAP[h+12]+2*f];HEAP[HEAP[h+12]+2*f]=48;a=11;break;case 11:d=h;a=12;break;case 12:return a=d,STACKTOP=b,a;default:assert(0,"bad label: "+a)}} -function _unicode_startswith(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j=b+4,k=b+8,l,m;c=g;a=e;HEAP[j]=0;HEAP[k]=2147483647;a=_stringlib_parse_args_finds5492(__str1175352,a,f,j,k)==0?1:2;break;case 1:d=0;a=20;break;case 2:a=(HEAP[HEAP[HEAP[f]+4]+84]&67108864)!=0?3:13;break;case 3:m=0;a=11;break;case 4:h=_PyUnicodeUCS2_FromObject(HEAP[HEAP[f]+12+m*4]);a=h==0?5:6;break;case 5:d=0;a=20;break;case 6:l=_tailmatch(c,h,HEAP[j],HEAP[k],-1);HEAP[h]-= -1;a=HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=8;break;case 8:a=l!=0?9:10;break;case 9:HEAP[__Py_TrueStruct]+=1;d=__Py_TrueStruct;a=20;break;case 10:m+=1;a=11;break;case 11:a=HEAP[HEAP[f]+8]>m?4:12;break;case 12:HEAP[__Py_ZeroStruct]+=1;d=__Py_ZeroStruct;a=20;break;case 13:h=_PyUnicodeUCS2_FromObject(HEAP[f]);a=h==0?14:17;break;case 14:a=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?15:16;break;case 15:_PyErr_Format(HEAP[_PyExc_TypeError],__str1185353,allocate([HEAP[HEAP[HEAP[f]+ -4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=16;break;case 16:d=0;a=20;break;case 17:l=_tailmatch(c,h,HEAP[j],HEAP[k],-1);HEAP[h]-=1;a=HEAP[h]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=19;break;case 19:d=_PyBool_FromLong(l);a=20;break;case 20:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _unicode_endswith(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h,j=b+4,k=b+8,l,m;c=g;a=e;HEAP[j]=0;HEAP[k]=2147483647;a=_stringlib_parse_args_finds5492(__str1195355,a,f,j,k)==0?1:2;break;case 1:d=0;a=20;break;case 2:a=(HEAP[HEAP[HEAP[f]+4]+84]&67108864)!=0?3:13;break;case 3:m=0;a=11;break;case 4:h=_PyUnicodeUCS2_FromObject(HEAP[HEAP[f]+12+m*4]);a=h==0?5:6;break;case 5:d=0;a=20;break;case 6:l=_tailmatch(c,h,HEAP[j],HEAP[k],1);HEAP[h]-=1;a= -HEAP[h]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=8;break;case 8:a=l!=0?9:10;break;case 9:HEAP[__Py_TrueStruct]+=1;d=__Py_TrueStruct;a=20;break;case 10:m+=1;a=11;break;case 11:a=HEAP[HEAP[f]+8]>m?4:12;break;case 12:HEAP[__Py_ZeroStruct]+=1;d=__Py_ZeroStruct;a=20;break;case 13:h=_PyUnicodeUCS2_FromObject(HEAP[f]);a=h==0?14:17;break;case 14:a=_PyErr_ExceptionMatches(HEAP[_PyExc_TypeError])!=0?15:16;break;case 15:_PyErr_Format(HEAP[_PyExc_TypeError],__str1205356,allocate([HEAP[HEAP[HEAP[f]+ -4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK));a=16;break;case 16:d=0;a=20;break;case 17:l=_tailmatch(c,h,HEAP[j],HEAP[k],1);HEAP[h]-=1;a=HEAP[h]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=19;break;case 19:d=_PyBool_FromLong(l);a=20;break;case 20:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _AutoNumber_Init5518(g){HEAP[g]=0;HEAP[g+4]=0} -function _SubString_init5519(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d;c=g;a=e;d=b;HEAP[c]=a;var f=c;a=a==0?1:2;break;case 1:HEAP[f+4]=0;a=3;break;case 2:HEAP[c+4]=HEAP[f]+2*d;a=3;break;case 3:return;default:assert(0,"bad label: "+a)}} -function _SubString_new_object5520(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b]==0?1:2;break;case 1:HEAP[__Py_NoneStruct]+=1;a=__Py_NoneStruct;e=3;break;case 2:a=_PyUnicodeUCS2_FromUnicode(HEAP[b],(HEAP[b+4]-HEAP[b])/2|0);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _SubString_new_object_or_empty5521(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;e=HEAP[b]==0?1:2;break;case 1:a=_PyUnicodeUCS2_FromUnicode(0,0);e=3;break;case 2:a=_PyUnicodeUCS2_FromUnicode(HEAP[b],(HEAP[b+4]-HEAP[b])/2|0);e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _autonumber_state_error5522(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c=e;b=g==2?1:3;break;case 1:b=c!=0?2:5;break;case 2:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1215357);a=1;b=6;break;case 3:b=c==0?4:5;break;case 4:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1225358);a=1;b=6;break;case 5:a=0;b=6;break;case 6:return b=a;default:assert(0,"bad label: "+b)}} -function _output_initialize5523(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c;a=g;b=_PyUnicodeUCS2_FromUnicode(0,e);HEAP[a+8]=b;b=HEAP[a+8]==0?1:2;break;case 1:c=0;b=3;break;case 2:HEAP[a]=HEAP[HEAP[a+8]+12];HEAP[a+4]=HEAP[a]+2*HEAP[HEAP[a+8]+8];HEAP[a+12]=100;c=1;b=3;break;case 3:return a=c;default:assert(0,"bad label: "+b)}} -function _output_extend5524(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;b=HEAP[HEAP[a+8]+12];f=(HEAP[a]-b)/2|0;c=c+f+HEAP[a+12];b=_PyUnicodeUCS2_Resize(a+8,c)<0?1:2;break;case 1:d=0;b=5;break;case 2:b=HEAP[HEAP[a+8]+12];HEAP[a]=b+2*f;HEAP[a+4]=b+2*c;b=HEAP[a+12]<=3199?3:4;break;case 3:HEAP[a+12]*=2;b=4;break;case 4:d=1;b=5;break;case 5:return a=d;default:assert(0,"bad label: "+b)}} -function _output_data5525(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=((HEAP[c+4]-HEAP[c])/2|0)=HEAP[b+4]?1:2;break;case 1:a=-1;e=10;break;case 2:f=HEAP[b];e=8;break;case 3:d=__PyUnicodeUCS2_ToDecimalDigit(HEAP[f]&65535);e=d<0?4:5;break;case 4:a=-1;e=10;break;case 5:e=c;c*=10;e=((c+10)/10|0)!=e+1?6:7;break;case 6:_PyErr_Format(HEAP[_PyExc_ValueError],__str1235359,allocate(1,"i32",ALLOC_STACK));a=-1;e=10;break;case 7:c=d+c;f+=2;e=8;break;case 8:e=HEAP[b+4]>f?3:9;break;case 9:a=c;e=10;break;case 10:return g= -a;default:assert(0,"bad label: "+e)}}function _getattr5527(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_SubString_new_object5520(e);b=f==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyObject_GetAttr(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}}function _getitem_sequence5528(g,e){return _PySequence_GetItem(g,e)} -function _getitem_idx5529(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_PyLong_FromSsize_t(e);b=f==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyObject_GetItem(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}} -function _getitem_str5530(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;f=_SubString_new_object5520(e);b=f==0?1:2;break;case 1:c=0;b=5;break;case 2:d=_PyObject_GetItem(a,f);HEAP[f]-=1;b=HEAP[f]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=4;break;case 4:c=d;b=5;break;case 5:return b=c;default:assert(0,"bad label: "+b)}}function _FieldNameIterator_init5531(g,e,b){_SubString_init5519(g,e,b);HEAP[g+8]=HEAP[g]} -function __FieldNameIterator_attr5532(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;HEAP[c]=HEAP[a+8];b=3;break;case 1:b=HEAP[a+8];d=HEAP[b];HEAP[a+8]=b+2;b=d==46?2:d==91?2:3;break;case 2:HEAP[a+8]+=-2;b=4;break;case 3:b=HEAP[a+8]=HEAP[d+4]?1:2;break;case 1:k=1;c=15;break;case 2:c=HEAP[HEAP[d+8]];HEAP[d+8]+=2;c=c==46?3:c==91?6:11;break;case 3:HEAP[f]=1;c=__FieldNameIterator_attr5532(d,j)==0?4:5;break;case 4:k=0;c=15;break;case 5:HEAP[h]=-1;c=12;break;case 6:HEAP[f]=0;c=__FieldNameIterator_item5533(d,j)==0?7:8;break;case 7:k=0;c=15;break;case 8:c=_get_integer5526(j);HEAP[h]=c;c=HEAP[h]==-1?9:12;break;case 9:c= -_PyErr_Occurred()!=0?10:12;break;case 10:k=0;c=15;break;case 11:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1255361);k=0;c=15;break;case 12:c=HEAP[j]==HEAP[j+4]?13:14;break;case 13:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1265362);k=0;c=15;break;case 14:k=2;c=15;break;case 15:return g=k;default:assert(0,"bad label: "+c)}} -function _field_name_split5535(g,e,b,a,c,d){var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o,p,q,r,u,s;h=g;j=e;k=b;l=a;m=c;n=d;r=h;j=h+2*j;f=3;break;case 1:f=HEAP[r];r+=2;f=f==46?2:f==91?2:3;break;case 2:r+=-2;f=4;break;case 3:f=r=HEAP[k+4];f=HEAP[k]>=HEAP[k+4]!=0? -9:8;break;case 8:f=HEAP[l]!=-1?9:10;break;case 9:p=1;f=11;break;case 10:p=0;f=11;break;case 11:s=p;f=n!=0?12:23;break;case 12:f=HEAP[n]==0?13:18;break;case 13:f=s!=0?14:21;break;case 14:f=u!=0?15:16;break;case 15:o=1;f=17;break;case 16:o=2;f=17;break;case 17:HEAP[n]=o;f=18;break;case 18:f=s!=0?19:21;break;case 19:f=_autonumber_state_error5522(HEAP[n],u)!=0?20:21;break;case 20:q=0;f=24;break;case 21:f=u!=0?22:23;break;case 22:f=HEAP[n+4];HEAP[l]=f;HEAP[n+4]=f+1;f=23;break;case 23:q=1;f=24;break;case 24:return g= -q;default:assert(0,"bad label: "+f)}} -function _get_field_object5536(g,e,b,a){var c=STACKTOP;STACKTOP+=36;_memset(c,0,36);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o=c,p=c+4,q=c+12,r=c+20,u=c+24,s,t;d=g;h=e;j=b;k=a;m=0;d=_field_name_split5535(HEAP[d],(HEAP[d+4]-HEAP[d])/2|0,q,r,u,k)==0?25:1;break;case 1:d=HEAP[r]==-1?2:10;break;case 2:s=_SubString_new_object5520(q);d=s==0?25:3;break;case 3:d=j==0?5:4;break;case 4:m=_PyDict_GetItem(j,s);d=m==0?5:7;break;case 5:_PyErr_SetObject(HEAP[_PyExc_KeyError],s);HEAP[s]-=1;d=HEAP[s]== -0?6:25;break;case 6:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=25;break;case 7:HEAP[s]-=1;d=HEAP[s]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);d=9;break;case 9:HEAP[m]+=1;d=22;break;case 10:m=_PySequence_GetItem(h,HEAP[r]);d=m==0?28:22;break;case 11:d=HEAP[o]!=0?12:13;break;case 12:var v=_getattr5527(m,p);t=v;f=12;d=18;break;case 13:var w=m;d=HEAP[r]==-1?14:15;break;case 14:var x=_getitem_str5530(w,p);t=x;f=14;d=18;break;case 15:d=_PySequence_Check(w);var y=HEAP[r],z=m;d=d!=0?16:17;break; -case 16:var C=_getitem_sequence5528(z,y);t=C;f=16;d=18;break;case 17:var A=_getitem_idx5529(z,y);t=A;f=17;d=18;break;case 18:d=(f==17?A:f==16?C:f==14?x:v)==0?25:19;break;case 19:HEAP[m]-=1;d=HEAP[m]==0?20:21;break;case 20:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);d=21;break;case 21:m=t;d=22;break;case 22:n=d=_FieldNameIterator_next5534(u,o,r,p);d=d==2?11:23;break;case 23:d=n==1?24:25;break;case 24:l=m;d=29;break;case 25:d=m!=0?26:28;break;case 26:HEAP[m]-=1;d=HEAP[m]==0?27:28;break;case 27:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);d=28;break;case 28:l=0;d=29;break;case 29:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _render_field5537(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q;d=g;f=e;h=b;n=m=l=k=0;o=HEAP[f];a=HEAP[f]!=0?1:2;break;case 1:j=(HEAP[f+4]-HEAP[f])/2|0;a=3;break;case 2:j=0;a=3;break;case 3:p=j;a=HEAP[d+4]==_PyUnicode_Type?4:5;break;case 4:n=276;a=6;break;case 5:a=n!=0?6:7;break;case 6:var r=FUNCTION_TABLE[n](d,o,p);l=r;c=6;a=9;break;case 7:m=_PyUnicodeUCS2_FromUnicode(o,p);a=m==0?17:8;break;case 8:var u=_PyObject_Format(d,m);l=u;c=8;a=9;break;case 9:a=(c==8? -u:r)==0?14:10;break;case 10:q=_PyObject_Unicode(l);a=q==0?14:11;break;case 11:HEAP[l]-=1;a=HEAP[l]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=13;break;case 13:l=q;k=_output_data5525(h,HEAP[l+12],HEAP[l+8]);a=14;break;case 14:a=m!=0?15:17;break;case 15:HEAP[m]-=1;a=HEAP[m]==0?16:17;break;case 16:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);a=17;break;case 17:a=l!=0?18:20;break;case 18:HEAP[l]-=1;a=HEAP[l]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);a=20;break;case 20:return g= -k;default:assert(0,"bad label: "+a)}} -function _parse_field5538(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l;d=g;f=e;h=b;j=a;l=0;HEAP[j]=0;_SubString_init5519(h,0,0);HEAP[f]=HEAP[d];c=2;break;case 1:c=HEAP[d];var m=l=HEAP[c];HEAP[d]=c+2;c=m==33?3:m==58?3:2;break;case 2:c=HEAP[d]=HEAP[h+4]?6:7;break;case 6:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1275363);k= -0;c=12;break;case 7:c=HEAP[h];HEAP[j]=HEAP[c];HEAP[h]=c+2;c=HEAP[h]=HEAP[k+4]?1:2;break;case 1:r=1;j=28;break;case 2:t=HEAP[k];j=5;break;case 3:j=HEAP[k];var z=s=HEAP[j];HEAP[k]=j+2;j=z==123?4:z==125?4:5;break;case 4:x=1;j=6;break;case 5:j=HEAP[k]=HEAP[k+4];w=(HEAP[k]-t)/2|0;j=s==125?7:10;break;case 7:j=u!=0?9:8;break;case 8:j=HEAP[HEAP[k]]!=s?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1295365);r=0;j=28;break;case 10:j=u!=0?11:14;break;case 11:j=s==123?12:13;break;case 12:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1305366);r=0;j=28;break;case 13:j=u==0?14:17;break;case 14:j=HEAP[HEAP[k]]==s?15:16;break;case 15:HEAP[k]+=2;x=0;j=17;break;case 16:w-=1;j=17;break;case 17:HEAP[l]=t;HEAP[l+4]= -t+2*w;j=x==0?18:19;break;case 18:r=2;j=28;break;case 19:v=HEAP[m]=1;t=HEAP[k];j=26;break;case 20:j=HEAP[k];z=s=HEAP[j];HEAP[k]=j+2;j=z==123?21:z==125?22:26;break;case 21:HEAP[q]=1;v+=1;j=26;break;case 22:v-=1;j=v<=0?23:26;break;case 23:_SubString_init5519(y,t,(HEAP[k]+-2-t)/2|0);j=_parse_field5538(y,n,o,p)==0?24:25;break;case 24:r=0;j=28;break;case 25:r=2;j=28;break;case 26:j=HEAP[k]126?5:4;break;case 4:_PyErr_Format(HEAP[_PyExc_ValueError],__str1325368,allocate([f&255,0,0,0],["i32",0,0,0],ALLOC_STACK));b=6;break;case 5:_PyErr_Format(HEAP[_PyExc_ValueError],__str1335369,allocate([f,0,0,0],["i32",0,0,0],ALLOC_STACK));b=6;break;case 6:d=0;b=7;break;case 7:return a= -d;default:assert(0,"bad label: "+b)}} -function _output_markup5542(g,e,b,a,c,d,f,h,j){var k=STACKTOP;STACKTOP+=8;_memset(k,0,8);var l;for(l=-1;;)switch(l){case -1:var m,n,o,p,q,r,u,s,t,v,w=k,x,y;l=g;m=e;n=b;o=a;p=c;q=d;r=f;u=h;s=j;y=t=0;v=_get_field_object5536(l,q,r,s);l=v==0?15:1;break;case 1:l=o!=0?2:6;break;case 2:t=_do_conversion5541(v,o&65535);l=t==0?12:3;break;case 3:HEAP[v]-=1;l=HEAP[v]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);l=5;break;case 5:v=t;t=0;l=6;break;case 6:l=n!=0?7:9;break;case 7:t=_build_string5544(m, -q,r,u-1,s);l=t==0?12:8;break;case 8:_SubString_init5519(w,HEAP[t+12],HEAP[t+8]);x=w;l=10;break;case 9:x=m;l=10;break;case 10:l=_render_field5537(v,x,p)==0?12:11;break;case 11:y=1;l=12;break;case 12:l=v!=0?13:15;break;case 13:HEAP[v]-=1;l=HEAP[v]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[v+4]+24]](v);l=15;break;case 15:l=t!=0?16:18;break;case 16:HEAP[t]-=1;l=HEAP[t]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);l=18;break;case 18:return g=y,STACKTOP=k,g;default:assert(0,"bad label: "+ -l)}} -function _do_markup5543(g,e,b,a,c,d){var f=STACKTOP;STACKTOP+=42;_memset(f,0,42);var h;for(h=-1;;)switch(h){case -1:var j,k,l,m,n,o,p,q=f,r=f+8,u,s=f+12,t=f+16,v=f+24,w=f+32,x=f+40;j=g;k=e;l=b;m=a;n=c;o=d;_MarkupIterator_init5539(q,HEAP[j],(HEAP[j+4]-HEAP[j])/2|0);j=t+4;var y=t,z=t;h=6;break;case 1:h=_output_data5525(m,HEAP[z],(HEAP[j]-HEAP[y])/2|0)==0?2:3;break;case 2:p=0;h=8;break;case 3:h=HEAP[s]!=0?4:6;break;case 4:h=_output_markup5542(v,w,HEAP[r],HEAP[x]&65535,m,k,l,n,o)==0?5:6;break;case 5:p=0; -h=8;break;case 6:u=h=_MarkupIterator_next5540(q,t,s,v,w,x,r);h=h==2?1:7;break;case 7:p=u;h=8;break;case 8:return g=p,STACKTOP=f,g;default:assert(0,"bad label: "+h)}} -function _build_string5544(g,e,b,a,c){var d=STACKTOP;STACKTOP+=16;_memset(d,0,16);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n=d,o;h=g;j=e;k=b;l=a;m=c;o=0;HEAP[n+8]=0;f=l<=0?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1345370);f=6;break;case 2:f=_output_initialize5523(n,((HEAP[h+4]-HEAP[h])/2|0)+100)==0?6:3;break;case 3:f=_do_markup5543(h,j,k,n,l,m)==0?6:4;break;case 4:f=(HEAP[n]-HEAP[HEAP[n+8]+12])/2|0;f=_PyUnicodeUCS2_Resize(n+8,f)<0?6:5;break;case 5:o=HEAP[n+8];HEAP[n+ -8]=0;f=6;break;case 6:f=HEAP[n+8]!=0?7:9;break;case 7:f=HEAP[n+8];HEAP[f]-=1;f=HEAP[f]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[n+8]+4]+24]](HEAP[n+8]);f=9;break;case 9:return g=o,STACKTOP=d,g;default:assert(0,"bad label: "+f)}}function _do_string_format5545(g,e,b){var a=STACKTOP;STACKTOP+=16;_memset(a,0,16);var c=a+8;_AutoNumber_Init5518(c);_SubString_init5519(a,HEAP[g+12],HEAP[g+8]);g=_build_string5544(a,e,b,2,c);STACKTOP=a;return g} -function _formatteriter_dealloc5546(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_free(b);return;default:assert(0,"bad label: "+e)}} -function _formatteriter_next5547(g){var e=STACKTOP;STACKTOP+=34;_memset(e,0,34);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f=e,h=e+8,j=e+16,k=e+24,l=e+30,m,n,o,p,q;b=_MarkupIterator_next5540(g+12,f,l,h,j,k,e+26);b=b==0|b==1?1:2;break;case 1:d=0;b=26;break;case 2:q=p=o=n=0;m=_SubString_new_object5520(f);b=m==0?16:3;break;case 3:n=_SubString_new_object5520(h);b=n==0?13:4;break;case 4:b=HEAP[l]!=0?5:6;break;case 5:c=278;b=7;break;case 6:c=280;b=7;break;case 7:o=b=FUNCTION_TABLE[c](j);b=b==0?13: -8;break;case 8:b=HEAP[k]==0?9:10;break;case 9:p=__Py_NoneStruct;HEAP[p]+=1;var r=p,a=9;b=11;break;case 10:var u=_PyUnicodeUCS2_FromUnicode(k,1);p=u;a=10;b=11;break;case 11:b=(a==10?u:r)==0?13:12;break;case 12:q=_PyTuple_Pack(4,allocate([m,0,0,0,n,0,0,0,o,0,0,0,p,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=13;break;case 13:b=m!=0?14:16;break;case 14:HEAP[m]-=1;b=HEAP[m]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[m+ -4]+24]](m);b=16;break;case 16:b=n!=0?17:19;break;case 17:HEAP[n]-=1;b=HEAP[n]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);b=19;break;case 19:b=o!=0?20:22;break;case 20:HEAP[o]-=1;b=HEAP[o]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);b=22;break;case 22:b=p!=0?23:25;break;case 23:HEAP[p]-=1;b=HEAP[p]==0?24:25;break;case 24:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);b=25;break;case 25:d=q;b=26;break;case 26:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _formatter_parser5548(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c;b=g;c=__PyObject_New(_PyFormatterIter_Type5373);e=c==0?1:2;break;case 1:a=0;e=3;break;case 2:HEAP[b]+=1;HEAP[c+8]=b;_MarkupIterator_init5539(c+12,HEAP[b+12],HEAP[b+8]);a=c;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _fieldnameiter_dealloc5549(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:_free(b);return;default:assert(0,"bad label: "+e)}} -function _fieldnameiter_next5550(g){var e=STACKTOP;STACKTOP+=16;_memset(e,0,16);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d=e,f=e+4,h=e+8,j,k,l;b=_FieldNameIterator_next5534(g+12,d,f,h);b=b==0|b==1?1:2;break;case 1:c=0;b=15;break;case 2:l=j=0;k=_PyBool_FromLong(HEAP[d]);b=k==0?11:3;break;case 3:b=HEAP[f]!=-1?4:5;break;case 4:var m=_PyLong_FromSsize_t(HEAP[f]);l=m;a=4;b=6;break;case 5:var n=_SubString_new_object5520(h);l=n;a=5;b=6;break;case 6:b=(a==5?n:m)==0?8:7;break;case 7:j=_PyTuple_Pack(2, -allocate([k,0,0,0,l,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));b=8;break;case 8:b=k!=0?9:11;break;case 9:HEAP[k]-=1;b=HEAP[k]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=11;break;case 11:b=l!=0?12:14;break;case 12:HEAP[l]-=1;b=HEAP[l]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);b=14;break;case 14:c=j;b=15;break;case 15:return g=c,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _formatter_field_name_split5551(g){var e=STACKTOP;STACKTOP+=12;_memset(e,0,12);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f=e,h=e+8,j,k,l;c=g;l=k=0;j=__PyObject_New(_PyFieldNameIter_Type5376);b=j==0?1:2;break;case 1:d=0;b=15;break;case 2:HEAP[c]+=1;HEAP[j+8]=c;b=_field_name_split5535(HEAP[c+12],HEAP[c+8],f,h,j+12,0)==0?8:3;break;case 3:b=HEAP[h]!=-1?4:5;break;case 4:var m=_PyLong_FromSsize_t(HEAP[h]);k=m;a=4;b=6;break;case 5:var n=_SubString_new_object5520(f);k=n;a=5;b=6;break;case 6:b= -(a==5?n:m)==0?8:7;break;case 7:l=_PyTuple_Pack(2,allocate([k,0,0,0,j,0,0,0],["%struct.NullImporter*",0,0,0,"%149*",0,0,0],ALLOC_STACK));b=8;break;case 8:b=j!=0?9:11;break;case 9:HEAP[j]-=1;b=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);b=11;break;case 11:b=k!=0?12:14;break;case 12:HEAP[k]-=1;b=HEAP[k]==0?13:14;break;case 13:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);b=14;break;case 14:d=l;b=15;break;case 15:return g=d,STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _unicode__format__(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d=b,f,h;c=g;a=e;h=f=0;a=__PyArg_ParseTuple_SizeT(a,__str1375378,allocate([d,0,0,0],["%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?6:1;break;case 1:a=(HEAP[HEAP[HEAP[d]+4]+84]&134217728)==0?2:4;break;case 2:a=(HEAP[HEAP[HEAP[d]+4]+84]&268435456)==0?3:4;break;case 3:_PyErr_Format(HEAP[_PyExc_TypeError],__str1385379,allocate([HEAP[HEAP[HEAP[d]+4]+12],0,0,0],["i8*",0,0,0],ALLOC_STACK)); -a=6;break;case 4:h=a=_PyObject_Unicode(HEAP[d]);a=a==0?9:5;break;case 5:HEAP[d]=h;f=__PyUnicode_FormatAdvanced(c,HEAP[HEAP[d]+12],HEAP[HEAP[d]+8]);a=6;break;case 6:a=h!=0?7:9;break;case 7:HEAP[h]-=1;a=HEAP[h]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=9;break;case 9:return c=f,STACKTOP=b,c;default:assert(0,"bad label: "+a)}}function _unicode__sizeof__(g){return _PyInt_FromSsize_t((HEAP[g+8]+1)*2+24)} -function _unicode_getnewargs(g){return __Py_BuildValue_SizeT(__str1395382,allocate([HEAP[g+12],0,0,0,HEAP[g+8],0,0,0],["i16*",0,0,0,"i32",0,0,0],ALLOC_STACK))}function _unicode_mod(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=(HEAP[HEAP[a+4]+84]&268435456)==0?1:2;break;case 1:HEAP[__Py_NotImplementedStruct]+=1;d=__Py_NotImplementedStruct;b=3;break;case 2:d=_PyUnicodeUCS2_Format(a,c);b=3;break;case 3:return b=d;default:assert(0,"bad label: "+b)}} -function _unicode_subscript(g,e){var b=STACKTOP;STACKTOP+=16;_memset(b,0,16);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l=b,m=b+4,n=b+8,o=b+12,p,q,r,u;d=g;f=e;a=HEAP[HEAP[f+4]+48]==0?10:1;break;case 1:a=(HEAP[HEAP[f+4]+84]&131072)==0?10:2;break;case 2:a=HEAP[HEAP[HEAP[f+4]+48]+152]==0?10:3;break;case 3:var s=k=_PyNumber_AsSsize_t(f,HEAP[_PyExc_IndexError]);s==-1?(c=3,a=4):(c=3,a=7);break;case 4:a=_PyErr_Occurred()!=0?5:6;break;case 5:j=0;a=33;break;case 6:var t=k,c=6;a=7;break;case 7:a= -(c==6?t:s)<0?8:9;break;case 8:k+=HEAP[d+8];a=9;break;case 9:j=_unicode_getitem(d,k);a=33;break;case 10:a=HEAP[f+4]==_PySlice_Type?11:32;break;case 11:a=_PySlice_GetIndicesEx(f,HEAP[d+8],l,m,n,o)<0?12:13;break;case 12:j=0;a=33;break;case 13:a=HEAP[o]<=0?14:15;break;case 14:j=_PyUnicodeUCS2_FromUnicode(0,0);a=33;break;case 15:a=HEAP[l]!=0?20:16;break;case 16:a=HEAP[n]!=1?22:17;break;case 17:a=HEAP[d+8]!=HEAP[o]?20:18;break;case 18:a=HEAP[d+4]!=_PyUnicode_Type?20:19;break;case 19:HEAP[d]+=1;j=d;a=33; -break;case 20:a=HEAP[n]==1?21:22;break;case 21:j=_PyUnicodeUCS2_FromUnicode(HEAP[d+12]+2*HEAP[l],HEAP[o]);a=33;break;case 22:r=HEAP[d+12];a=HEAP[o]*2>=0?23:26;break;case 23:a=HEAP[o]*2!=0?24:25;break;case 24:h=HEAP[o]*2;a=27;break;case 25:h=1;a=27;break;case 26:u=0;a=28;break;case 27:u=a=_malloc(h);a=a==0?28:29;break;case 28:j=_PyErr_NoMemory();a=33;break;case 29:p=HEAP[l];q=0;a=q=0?1:2;break;case 1:HEAP[a+2*d]=HEAP[c+d];d=b=d-1;b=b>=0?1:2;break;case 2:return a=f;default:assert(0,"bad label: "+b)}}function _longtounicode(g,e,b,a){_PyOS_snprintf(g,e,b,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK));return _strtounicode(g,g)} -function _formatfloat5553(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m;d=g;f=e;h=b;j=a;d=_PyFloat_AsDouble(d);c=d==-1?1:3;break;case 1:c=_PyErr_Occurred()!=0?2:3;break;case 2:l=0;c=11;break;case 3:c=h<0?4:5;break;case 4:h=6;c=5;break;case 5:c=(f&8)!=0?6:7;break;case 6:k=4;c=8;break;case 7:k=0;c=8;break;case 8:m=c=_PyOS_double_to_string(d,j&255,h,k,0);c=c==0?9:10;break;case 9:l=0;c=11;break;case 10:l=_strlen(m);l=_PyUnicodeUCS2_FromStringAndSize(m,l);_PyMem_Free(m);c=11;break;case 11:return g= -l;default:assert(0,"bad label: "+c)}} -function _formatlong(g,e,b,a){var c=STACKTOP;STACKTOP+=8;_memset(c,0,8);var d,f=null;for(d=-1;;)switch(d){case -1:var h,j=c,k,l=c+4,m,n;m=__PyString_FormatLong(g,e,b,a,j,l);d=m==0?1:2;break;case 1:h=0;d=11;break;case 2:n=__PyUnicode_New(HEAP[l]);d=n==0?3:6;break;case 3:HEAP[m]-=1;d=HEAP[m]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);d=5;break;case 5:h=0;d=11;break;case 6:k=0;var o=HEAP[n+12];k=0?10:8;break;case 8:f=n==120|n==88|n==111?9:10;break;case 9:r=__str1815424;f=11;break;case 10:r= -__str215219;f=11;break;case 11:f=m<0?12:13;break;case 12:m=1;f=13;break;case 13:f=k<=14?15:14;break;case 14:f=m+3>=k?15:16;break;case 15:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str1825425);p=-1;f=26;break;case 16:f=(l&8)==0?19:17;break;case 17:f=n==120|n==88?18:19;break;case 18:_PyOS_snprintf(q,64,__str1835426,allocate([r,0,0,0,n,0,0,0,m,0,0,0,n,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));f=23;break;case 19:f=(l&8)!=0?20:21;break;case 20:o=__str1845427;f=22;break; -case 21:o=__str215219;f=22;break;case 22:_PyOS_snprintf(q,64,__str1855428,allocate([r,0,0,0,o,0,0,0,m,0,0,0,n,0,0,0],["i8*",0,0,0,"i8*",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));f=23;break;case 23:f=HEAP[r]!=0?24:25;break;case 24:p=_longtounicode(j,k,q,0-u);f=26;break;case 25:p=_longtounicode(j,k,q,u);f=26;break;case 26:return g=p,STACKTOP=d,g;default:assert(0,"bad label: "+f)}} -function _formatchar5555(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;var j=c=e;b=(HEAP[HEAP[c+4]+84]&268435456)!=0?1:3;break;case 1:b=HEAP[j+8]!=1?17:2;break;case 2:HEAP[a]=HEAP[HEAP[c+12]];b=16;break;case 3:var k=c;b=(HEAP[HEAP[j+4]+84]&134217728)!=0?4:11;break;case 4:b=HEAP[k+8]!=1?17:5;break;case 5:var l=b=c+20;b=HEAP[b]<0?6:10;break;case 6:f=_PyUnicodeUCS2_Decode(l,1,0,__str105208);b=f==0?7:8;break;case 7:d=-1;b=18;break;case 8:HEAP[a]=HEAP[HEAP[f+12]];HEAP[f]-=1;b=HEAP[f]==0?9: -16;break;case 9:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=16;break;case 10:HEAP[a]=HEAP[l];b=16;break;case 11:h=_PyInt_AsLong(k);b=h==-1?12:13;break;case 12:b=_PyErr_Occurred()!=0?17:13;break;case 13:b=h<0|h>65535?14:15;break;case 14:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str1865429);d=-1;b=18;break;case 15:HEAP[a]=h&65535;b=16;break;case 16:HEAP[a+2]=0;d=1;b=18;break;case 17:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1875430);d=-1;b=18;break;case 18:return a=d;default:assert(0,"bad label: "+ -b)}} -function _PyUnicodeUCS2_Format(g,e){var b=STACKTOP;STACKTOP+=248;_memset(b,0,248);var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q=b,r,u=b+4,s,t,v,w,x,y,z,C,A,G,E,D,R,M=b+8,L,I,J,F,V,Q;d=g;f=e;r=0;s=HEAP[u]=0;a=d==0?2:1;break;case 1:a=f==0?2:3;break;case 2:__PyErr_BadInternalCall(__str15199,8251);j=0;a=221;break;case 3:t=_PyUnicodeUCS2_FromObject(d);a=t==0?4:5;break;case 4:j=0;a=221;break;case 5:k=HEAP[t+12];m=HEAP[t+8];o=n=m+100;a=__PyUnicode_New(o);HEAP[u]=a;a=HEAP[u]==0?215: -6;break;case 6:l=HEAP[HEAP[u]+12];a=(HEAP[HEAP[f+4]+84]&67108864)!=0?7:8;break;case 7:p=_PyTuple_Size(f);HEAP[q]=0;a=9;break;case 8:p=-1;HEAP[q]=-2;a=9;break;case 9:a=HEAP[HEAP[f+4]+56]!=0?10:14;break;case 10:a=(HEAP[HEAP[f+4]+84]&67108864)==0?11:14;break;case 11:a=HEAP[f+4]!=_PyBaseString_Type?12:14;break;case 12:a=_PyType_IsSubtype(HEAP[f+4],_PyBaseString_Type)==0?13:14;break;case 13:s=f;a=14;break;case 14:var Z=M,K=M,N=M;a=201;break;case 15:a=HEAP[k]!=37?16:20;break;case 16:n-=1;a=n<0?17:19;break; -case 17:n=m+100;o=n+o;a=__PyUnicode_Resize(u,o)<0?212:18;break;case 18:l=HEAP[HEAP[u]+12]+2*o+2*(0-n);n-=1;a=19;break;case 19:HEAP[l]=HEAP[k];l+=2;k+=2;a=201;break;case 20:v=0;x=w=-1;G=A=y=0;k+=2;a=HEAP[k]==40?21:49;break;case 21:F=1;a=s==0?22:23;break;case 22:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1885431);a=212;break;case 23:k+=2;m-=1;L=k;a=29;break;case 24:a=HEAP[k]==41?25:26;break;case 25:F-=1;a=28;break;case 26:a=HEAP[k]==40?27:28;break;case 27:F+=1;a=28;break;case 28:k+=2;a=29;break;case 29:a= -F<=0?31:30;break;case 30:m-=1;a=m>=0?24:31;break;case 31:I=((k-L)/2|0)-1;a=m<0?33:32;break;case 32:a=F>0?33:34;break;case 33:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1895432);a=212;break;case 34:J=_PyUnicodeUCS2_FromUnicode(L,I);a=J==0?212:35;break;case 35:a=r!=0?36:39;break;case 36:HEAP[f]-=1;a=HEAP[f]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=38;break;case 38:r=0;a=39;break;case 39:f=_PyObject_GetItem(s,J);HEAP[J]-=1;a=HEAP[J]==0?40:41;break;case 40:FUNCTION_TABLE[HEAP[HEAP[J+ -4]+24]](J);a=41;break;case 41:a=f==0?212:42;break;case 42:r=1;p=-1;HEAP[q]=-2;a=49;break;case 43:var H=y=HEAP[k],c=H;k+=2;c==32?(c=43,a=46):c==35?(c=43,a=47):c==43?(c=43,a=45):c==45?(c=43,a=44):c==48?(c=43,a=48):(c=43,a=51);break;case 44:v|=1;a=49;break;case 45:v|=2;a=49;break;case 46:v|=4;a=49;break;case 47:v|=8;a=49;break;case 48:v|=16;a=49;break;case 49:m=a=m-1;a=a>=0?43:50;break;case 50:var ba=y,c=50;a=51;break;case 51:a=(c==50?ba:H)==42?52:59;break;case 52:A=_getnextarg5552(f,p,q);a=A==0?212: -53;break;case 53:a=(HEAP[HEAP[A+4]+84]&8388608)==0?54:55;break;case 54:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1905433);a=212;break;case 55:w=_PyInt_AsLong(A);a=w<0?56:57;break;case 56:v|=1;w=0-w;a=57;break;case 57:m=a=m-1;a=a>=0?58:66;break;case 58:var W=HEAP[k];y=W;k+=2;c=58;a=67;break;case 59:var B=y;y>47&B<=57?(c=59,a=60):(c=59,a=67);break;case 60:w=y-48;a=65;break;case 61:y=HEAP[k];k+=2;var Y=y;y<=47|Y>57?(c=61,a=67):(c=61,a=62);break;case 62:a=(w*10/10|0)!=w?63:64;break;case 63:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str1915434);a=212;break;case 64:w=w*10+-48+y;a=65;break;case 65:m=a=m-1;a=a>=0?61:66;break;case 66:var fa=y,c=66;a=67;break;case 67:a=(c==66?fa:c==58?W:c==59?B:Y)==46?68:86;break;case 68:x=0;m-=1;a=m>=0?69:70;break;case 69:var ha=HEAP[k];y=ha;k+=2;c=69;a=71;break;case 70:var la=y,c=70;a=71;break;case 71:a=(c==70?la:ha)==42?72:79;break;case 72:A=_getnextarg5552(f,p,q);a=A==0?212:73;break;case 73:a=(HEAP[HEAP[A+4]+84]&8388608)==0?74:75;break;case 74:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1905433); -a=212;break;case 75:x=_PyInt_AsLong(A);a=x<0?76:77;break;case 76:x=0;a=77;break;case 77:m=a=m-1;a=a>=0?78:91;break;case 78:y=HEAP[k];k+=2;a=86;break;case 79:a=y>47&y<=57?80:86;break;case 80:x=y-48;a=85;break;case 81:y=HEAP[k];k+=2;a=y<=47|y>57?86:82;break;case 82:a=(x*10/10|0)!=x?83:84;break;case 83:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1925435);a=212;break;case 84:x=x*10+-48+y;a=85;break;case 85:m=a=m-1;a=a>=0?81:91;break;case 86:a=m>=0?87:91;break;case 87:a=y==104|y==108|y==76?88:90;break; -case 88:m-=1;a=m>=0?89:91;break;case 89:y=HEAP[k];k+=2;a=90;break;case 90:a=m<0?91:92;break;case 91:_PyErr_SetString(HEAP[_PyExc_ValueError],__str1935436);a=212;break;case 92:a=y!=37?93:94;break;case 93:A=_getnextarg5552(f,p,q);a=A==0?212:94;break;case 94:D=0;z=32;var ra=y;a=ra;a=a==37?95:a==69?139:a==70?139:a==71?139:a==88?114:a==99?142:a==100?114:a==101?139:a==102?139:a==103?139:a==105?114:a==111?114:a==114?96:a==115?96:a==117?114:a==120?114:143;break;case 95:E=Z;HEAP[E]=37;R=1;a=147;break;case 96:a= -HEAP[A+4]!=_PyUnicode_Type?99:97;break;case 97:var ya=A;ra!=115?(c=97,a=101):(c=97,a=98);break;case 98:G=ya;HEAP[G]+=1;a=111;break;case 99:var Da=A;ra==115?(c=99,a=100):(c=99,a=101);break;case 100:var Ua=_PyObject_Unicode(Da);G=Ua;c=100;a=102;break;case 101:var Na=_PyObject_Repr(c==99?Da:ya);G=Na;c=101;a=102;break;case 102:a=(c==101?Na:Ua)==0?212:103;break;case 103:a=(HEAP[HEAP[G+4]+84]&268435456)==0?104:111;break;case 104:var Pa=G;a=(HEAP[HEAP[G+4]+84]&134217728)!=0?105:108;break;case 105:V=_PyUnicodeUCS2_Decode(G+ -20,HEAP[Pa+8],0,__str105208);HEAP[G]-=1;a=HEAP[G]==0?106:107;break;case 106:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);a=107;break;case 107:G=V;a=V==0?212:111;break;case 108:HEAP[G]=HEAP[Pa]-1;a=HEAP[G]==0?109:110;break;case 109:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);a=110;break;case 110:_PyErr_SetString(HEAP[_PyExc_TypeError],__str1945437);a=212;break;case 111:E=HEAP[G+12];R=HEAP[G+8];a=x>=0?112:147;break;case 112:a=R>x?113:147;break;case 113:R=x;a=147;break;case 114:a=ra==105?115:116;break;case 115:y= -100;a=116;break;case 116:C=0;a=_PyNumber_Check(A)!=0?117:135;break;case 117:Q=0;a=(HEAP[HEAP[A+4]+84]&8388608)!=0?119:118;break;case 118:a=(HEAP[HEAP[A+4]+84]&16777216)!=0?119:120;break;case 119:Q=A;HEAP[Q]+=1;var wa=Q,c=119;a=122;break;case 120:Q=_PyNumber_Int(A);a=Q==0?121:123;break;case 121:var Ya=_PyNumber_Long(A);Q=Ya;c=121;a=122;break;case 122:a=(c==121?Ya:wa)!=0?123:135;break;case 123:a=(HEAP[HEAP[Q+4]+84]&8388608)!=0?124:128;break;case 124:C=1;E=K;R=_formatint5554(E,v,x,y,Q);HEAP[Q]-=1;a= -HEAP[Q]==0?125:126;break;case 125:FUNCTION_TABLE[HEAP[HEAP[Q+4]+24]](Q);a=126;break;case 126:a=R<0?212:127;break;case 127:D=1;a=135;break;case 128:a=(HEAP[HEAP[Q+4]+84]&16777216)!=0?129:133;break;case 129:C=1;G=_formatlong(Q,v,x,y);HEAP[Q]-=1;a=HEAP[Q]==0?130:131;break;case 130:FUNCTION_TABLE[HEAP[HEAP[Q+4]+24]](Q);a=131;break;case 131:a=G==0?212:132;break;case 132:E=HEAP[G+12];R=HEAP[G+8];D=1;a=135;break;case 133:HEAP[Q]-=1;a=HEAP[Q]==0?134:135;break;case 134:FUNCTION_TABLE[HEAP[HEAP[Q+4]+24]](Q); -a=135;break;case 135:a=C==0?136:137;break;case 136:_PyErr_Format(HEAP[_PyExc_TypeError],__str1955438,allocate([y&255,0,0,0,HEAP[HEAP[A+4]+12],0,0,0],["i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=212;break;case 137:a=(v&16)!=0?138:147;break;case 138:z=48;a=147;break;case 139:G=a=_formatfloat5553(A,v,x,y);a=a==0?212:140;break;case 140:E=HEAP[G+12];R=HEAP[G+8];D=1;a=(v&16)!=0?141:148;break;case 141:z=48;a=147;break;case 142:E=N;R=_formatchar5555(E,A);a=R<0?212:147;break;case 143:var Ha=(k+-2-HEAP[t+12])/ -2|0,ta=y;a=y<=30|y>126?145:144;break;case 144:h=y&255;a=146;break;case 145:h=63;a=146;break;case 146:_PyErr_Format(HEAP[_PyExc_ValueError],__str1965439,allocate([h,0,0,0,ta,0,0,0,Ha,0,0,0],["i32",0,0,0,"i32",0,0,0,"i32",0,0,0],ALLOC_STACK));a=212;break;case 147:a=D!=0?148:156;break;case 148:a=HEAP[E]==45?150:149;break;case 149:a=HEAP[E]==43?150:151;break;case 150:D=HEAP[E];E+=2;R-=1;a=156;break;case 151:a=(v&2)!=0?152:153;break;case 152:D=43;a=156;break;case 153:a=(v&4)!=0?154:155;break;case 154:D= -32;a=156;break;case 155:D=0;a=156;break;case 156:a=wR?173:174;break;case 173:w-=1;a=174;break;case 174:a=(v&8)!=0?175:181;break;case 175:a=y==120|y==88?176:181;break;case 176:a=z!=32?177:178;break;case 177:HEAP[l]=HEAP[E];l+=2;E+=2;HEAP[l]=HEAP[E];l+=2;E+=2;a=178;break;case 178:n-=2;w=a=w-2;a=a<0?179:180;break;case 179:w=0;a=180;break;case 180:R-=2;a=181;break; -case 181:a=w>R?182:184;break;case 182:a=(v&1)==0?183:184;break;case 183:n-=1;HEAP[l]=z;l+=2;w-=1;a=w>R?183:184;break;case 184:a=z==32?185:190;break;case 185:a=D!=0?186:187;break;case 186:HEAP[l]=D;l+=2;a=187;break;case 187:a=(v&8)!=0?188:190;break;case 188:a=y==120|y==88?189:190;break;case 189:HEAP[l]=HEAP[E];l+=2;E+=2;HEAP[l]=HEAP[E];l+=2;E+=2;a=190;break;case 190:_llvm_memcpy_p0i8_p0i8_i32(l,E,R*2,1,0);l+=2*R;n-=R;w-=1;a=w>=R?191:192;break;case 191:n-=1;HEAP[l]=32;l+=2;w-=1;a=w>=R?191:192;break; -case 192:a=s!=0?193:198;break;case 193:a=HEAP[q]=0?15:202;break;case 202:a=HEAP[q]=0?7:11;break;case 7:a=(l+1)*2!=0?8:9;break;case 8:d=(l+1)*2;a=10;break;case 9:d=1;a=10;break;case 10:f=_malloc(d);a=12;break; -case 11:f=0;a=12;break;case 12:HEAP[k+12]=f;a=HEAP[k+12]==0?13:16;break;case 13:_PyObject_Free(k);HEAP[j]-=1;a=HEAP[j]==0?14:15;break;case 14:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=15;break;case 15:h=_PyErr_NoMemory();a=19;break;case 16:_llvm_memcpy_p0i8_p0i8_i32(HEAP[k+12],HEAP[j+12],(l+1)*2,1,0);HEAP[k+8]=l;HEAP[k+16]=HEAP[j+16];HEAP[j]-=1;a=HEAP[j]==0?17:18;break;case 17:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=18;break;case 18:h=k;a=19;break;case 19:return g=h;default:assert(0,"bad label: "+a)}} -function __PyUnicodeUCS2_Init(){var g=STACKTOP;STACKTOP+=16;_memset(g,0,16);var e;for(e=-1;;)switch(e){case -1:var b,a=g;HEAP[a]=10;HEAP[a+2]=13;HEAP[a+4]=28;HEAP[a+6]=29;HEAP[a+8]=30;HEAP[a+10]=133;HEAP[a+12]=8232;HEAP[a+14]=8233;HEAP[_free_list5197]=0;HEAP[_numfree5198]=0;e=__PyUnicode_New(0);HEAP[_unicode_empty]=e;e=e==0?6:1;break;case 1:_llvm_memcpy_p0i8_p0i8_i32(_unicode_default_encoding,__str165214,6,1,0);b=0;e=2;break;case 2:HEAP[_unicode_latin1+b*4]=0;b=e=b+1;e=e<=255?2:3;break;case 3:e=_PyType_Ready(_PyUnicode_Type)< -0?4:5;break;case 4:throw _Py_FatalError(__str2015445),"Reached an unreachable!";case 5:e=_make_bloom_mask(a,8);HEAP[_bloom_linebreak]=e;_PyType_Ready(_EncodingMapType);e=6;break;case 6:STACKTOP=g;return;default:assert(0,"bad label: "+e)}} -function _PyUnicodeUCS2_ClearFreelist(){var g;for(g=-1;;)switch(g){case -1:var e,b,a;e=HEAP[_numfree5198];b=HEAP[_free_list5197];g=HEAP[_free_list5197]!=0?1:7;break;case 1:a=b;b=HEAP[b];g=HEAP[a+12]!=0?2:3;break;case 2:_free(HEAP[a+12]);g=3;break;case 3:g=HEAP[a+20]!=0?4:6;break;case 4:g=HEAP[a+20];HEAP[g]-=1;g=HEAP[g]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[a+20]+4]+24]](HEAP[a+20]);g=6;break;case 6:_PyObject_Free(a);HEAP[_numfree5198]-=1;g=b!=0?1:7;break;case 7:return HEAP[_free_list5197]= -0,e;default:assert(0,"bad label: "+g)}} -function __PyUnicodeUCS2_Fini(){var g;for(g=-1;;)switch(g){case -1:var e;g=HEAP[_unicode_empty]!=0?1:3;break;case 1:g=HEAP[_unicode_empty];HEAP[g]-=1;g=HEAP[g]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[_unicode_empty]+4]+24]](HEAP[_unicode_empty]);g=3;break;case 3:e=HEAP[_unicode_empty]=0;g=4;break;case 4:g=HEAP[_unicode_latin1+e*4]!=0?5:8;break;case 5:g=HEAP[_unicode_latin1+e*4];HEAP[g]-=1;g=HEAP[g]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[HEAP[_unicode_latin1+e*4]+4]+24]](HEAP[_unicode_latin1+ -e*4]);g=7;break;case 7:HEAP[_unicode_latin1+e*4]=0;g=8;break;case 8:e=g=e+1;g=g<=255?4:9;break;case 9:_PyUnicodeUCS2_ClearFreelist();return;default:assert(0,"bad label: "+g)}} -function _check_matched(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=a==__Py_NoneStruct?1:2;break;case 1:d=1;b=7;break;case 2:f=_PyObject_CallMethod(a,__str5560,__str15561,allocate([c,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));b=f==0?3:4;break;case 3:d=-1;b=7;break;case 4:h=_PyObject_IsTrue(f);HEAP[f]-=1;b=HEAP[f]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);b=6;break;case 6:d=h;b=7;break;case 7:return b=d;default:assert(0,"bad label: "+b)}} -function _get_warnings_attr(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=HEAP[_warnings_str_8371]==0?1:3;break;case 1:e=_PyString_InternFromString(__str25562);HEAP[_warnings_str_8371]=e;e=HEAP[_warnings_str_8371]==0?2:3;break;case 2:a=0;e=8;break;case 3:c=_PyImport_GetModuleDict();e=_PyDict_Contains(c,HEAP[_warnings_str_8371]);e=e==-1|e==0?4:5;break;case 4:a=0;e=8;break;case 5:d=_PyDict_GetItem(c,HEAP[_warnings_str_8371]);e=_PyObject_HasAttrString(d,b)==0?6:7;break;case 6:a=0;e=8;break; -case 7:a=_PyObject_GetAttrString(d,b);e=8;break;case 8:return g=a;default:assert(0,"bad label: "+e)}} -function _get_once_registry(){var g;for(g=-1;;)switch(g){case -1:var e,b;b=_get_warnings_attr(__str35563);g=b==0?1:4;break;case 1:g=_PyErr_Occurred()!=0?2:3;break;case 2:e=0;g=7;break;case 3:e=HEAP[__once_registry];g=7;break;case 4:g=HEAP[__once_registry];HEAP[g]-=1;g=HEAP[g]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[__once_registry]+4]+24]](HEAP[__once_registry]);g=6;break;case 6:e=HEAP[__once_registry]=b;g=7;break;case 7:return e;default:assert(0,"bad label: "+g)}} -function _get_default_action(){var g;for(g=-1;;)switch(g){case -1:var e,b;b=_get_warnings_attr(__str45564);g=b==0?1:4;break;case 1:g=_PyErr_Occurred()!=0?2:3;break;case 2:e=0;g=7;break;case 3:e=HEAP[__default_action];g=7;break;case 4:g=HEAP[__default_action];HEAP[g]-=1;g=HEAP[g]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[__default_action]+4]+24]](HEAP[__default_action]);g=6;break;case 6:e=HEAP[__default_action]=b;g=7;break;case 7:return e;default:assert(0,"bad label: "+g)}} -function _get_filter(g,e,b,a,c){var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o,p,q,r,u,s,t,v;f=g;h=e;j=b;k=a;l=c;p=_get_warnings_attr(__str55565);d=p==0?1:3;break;case 1:d=_PyErr_Occurred()!=0?2:6;break;case 2:m=0;d=28;break;case 3:d=HEAP[__filters];HEAP[d]-=1;d=HEAP[d]==0?4:5;break;case 4:FUNCTION_TABLE[HEAP[HEAP[HEAP[__filters]+4]+24]](HEAP[__filters]);d=5;break;case 5:HEAP[__filters]=p;d=6;break;case 6:d=(HEAP[HEAP[HEAP[__filters]+4]+84]&33554432)==0?7:8;break;case 7:_PyErr_SetString(HEAP[_PyExc_ValueError], -__str65566);m=0;d=28;break;case 8:o=0;d=24;break;case 9:HEAP[l]=HEAP[HEAP[HEAP[__filters]+12]+4*o];q=HEAP[l];d=_PyTuple_Size(q)!=5?10:11;break;case 10:_PyErr_Format(HEAP[_PyExc_ValueError],__str75567,allocate([o,0,0,0],["i32",0,0,0],ALLOC_STACK));m=0;d=28;break;case 11:r=HEAP[q+12];u=HEAP[q+12+4];s=HEAP[q+12+8];t=HEAP[q+12+12];v=HEAP[q+12+16];u=_check_matched(u,h);t=_check_matched(t,k);s=_PyObject_IsSubclass(f,s);v=_PyInt_AsSsize_t(v);d=u==-1?16:12;break;case 12:d=t==-1?16:13;break;case 13:d=s==-1? -16:14;break;case 14:d=v!=-1?17:15;break;case 15:d=_PyErr_Occurred()!=0?16:17;break;case 16:m=0;d=28;break;case 17:d=u!=0?18:23;break;case 18:d=s!=0?19:23;break;case 19:d=t!=0?20:23;break;case 20:d=v==0?22:21;break;case 21:d=j==v?22:23;break;case 22:m=_PyString_AsString(r);d=28;break;case 23:o+=1;d=24;break;case 24:d=HEAP[HEAP[__filters]+8]>o?9:25;break;case 25:n=_get_default_action();d=n!=0?26:27;break;case 26:m=_PyString_AsString(n);d=28;break;case 27:_PyErr_SetString(HEAP[_PyExc_ValueError],__str85568); -m=0;d=28;break;case 28:return g=m;default:assert(0,"bad label: "+d)}}function _already_warned(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;a=d==0?1:2;break;case 1:h=-1;a=8;break;case 2:j=_PyDict_GetItem(c,d);a=j!=0?3:5;break;case 3:k=_PyObject_IsTrue(j);a=k!=0?4:5;break;case 4:h=k;a=8;break;case 5:a=f!=0?6:7;break;case 6:h=_PyDict_SetItem(c,d,__Py_TrueStruct);a=8;break;case 7:h=0;a=8;break;case 8:return g=h;default:assert(0,"bad label: "+a)}} -function _normalize_module(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h;b=g;h=_PyObject_IsTrue(b);e=h==-1?1:2;break;case 1:a=0;e=13;break;case 2:e=h==0?3:4;break;case 3:a=_PyString_FromString(__str95569);e=13;break;case 4:d=_PyString_AsString(b);e=d==0?5:6;break;case 5:a=0;e=13;break;case 6:f=_PyString_Size(b);e=f<0?7:8;break;case 7:a=0;e=13;break;case 8:e=f<=2?11:9;break;case 9:e=_strncmp(d+(f-3),__str105570,3)!=0?11:10;break;case 10:c=_PyString_FromStringAndSize(d,f-3);e=12;break;case 11:c= -b;HEAP[c]+=1;e=12;break;case 12:a=c;e=13;break;case 13:return g=a;default:assert(0,"bad label: "+e)}} -function _update_registry(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l;c=g;d=e;f=b;k=0;a=4;break;case 1:k=_PyInt_FromLong(0);a=k==0?2:3;break;case 2:h=-1;a=12;break;case 3:j=_PyTuple_Pack(3,allocate([d,0,0,0,f,0,0,0,k,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=5;break;case 4:j=_PyTuple_Pack(2,allocate([d,0,0,0,f,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));a=5;break;case 5:l= -_already_warned(c,j,1);a=k!=0?6:8;break;case 6:HEAP[k]-=1;a=HEAP[k]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);a=8;break;case 8:a=j!=0?9:11;break;case 9:HEAP[j]-=1;a=HEAP[j]==0?10:11;break;case 10:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=11;break;case 11:h=l;a=12;break;case 12:return g=h;default:assert(0,"bad label: "+a)}} -function _show_warning(g,e,b,a,c){var d=STACKTOP;STACKTOP+=128;_memset(d,0,128);var f;for(f=-1;;)switch(f){case -1:var h,j,k,l,m,n,o=d,p;h=g;j=e;k=b;f=a;l=c;_PyOS_snprintf(o,128,__str115571,allocate([j,0,0,0],["i32",0,0,0],ALLOC_STACK));n=_PyObject_GetAttrString(f,__str125572);f=n==0?16:1;break;case 1:m=_PySys_GetObject(__str135573);f=m==0?2:4;break;case 2:_fwrite(__str145574,1,16,HEAP[_stderr]);HEAP[n]-=1;f=HEAP[n]==0?3:16;break;case 3:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);f=16;break;case 4:_PyFile_WriteObject(h, -m,1);_PyFile_WriteString(o,m);_PyFile_WriteObject(n,m,1);_PyFile_WriteString(__str155575,m);_PyFile_WriteObject(k,m,1);_PyFile_WriteString(__str165576,m);f=n!=0?5:7;break;case 5:HEAP[n]-=1;f=HEAP[n]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[n+4]+24]](n);f=7;break;case 7:f=l!=0?8:14;break;case 8:p=l+20;f=10;break;case 9:p+=1;f=10;break;case 10:f=HEAP[p]==32?9:11;break;case 11:f=HEAP[p]==9?9:12;break;case 12:f=HEAP[p]==12?9:13;break;case 13:_PyFile_WriteString(p,m);_PyFile_WriteString(__str165576, -m);f=15;break;case 14:__Py_DisplaySourceLine(m,h+20,j,2);f=15;break;case 15:_PyErr_Clear();f=16;break;case 16:STACKTOP=d;return;default:assert(0,"bad label: "+f)}} -function _warn_explicit(g,e,b,a,c,d,f){var h=STACKTOP;STACKTOP+=4;_memset(h,0,4);var j,k=null;for(j=-1;;)switch(j){case -1:var l,m,n,o,p,q,r,u,s,t,v,w,x=h,y,z,C,A,G,E;l=g;m=e;n=b;o=a;p=c;q=d;r=f;w=v=t=s=0;HEAP[x]=__Py_NoneStruct;j=q!=0?1:4;break;case 1:j=(HEAP[HEAP[q+4]+84]&536870912)==0?2:4;break;case 2:j=q!=__Py_NoneStruct?3:4;break;case 3:_PyErr_SetString(HEAP[_PyExc_TypeError],__str175577);u=0;j=70;break;case 4:j=p==0?5:7;break;case 5:p=_normalize_module(n);j=p==0?6:8;break;case 6:u=0;j=70;break; -case 7:HEAP[p]+=1;j=8;break;case 8:HEAP[m]+=1;z=j=_PyObject_IsInstance(m,HEAP[_PyExc_Warning]);j=j==-1?55:9;break;case 9:var D=m;j=z==1?10:12;break;case 10:t=_PyObject_Str(D);j=t==0?55:11;break;case 11:l=HEAP[m+4];j=13;break;case 12:t=D;m=_PyObject_CallFunction(l,__str15561,allocate([m,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));j=m==0?55:13;break;case 13:w=j=_PyInt_FromLong(o);j=j==0?55:14;break;case 14:s=_PyTuple_Pack(3,allocate([t,0,0,0,l,0,0,0,w,0,0,0],["%struct.NullImporter*",0,0,0, -"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));j=s==0?58:15;break;case 15:j=q!=0&q!=__Py_NoneStruct?16:18;break;case 16:z=_already_warned(q,s,0);j=z==-1?55:17;break;case 17:j=z==1?54:18;break;case 18:y=j=_get_filter(l,t,o,p,x);j=j==0?55:19;break;case 19:j=_strcmp(y,__str185578)==0?20:21;break;case 20:_PyErr_SetObject(l,m);j=55;break;case 21:z=0;j=_strcmp(y,__str195579)!=0?22:41;break;case 22:j=q==0|q==__Py_NoneStruct?24:23;break;case 23:j=_PyDict_SetItem(q,s,__Py_TrueStruct)< -0?55:24;break;case 24:j=_strcmp(y,__str205580)==0?54:25;break;case 25:j=_strcmp(y,__str215581)==0?26:29;break;case 26:j=q==0|q==__Py_NoneStruct?27:28;break;case 27:q=_get_once_registry();j=q==0?55:28;break;case 28:var R=_update_registry(q,t,l);z=R;k=28;j=39;break;case 29:j=_strcmp(y,__str225582)==0?30:32;break;case 30:j=q!=0&q!=__Py_NoneStruct?31:38;break;case 31:var M=_update_registry(q,t,l);z=M;k=31;j=39;break;case 32:j=_strcmp(y,__str235583)!=0?33:38;break;case 33:C=_PyObject_Str(HEAP[x]);A=__str245584; -j=C!=0?34:35;break;case 34:A=C+20;j=35;break;case 35:_PyErr_Format(HEAP[_PyExc_RuntimeError],__str255585,allocate([y,0,0,0,A,0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));j=C!=0?36:55;break;case 36:HEAP[C]-=1;j=HEAP[C]==0?37:55;break;case 37:FUNCTION_TABLE[HEAP[HEAP[C+4]+24]](C);j=55;break;case 38:var L=z,k=38;j=39;break;case 39:j=(k==38?L:k==31?M:R)==1?54:40;break;case 40:j=z==0?41:55;break;case 41:G=j=_get_warnings_attr(__str265586);j=j==0?42:44;break;case 42:j=_PyErr_Occurred()!=0?55:43;break; -case 43:_show_warning(n,o,t,l,r);j=54;break;case 44:j=HEAP[G+4]!=_PyMethod_Type?45:48;break;case 45:j=HEAP[G+4]!=_PyFunction_Type?46:48;break;case 46:_PyErr_SetString(HEAP[_PyExc_TypeError],__str275587);HEAP[G]-=1;j=HEAP[G]==0?47:55;break;case 47:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);j=55;break;case 48:E=_PyObject_CallFunctionObjArgs(G,allocate([m,0,0,0,l,0,0,0,n,0,0,0,w,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*", -0,0,0,"i8*",0,0,0],ALLOC_STACK));HEAP[G]-=1;j=HEAP[G]==0?49:50;break;case 49:FUNCTION_TABLE[HEAP[HEAP[G+4]+24]](G);j=50;break;case 50:j=E!=0?51:55;break;case 51:HEAP[E]-=1;var I=E;HEAP[I]==0?(k=51,j=52):(k=51,j=53);break;case 52:FUNCTION_TABLE[HEAP[HEAP[E+4]+24]](E);var J=E,k=52;j=53;break;case 53:j=(k==52?J:I)==0?55:54;break;case 54:v=__Py_NoneStruct;HEAP[v]+=1;j=55;break;case 55:j=s!=0?56:58;break;case 56:HEAP[s]-=1;j=HEAP[s]==0?57:58;break;case 57:FUNCTION_TABLE[HEAP[HEAP[s+4]+24]](s);j=58;break; -case 58:j=t!=0?59:61;break;case 59:HEAP[t]-=1;j=HEAP[t]==0?60:61;break;case 60:FUNCTION_TABLE[HEAP[HEAP[t+4]+24]](t);j=61;break;case 61:j=w!=0?62:64;break;case 62:HEAP[w]-=1;j=HEAP[w]==0?63:64;break;case 63:FUNCTION_TABLE[HEAP[HEAP[w+4]+24]](w);j=64;break;case 64:HEAP[p]-=1;j=HEAP[p]==0?65:66;break;case 65:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);j=66;break;case 66:j=m!=0?67:69;break;case 67:HEAP[m]-=1;j=HEAP[m]==0?68:69;break;case 68:FUNCTION_TABLE[HEAP[HEAP[m+4]+24]](m);j=69;break;case 69:u=v;j=70; -break;case 70:return g=u,STACKTOP=h,g;default:assert(0,"bad label: "+j)}} -function _setup_context(g,e,b,a,c){var d,f=null;for(d=-1;;)switch(d){case -1:var h,j,k,l,m,n,o,p,q,r,u,s,t;h=g;j=e;k=b;l=a;m=c;var v=HEAP[HEAP[__PyThreadState_Current]+8];p=v;f=-1;d=2;break;case 1:var w=HEAP[p+12];p=w;f=1;d=2;break;case 2:var x=f==1?w:v;h=d=h-1;d=d<=0?4:3;break;case 3:d=x!=0?1:5;break;case 4:d=x==0?5:6;break;case 5:o=_PyThreadState_Get();o=HEAP[HEAP[o+4]+12];HEAP[k]=1;d=7;break;case 6:o=HEAP[p+24];d=_PyFrame_GetLineNumber(p);HEAP[k]=d;d=7;break;case 7:HEAP[l]=0;d=_PyDict_GetItemString(o, -__str285588);HEAP[m]=d;d=HEAP[m]==0?8:11;break;case 8:d=_PyDict_New();HEAP[m]=d;d=HEAP[m]==0?9:10;break;case 9:n=0;d=50;break;case 10:d=_PyDict_SetItemString(o,__str285588,HEAP[m]);d=d<0?43:12;break;case 11:HEAP[HEAP[m]]+=1;d=12;break;case 12:d=_PyDict_GetItemString(o,__str125572);HEAP[l]=d;d=HEAP[l]==0?13:14;break;case 13:d=_PyString_FromString(__str295589);HEAP[l]=d;d=HEAP[l]==0?43:15;break;case 14:HEAP[HEAP[l]]+=1;d=15;break;case 15:d=_PyDict_GetItemString(o,__str305590);HEAP[j]=d;d=HEAP[j]!=0? -16:28;break;case 16:q=_PyString_Size(HEAP[j]);r=_PyString_AsString(HEAP[j]);d=r==0?43:17;break;case 17:var y=q;y>=0?(f=17,d=20):(f=17,d=18);break;case 18:d=_PyErr_Occurred()!=0?43:19;break;case 19:var z=q,f=19;d=20;break;case 20:d=(f==19?z:y)<=3?27:21;break;case 21:d=HEAP[r+(q-4)]!=46?27:22;break;case 22:d=_tolower(HEAP[r+(q-3)])!=112?27:23;break;case 23:d=_tolower(HEAP[r+(q-2)])!=121?27:24;break;case 24:d=_tolower(HEAP[r+(q-1)])==99?26:25;break;case 25:d=_tolower(HEAP[r+(q-1)])==111?26:27;break; -case 26:d=_PyString_FromStringAndSize(r,q-1);HEAP[j]=d;d=HEAP[j]==0?43:42;break;case 27:HEAP[HEAP[j]]+=1;d=42;break;case 28:u=_PyString_AsString(HEAP[l]);d=u!=0?29:40;break;case 29:d=_strcmp(u,__str315591)==0?30:40;break;case 30:s=_PySys_GetObject(__str325592);d=s==0?39:31;break;case 31:d=_PyList_Size(s)<=0?39:32;break;case 32:t=_PyList_GetItem(s,0);HEAP[j]=t;HEAP[HEAP[j]]+=1;t=_PyObject_IsTrue(HEAP[j]);d=t<0?33:35;break;case 33:d=HEAP[j];HEAP[d]-=1;d=HEAP[d]==0?34:43;break;case 34:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+ -4]+24]](HEAP[j]);d=43;break;case 35:d=t==0?36:40;break;case 36:d=HEAP[j];HEAP[d]-=1;d=HEAP[d]==0?37:38;break;case 37:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);d=38;break;case 38:d=_PyString_FromString(__str315591);HEAP[j]=d;d=HEAP[j]==0?43:40;break;case 39:d=_PyString_FromString(__str315591);HEAP[j]=d;d=HEAP[j]==0?43:40;break;case 40:d=HEAP[j]==0?41:42;break;case 41:HEAP[j]=HEAP[l];HEAP[HEAP[j]]+=1;d=42;break;case 42:n=1;d=50;break;case 43:d=HEAP[m]!=0?44:46;break;case 44:d=HEAP[m];HEAP[d]-= -1;d=HEAP[d]==0?45:46;break;case 45:FUNCTION_TABLE[HEAP[HEAP[HEAP[m]+4]+24]](HEAP[m]);d=46;break;case 46:d=HEAP[l]!=0?47:49;break;case 47:d=HEAP[l];HEAP[d]-=1;d=HEAP[d]==0?48:49;break;case 48:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);d=49;break;case 49:n=0;d=50;break;case 50:return g=n;default:assert(0,"bad label: "+d)}} -function _get_category(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=_PyObject_IsInstance(a,HEAP[_PyExc_Warning]);b=f==-1?1:2;break;case 1:d=0;b=11;break;case 2:b=f==1?3:4;break;case 3:c=HEAP[a+4];b=6;break;case 4:b=c==0?5:6;break;case 5:c=HEAP[_PyExc_UserWarning];b=6;break;case 6:f=b=_PyObject_IsSubclass(c,HEAP[_PyExc_Warning]);b=b==-1?7:8;break;case 7:d=0;b=11;break;case 8:b=f==0?9:10;break;case 9:_PyErr_SetString(HEAP[_PyExc_ValueError],__str335593);d=0;b=11;break;case 10:d=c;b= -11;break;case 11:return a=d;default:assert(0,"bad label: "+b)}} -function _do_warn(g,e,b){var a=STACKTOP;STACKTOP+=16;_memset(a,0,16);var c;for(c=-1;;)switch(c){case -1:var d,f,h,j=a,k=a+4,l=a+8,m,n=a+12;d=g;f=e;c=_setup_context(b,j,n,k,l)==0?1:2;break;case 1:h=0;c=9;break;case 2:m=_warn_explicit(f,d,HEAP[j],HEAP[n],HEAP[k],HEAP[l],0);c=HEAP[j];HEAP[c]-=1;c=HEAP[c]==0?3:4;break;case 3:FUNCTION_TABLE[HEAP[HEAP[HEAP[j]+4]+24]](HEAP[j]);c=4;break;case 4:c=HEAP[l];HEAP[c]-=1;c=HEAP[c]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[l]+4]+24]](HEAP[l]);c=6;break; -case 6:c=HEAP[k];HEAP[c]-=1;c=HEAP[c]==0?7:8;break;case 7:FUNCTION_TABLE[HEAP[HEAP[HEAP[k]+4]+24]](HEAP[k]);c=8;break;case 8:h=m;c=9;break;case 9:return g=h,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _warnings_warn(g,e,b){g=STACKTOP;STACKTOP+=12;_memset(g,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4,j=g+8;a=e;c=b;HEAP[h]=0;HEAP[j]=1;a=_PyArg_ParseTupleAndKeywords(a,c,__str345594,_kw_list_9139,allocate([f,0,0,0,h,0,0,0,j,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=5;break;case 2:a=_get_category(HEAP[f],HEAP[h]);HEAP[h]=a;a=HEAP[h]==0?3:4;break;case 3:d=0;a=5;break;case 4:d=_do_warn(HEAP[f],HEAP[h], -HEAP[j]);a=5;break;case 5:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _warnings_warn_explicit(g,e,b){g=STACKTOP;STACKTOP+=28;_memset(g,0,28);var a;for(a=-1;;)switch(a){case -1:var c,d,f=g,h=g+4,j=g+8,k=g+12,l=g+16,m=g+20,n=g+24,o,p,q,r,u,s;a=e;c=b;HEAP[l]=0;HEAP[m]=0;HEAP[n]=0;a=_PyArg_ParseTupleAndKeywords(a,c,__str385598,_kwd_list_9163,allocate([f,0,0,0,h,0,0,0,j,0,0,0,k,0,0,0,l,0,0,0,m,0,0,0,n,0,0,0],["%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**",0,0,0,"i32*",0,0,0,"%struct.NullImporter**",0,0,0,"%struct.NullImporter**", -0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=29;break;case 2:a=HEAP[n]!=0?3:28;break;case 3:a=HEAP[_get_source_name_9171]==0?4:6;break;case 4:a=_PyString_InternFromString(__str435603);HEAP[_get_source_name_9171]=a;a=HEAP[_get_source_name_9171]==0?5:6;break;case 5:d=0;a=29;break;case 6:a=HEAP[_splitlines_name_9172]==0?7:9;break;case 7:a=_PyString_InternFromString(__str445604);HEAP[_splitlines_name_9172]=a;a=HEAP[_splitlines_name_9172]==0?8:9;break;case 8:d=0;a=29;break; -case 9:o=_PyDict_GetItemString(HEAP[n],__str455605);p=_PyDict_GetItemString(HEAP[n],__str125572);a=o==0?28:10;break;case 10:a=p==0?28:11;break;case 11:a=_PyObject_HasAttrString(o,__str435603)==0?28:12;break;case 12:q=_PyObject_CallMethodObjArgs(o,HEAP[_get_source_name_9171],allocate([p,0,0,0,0,0,0,0],["%struct.NullImporter*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=q==0?13:14;break;case 13:d=0;a=29;break;case 14:a=q==__Py_NoneStruct?15:17;break;case 15:HEAP[__Py_NoneStruct]-=1;a=HEAP[__Py_NoneStruct]== -0?16:28;break;case 16:FUNCTION_TABLE[HEAP[HEAP[__Py_NoneStruct+4]+24]](__Py_NoneStruct);a=28;break;case 17:r=_PyObject_CallMethodObjArgs(q,HEAP[_splitlines_name_9172],allocate(4,"i8*",ALLOC_STACK));HEAP[q]-=1;a=HEAP[q]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);a=19;break;case 19:a=r==0?20:21;break;case 20:d=0;a=29;break;case 21:u=_PyList_GetItem(r,HEAP[k]-1);a=u==0?22:25;break;case 22:HEAP[r]-=1;a=HEAP[r]==0?23:24;break;case 23:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=24;break;case 24:d= -0;a=29;break;case 25:s=_warn_explicit(HEAP[h],HEAP[f],HEAP[j],HEAP[k],HEAP[l],HEAP[m],u);HEAP[r]-=1;a=HEAP[r]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[r+4]+24]](r);a=27;break;case 27:d=s;a=29;break;case 28:d=_warn_explicit(HEAP[h],HEAP[f],HEAP[j],HEAP[k],HEAP[l],HEAP[m],0);a=29;break;case 29:return e=d,STACKTOP=g,e;default:assert(0,"bad label: "+a)}} -function _PyErr_WarnEx(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;c=g;a=e;d=b;j=_PyString_FromString(a);a=j==0?1:2;break;case 1:f=-1;a=11;break;case 2:a=c==0?3:4;break;case 3:c=HEAP[_PyExc_RuntimeWarning];a=4;break;case 4:h=_do_warn(j,c,d);HEAP[j]-=1;a=HEAP[j]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=6;break;case 6:a=h==0?7:8;break;case 7:f=-1;a=11;break;case 8:HEAP[h]-=1;a=HEAP[h]==0?9:10;break;case 9:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=10;break;case 10:f=0;a= -11;break;case 11:return g=f;default:assert(0,"bad label: "+a)}}function _PyErr_Warn(g,e){return _PyErr_WarnEx(g,e,1)} -function _PyErr_WarnExplicit(g,e,b,a,c,d){var f,h=null;for(f=-1;;)switch(f){case -1:var j,k,l,m,n,o,p,q,r;j=g;k=e;h=b;l=a;m=c;n=d;k=_PyString_FromString(k);var u=_PyString_FromString(h);p=u;q=0;r=-1;k==0?(h=-1,f=17):(h=-1,f=1);break;case 1:f=p==0?10:2;break;case 2:f=m!=0?3:4;break;case 3:q=_PyString_FromString(m);f=q==0?10:4;break;case 4:f=j==0?5:6;break;case 5:j=HEAP[_PyExc_RuntimeWarning];f=6;break;case 6:o=f=_warn_explicit(j,k,p,l,q,n,0);f=f==0?10:7;break;case 7:HEAP[o]-=1;f=HEAP[o]==0?8:9;break; -case 8:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);f=9;break;case 9:r=0;f=10;break;case 10:f=k!=0?11:13;break;case 11:HEAP[k]-=1;f=HEAP[k]==0?12:13;break;case 12:FUNCTION_TABLE[HEAP[HEAP[k+4]+24]](k);f=13;break;case 13:f=q!=0?14:16;break;case 14:HEAP[q]-=1;f=HEAP[q]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);f=16;break;case 16:var s=p,h=16;f=17;break;case 17:f=(h==16?s:u)!=0?18:20;break;case 18:HEAP[p]-=1;f=HEAP[p]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);f=20;break; -case 20:return g=r;default:assert(0,"bad label: "+f)}} -function _create_filter(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j;a=g;c=e;f=0;b=_strcmp(c,__str205580)==0?1:5;break;case 1:b=HEAP[_ignore_str_9375]==0?2:4;break;case 2:b=_PyString_InternFromString(__str205580);HEAP[_ignore_str_9375]=b;b=HEAP[_ignore_str_9375]==0?3:4;break;case 3:d=0;b=21;break;case 4:f=HEAP[_ignore_str_9375];b=16;break;case 5:b=_strcmp(c,__str185578)==0?6:10;break;case 6:b=HEAP[_error_str_9376]==0?7:9;break;case 7:b=_PyString_InternFromString(__str185578);HEAP[_error_str_9376]= -b;b=HEAP[_error_str_9376]==0?8:9;break;case 8:d=0;b=21;break;case 9:f=HEAP[_error_str_9376];b=16;break;case 10:b=_strcmp(c,__str235583)==0?11:15;break;case 11:b=HEAP[_default_str_9377]==0?12:14;break;case 12:b=_PyString_InternFromString(__str235583);HEAP[_default_str_9377]=b;b=HEAP[_default_str_9377]==0?13:14;break;case 13:d=0;b=21;break;case 14:f=HEAP[_default_str_9377];b=16;break;case 15:throw _Py_FatalError(__str485608),"Reached an unreachable!";case 16:h=b=_PyInt_FromLong(0);b=b==0?17:18;break; -case 17:d=0;b=21;break;case 18:j=_PyTuple_Pack(5,allocate([f,0,0,0,__Py_NoneStruct,0,0,0,a,0,0,0,__Py_NoneStruct,0,0,0,h,0,0,0],["%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0,"%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[h]-=1;b=HEAP[h]==0?19:20;break;case 19:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);b=20;break;case 20:d=j;b=21;break;case 21:return a=d;default:assert(0,"bad label: "+b)}} -function _init_filters(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f;g=HEAP[_Py_Py3kWarningFlag]!=0|HEAP[_Py_DivisionWarningFlag]!=0?1:2;break;case 1:g=b=3;break;case 2:b=4;g=3;break;case 3:a=g=_PyList_New(b);c=0;g=g==0?4:5;break;case 4:e=0;g=20;break;case 5:g=HEAP[_Py_Py3kWarningFlag]==0&HEAP[_Py_DivisionWarningFlag]==0?6:7;break;case 6:g=HEAP[a+12];var h=_create_filter(HEAP[_PyExc_DeprecationWarning],__str205580);HEAP[g+4*c]=h;c+=1;g=7;break;case 7:g=HEAP[a+12];h=_create_filter(HEAP[_PyExc_PendingDeprecationWarning], -__str205580);HEAP[g+4*c]=h;c+=1;g=HEAP[a+12];h=_create_filter(HEAP[_PyExc_ImportWarning],__str205580);HEAP[g+4*c]=h;c+=1;g=HEAP[_Py_BytesWarningFlag]>1?8:9;break;case 8:f=__str185578;g=12;break;case 9:g=HEAP[_Py_BytesWarningFlag]!=0?10:11;break;case 10:f=__str235583;g=12;break;case 11:f=__str205580;g=12;break;case 12:d=HEAP[a+12];g=_create_filter(HEAP[_PyExc_BytesWarning],f);HEAP[d+4*c]=g;c+=1;d=0;g=18;break;case 13:g=HEAP[HEAP[j+12]+4*d]==0?14:17;break;case 14:HEAP[a]-=1;g=HEAP[a]==0?15:16;break; -case 15:FUNCTION_TABLE[HEAP[HEAP[a+4]+24]](a);g=16;break;case 16:e=0;g=20;break;case 17:d+=1;g=18;break;case 18:var j=a;g=d0?16:17;break;case 16:_handle_callback(f,n);b=17;break;case 17:HEAP[n]-=1;b=HEAP[n]==0?18:34;break;case 18:FUNCTION_TABLE[HEAP[HEAP[n+ -4]+24]](n);b=34;break;case 19:p=0;o=_PyTuple_New(h*2);b=o==0?20:22;break;case 20:b=j!=0?21:36;break;case 21:_PyErr_Fetch(k,l,m);b=36;break;case 22:p=0;b=p0?24:25;break;case 24:HEAP[u]+=1;HEAP[o+12+p*8]=f;HEAP[o+12+(p*2+1)*4]=HEAP[f+12];b=27;break;case 25:b=HEAP[u+12];HEAP[b]-=1;b=HEAP[b]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[HEAP[f+12]+4]+24]](HEAP[f+12]);b=27;break;case 27:HEAP[f+12]=0;_clear_weakref(f);f=q;p+=1;b=p=0?3:8;break;case 8:d=_clock();d=_PyFloat_FromDouble((d-k)/1E6);a=9;break;case 9:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _initxxsubtype(){var g;for(g=-1;;)switch(g){case -1:var e;HEAP[_spamdict_type+128]=_PyDict_Type;g=_PyType_Ready(_spamdict_type)<0?7:1;break;case 1:HEAP[_spamlist_type+128]=_PyList_Type;g=_PyType_Ready(_spamlist_type)<0?7:2;break;case 2:e=_Py_InitModule4(__str165676,_xxsubtype_functions,_xxsubtype__doc__,0,1013);g=e==0?7:3;break;case 3:g=_PyType_Ready(_spamlist_type)<0?7:4;break;case 4:g=_PyType_Ready(_spamdict_type)<0?7:5;break;case 5:HEAP[_spamlist_type]+=1;g=_PyModule_AddObject(e,__str175677, -_spamlist_type)<0?7:6;break;case 6:HEAP[_spamdict_type]+=1;_PyModule_AddObject(e,__str185678,_spamdict_type);g=7;break;case 7:return;default:assert(0,"bad label: "+g)}} -function _zipimporter_init(g,e,b){var a=STACKTOP;STACKTOP+=4198;_memset(a,0,4198);var c,d=null;for(c=-1;;)switch(c){case -1:var f,h,j,k=a,l,m,n=a+4,o,p=a+4102,q;f=g;h=e;c=__PyArg_NoKeywords(__str5680,b)==0?1:2;break;case 1:j=-1;c=34;break;case 2:c=_PyArg_ParseTuple(h,__str15681,allocate([k,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?3:4;break;case 3:j=-1;c=34;break;case 4:o=_strlen(HEAP[k]);c=o==0?5:6;break;case 5:_PyErr_SetString(HEAP[_ZipImportError],__str25682);j=-1;c=34;break;case 6:c=o>4095?7:8;break; -case 7:_PyErr_SetString(HEAP[_ZipImportError],__str35683);j=-1;c=34;break;case 8:_strcpy(n,HEAP[k]);m=HEAP[k]=0;var r=n,u=n;c=9;break;case 9:c=___01stat64_(r,p)==0?10:12;break;case 10:c=(HEAP[p+16]&61440)==32768?11:16;break;case 11:var s=n;HEAP[k]=s;d=11;c=17;break;case 12:var t=_strrchr(u,47);l=t;m!=0?(d=12,c=13):(d=12,c=14);break;case 13:HEAP[m]=47;var v=l,d=13;c=14;break;case 14:c=(d==13?v:t)==0?16:15;break;case 15:HEAP[l]=0;m=l;c=9;break;case 16:var w=HEAP[k],d=16;c=17;break;case 17:c=(d==16? -w:s)!=0?18:25;break;case 18:q=_PyDict_GetItemString(HEAP[_zip_directory_cache],HEAP[k]);c=q==0?19:23;break;case 19:q=_read_directory(n);c=q==0?20:21;break;case 20:j=-1;c=34;break;case 21:c=_PyDict_SetItemString(HEAP[_zip_directory_cache],HEAP[k],q)!=0?22:24;break;case 22:j=-1;c=34;break;case 23:HEAP[q]+=1;c=24;break;case 24:HEAP[f+16]=q;c=m==0?26:27;break;case 25:_PyErr_SetString(HEAP[_ZipImportError],__str45684);j=-1;c=34;break;case 26:m=__str55685;c=29;break;case 27:m+=1;o=_strlen(m);c=HEAP[m+(o- -1)]!=47?28:29;break;case 28:HEAP[m+o]=47;HEAP[m+(o+1)]=0;c=29;break;case 29:c=_PyString_FromString(n);HEAP[f+8]=c;c=HEAP[f+8]==0?30:31;break;case 30:j=-1;c=34;break;case 31:c=_PyString_FromString(m);HEAP[f+12]=c;c=HEAP[f+12]==0?32:33;break;case 32:j=-1;c=34;break;case 33:j=0;c=34;break;case 34:return g=j,STACKTOP=a,g;default:assert(0,"bad label: "+c)}} -function _zipimporter_traverse(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j;a=g;c=e;d=b;h=a;a=HEAP[h+16]!=0?1:3;break;case 1:j=FUNCTION_TABLE[c](HEAP[h+16],d);a=j!=0?2:3;break;case 2:f=j;a=4;break;case 3:f=0;a=4;break;case 4:return g=f;default:assert(0,"bad label: "+a)}} -function _zipimporter_dealloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;_PyObject_GC_UnTrack(b);e=HEAP[b+8]!=0?1:3;break;case 1:e=HEAP[b+8];HEAP[e]-=1;e=HEAP[e]==0?2:3;break;case 2:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+8]+4]+24]](HEAP[b+8]);e=3;break;case 3:e=HEAP[b+12]!=0?4:6;break;case 4:e=HEAP[b+12];HEAP[e]-=1;e=HEAP[e]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+12]+4]+24]](HEAP[b+12]);e=6;break;case 6:e=HEAP[b+16]!=0?7:9;break;case 7:e=HEAP[b+16];HEAP[e]-=1;e=HEAP[e]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[HEAP[b+ -16]+4]+24]](HEAP[b+16]);e=9;break;case 9:FUNCTION_TABLE[HEAP[HEAP[b+4]+160]](b);return;default:assert(0,"bad label: "+e)}} -function _zipimporter_repr(g){var e=STACKTOP;STACKTOP+=500;_memset(e,0,500);var b,a=null;for(b=-1;;)switch(b){case -1:var c,d=e,f,h;c=g;f=__str65686;h=__str55685;b=HEAP[c+8]!=0?1:3;break;case 1:b=(HEAP[HEAP[HEAP[c+8]+4]+84]&134217728)!=0?2:3;break;case 2:f=_PyString_AsString(HEAP[c+8]);b=3;break;case 3:b=HEAP[c+12]!=0?4:6;break;case 4:b=(HEAP[HEAP[HEAP[c+12]+4]+84]&134217728)!=0?5:6;break;case 5:var j=_PyString_AsString(HEAP[c+12]);h=j;a=5;b=7;break;case 6:var k=h,a=6;b=7;break;case 7:b=(a==6?k:j)== -0?10:8;break;case 8:b=HEAP[h]==0?10:9;break;case 9:_PyOS_snprintf(d,500,__str75687,allocate([f,0,0,0,47,0,0,0,h,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));b=11;break;case 10:_PyOS_snprintf(d,500,__str85688,allocate([f,0,0,0],["i8*",0,0,0],ALLOC_STACK));b=11;break;case 11:return g=_PyString_FromString(d),STACKTOP=e,g;default:assert(0,"bad label: "+b)}} -function _get_subname(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=_strrchr(b,46);e=a==0?1:2;break;case 1:a=b;e=3;break;case 2:a+=1;e=3;break;case 3:return g=a;default:assert(0,"bad label: "+e)}} -function _make_filename(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k;c=g;d=e;f=b;j=_strlen(c);a=_strlen(d)+13+j>4095?1:2;break;case 1:_PyErr_SetString(HEAP[_ZipImportError],__str95689);h=-1;a=7;break;case 2:_strcpy(f,c);_strcpy(f+j,d);k=f+j;a=HEAP[k]!=0?3:6;break;case 3:a=HEAP[k]==46?4:5;break;case 4:HEAP[k]=47;a=5;break;case 5:k+=1;a=HEAP[k]!=0?3:6;break;case 6:a=_strlen(d);j+=a;h=j;a=7;break;case 7:return g=h;default:assert(0,"bad label: "+a)}} -function _get_module_info(g,e){var b=STACKTOP;STACKTOP+=4097;_memset(b,0,4097);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j;c=g;f=_get_subname(e);a=_PyString_AsString(HEAP[c+12]);f=_make_filename(a,f,h);a=f<0?1:2;break;case 1:d=0;a=10;break;case 2:j=_zip_searchorder;var k=h,l=h;a=8;break;case 3:_strcpy(k+f,j);a=_PyDict_GetItemString(HEAP[c+16],l);var m=j;a=a!=0?4:7;break;case 4:a=(HEAP[m+16]&2)!=0?5:6;break;case 5:d=3;a=10;break;case 6:d=2;a=10;break;case 7:j=m+20;a=8;break;case 8:a=HEAP[j]!= -0?3:9;break;case 9:d=1;a=10;break;case 10:return c=d,STACKTOP=b,c;default:assert(0,"bad label: "+a)}} -function _zipimporter_find_module(g,e){var b=STACKTOP;STACKTOP+=8;_memset(b,0,8);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h=b+4,j;c=g;a=e;HEAP[f]=0;a=_PyArg_ParseTuple(a,__str105690,allocate([h,0,0,0,f,0,0,0],["i8**",0,0,0,"%struct.NullImporter**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:j=_get_module_info(c,HEAP[h]);a=j==0?3:4;break;case 3:d=0;a=7;break;case 4:a=j==1?5:6;break;case 5:HEAP[__Py_NoneStruct]+=1;d=__Py_NoneStruct;a=7;break;case 6:HEAP[c]+=1;d=c;a=7;break;case 7:return STACKTOP= -b,d;default:assert(0,"bad label: "+a)}} -function _zipimporter_load_module(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l=b,m=b+4,n=b+8,o,p,q,r,u;c=g;a=e;a=_PyArg_ParseTuple(a,__str115691,allocate([l,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=30;break;case 2:h=_get_module_code(c,HEAP[l],n,m);a=h==0?3:4;break;case 3:f=0;a=30;break;case 4:j=_PyImport_AddModule(HEAP[l]);a=j==0?5:8;break;case 5:HEAP[h]-=1;a=HEAP[h]==0?6:7;break;case 6:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h); -a=7;break;case 7:f=0;a=30;break;case 8:k=_PyModule_GetDict(j);a=_PyDict_SetItemString(k,__str125692,c)!=0?25:9;break;case 9:a=HEAP[n]!=0?10:20;break;case 10:q=_PyString_AsString(HEAP[c+12]);r=_get_subname(HEAP[l]);a=HEAP[q]!=0?11:12;break;case 11:d=q;a=13;break;case 12:d=__str55685;a=13;break;case 13:p=_PyString_AsString(HEAP[c+8]);p=a=_PyString_FromFormat(__str135693,allocate([p,0,0,0,47,0,0,0,d,0,0,0,r,0,0,0],["i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=a==0?25:14;break;case 14:o= -_Py_BuildValue(__str145694,allocate([p,0,0,0],["%struct.NullImporter*",0,0,0],ALLOC_STACK));HEAP[p]-=1;a=HEAP[p]==0?15:16;break;case 15:FUNCTION_TABLE[HEAP[HEAP[p+4]+24]](p);a=16;break;case 16:a=o==0?25:17;break;case 17:u=_PyDict_SetItemString(k,__str155695,o);HEAP[o]-=1;a=HEAP[o]==0?18:19;break;case 18:FUNCTION_TABLE[HEAP[HEAP[o+4]+24]](o);a=19;break;case 19:a=u!=0?25:20;break;case 20:j=_PyImport_ExecCodeModuleEx(HEAP[l],h,HEAP[m]);HEAP[h]-=1;a=HEAP[h]==0?21:22;break;case 21:FUNCTION_TABLE[HEAP[HEAP[h+ -4]+24]](h);a=22;break;case 22:a=HEAP[_Py_VerboseFlag]!=0?23:24;break;case 23:_PySys_WriteStderr(__str165696,allocate([HEAP[l],0,0,0,HEAP[m],0,0,0],["i8*",0,0,0,"i8*",0,0,0],ALLOC_STACK));a=24;break;case 24:f=j;a=30;break;case 25:HEAP[h]-=1;a=HEAP[h]==0?26:27;break;case 26:FUNCTION_TABLE[HEAP[HEAP[h+4]+24]](h);a=27;break;case 27:HEAP[j]-=1;a=HEAP[j]==0?28:29;break;case 28:FUNCTION_TABLE[HEAP[HEAP[j+4]+24]](j);a=29;break;case 29:f=0;a=30;break;case 30:return d=f,STACKTOP=b,d;default:assert(0,"bad label: "+ -a)}} -function _zipimporter_get_filename(g,e){var b=STACKTOP;STACKTOP+=12;_memset(b,0,12);var a;for(a=-1;;)switch(a){case -1:var c,d,f,h=b,j=b+4,k=b+8;c=g;a=e;a=_PyArg_ParseTuple(a,__str175697,allocate([h,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:f=_get_module_code(c,HEAP[h],k,j);a=f==0?3:4;break;case 3:d=0;a=7;break;case 4:HEAP[f]-=1;a=HEAP[f]==0?5:6;break;case 5:FUNCTION_TABLE[HEAP[HEAP[f+4]+24]](f);a=6;break;case 6:d=_PyString_FromString(HEAP[j]);a=7;break;case 7:return STACKTOP=b, -d;default:assert(0,"bad label: "+a)}} -function _zipimporter_is_package(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f=b,h;c=g;a=e;a=_PyArg_ParseTuple(a,__str185698,allocate([f,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:d=0;a=7;break;case 2:h=_get_module_info(c,HEAP[f]);a=h==0?3:4;break;case 3:d=0;a=7;break;case 4:a=h==1?5:6;break;case 5:_PyErr_Format(HEAP[_ZipImportError],__str195699,allocate([HEAP[f],0,0,0],["i8*",0,0,0],ALLOC_STACK));d=0;a=7;break;case 6:d=_PyBool_FromLong(h== -3);a=7;break;case 7:return STACKTOP=b,d;default:assert(0,"bad label: "+a)}} -function _zipimporter_get_data(g,e){var b=STACKTOP;STACKTOP+=4;_memset(b,0,4);var a;for(a=-1;;)switch(a){case -1:var c,d,f;d=b;var h,j;c=g;a=e;a=_PyArg_ParseTuple(a,__str205700,allocate([d,0,0,0],["i8**",0,0,0],ALLOC_STACK))==0?1:2;break;case 1:f=0;a=9;break;case 2:a=j=_PyString_Size(HEAP[c+8]);var k=_strlen(HEAP[d]);a=a4096?1:2;break;case 1:_PyErr_SetString(HEAP[_PyExc_OverflowError],__str365718);c=0;b=29;break;case 2:_strcpy(w,a);f=___01fopen64_(a,__str375719);b=f==0?3:4;break;case 3:_PyErr_Format(HEAP[_ZipImportError],__str385720,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;b=29;break;case 4:_fseek(f,-22, -2);u=_ftell(f);b=_fread(z,1,22,f)!=22?5:6;break;case 5:_fclose(f);_PyErr_Format(HEAP[_ZipImportError],__str395721,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;b=29;break;case 6:b=_get_long(z)!=101010256?7:8;break;case 7:_fclose(f);_PyErr_Format(HEAP[_ZipImportError],__str405722,allocate([a,0,0,0],["i8*",0,0,0],ALLOC_STACK));c=0;b=29;break;case 8:r=_get_long(z+12);p=_get_long(z+16);C=0-p+u+(0-r);p=C+p;d=_PyDict_New();b=d==0?25:9;break;case 9:v=_strlen(w);HEAP[w+v]=47;t=0;var E=x,D=w,R=x,M=w, -L=x;b=10;break;case 10:_fseek(f,p,0);b=_PyMarshal_ReadLongFromFile(f)!=33639248?22:11;break;case 11:_fseek(f,p+10,0);h=_PyMarshal_ReadShortFromFile(f);o=_PyMarshal_ReadShortFromFile(f);n=_PyMarshal_ReadShortFromFile(f);j=_PyMarshal_ReadLongFromFile(f);k=_PyMarshal_ReadLongFromFile(f);l=_PyMarshal_ReadLongFromFile(f);r=q=_PyMarshal_ReadShortFromFile(f);m=_PyMarshal_ReadShortFromFile(f);b=_PyMarshal_ReadShortFromFile(f);r=r+46+m+b;_fseek(f,p+42,0);m=_PyMarshal_ReadLongFromFile(f);m=C+m;b=q>4096?12: -13;break;case 12:q=4096;b=13;break;case 13:y=E;s=0;b=s>5&63;HEAP[b+8]=g>>11&31;HEAP[b+12]=e&31;HEAP[b+16]=(e>>5&15)-1;HEAP[b+20]=(e>>9&127)+80;HEAP[b+32]=-1;var a=_mktime(b);STACKTOP=b;return a} -function _get_mtime_of_source(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;d=0;f=_strlen(c)-1;h=HEAP[c+f];HEAP[c+f]=0;a=_PyDict_GetItemString(HEAP[a+16],c);b=a!=0?1:4;break;case 1:b=(HEAP[HEAP[a+4]+84]&67108864)!=0?2:4;break;case 2:b=_PyTuple_Size(a)==8?3:4;break;case 3:d=_PyTuple_GetItem(a,5);d=_PyInt_AsLong(d);b=_PyTuple_GetItem(a,6);b=_PyInt_AsLong(b);d=_parse_dostime(d,b);b=4;break;case 4:return HEAP[c+f]=h,c=d;default:assert(0,"bad label: "+b)}} -function _get_code_from_data(g,e,b,a,c){for(e=-1;;)switch(e){case -1:var d,f,h,j,k,l,m,n;d=g;f=b;h=a;j=c;d=_PyString_AsString(HEAP[d+8]);e=d==0?1:2;break;case 1:k=0;e=10;break;case 2:l=_get_data(d,j);e=l==0?3:4;break;case 3:k=0;e=10;break;case 4:n=_PyTuple_GetItem(j,0);n=_PyString_AsString(n);var o=l,e=f!=0?5:6;break;case 5:m=_unmarshal_code(n,o,h);e=7;break;case 6:m=_compile_source(n,o);e=7;break;case 7:HEAP[l]-=1;e=HEAP[l]==0?8:9;break;case 8:FUNCTION_TABLE[HEAP[HEAP[l+4]+24]](l);e=9;break;case 9:k= -m;e=10;break;case 10:return g=k;default:assert(0,"bad label: "+e)}} -function _get_module_code(g,e,b,a){var c=STACKTOP;STACKTOP+=4097;_memset(c,0,4097);var d;for(d=-1;;)switch(d){case -1:var f,h,j,k,l,m,n,o=c,p,q,r,u,s;f=g;h=e;j=b;k=a;n=_get_subname(h);d=_PyString_AsString(HEAP[f+12]);n=_make_filename(d,n,o);d=n<0?1:2;break;case 1:l=0;d=20;break;case 2:p=_zip_searchorder;var t=o,v=o,w=o,x=o;d=18;break;case 3:q=0;_strcpy(t+n,p);d=HEAP[_Py_VerboseFlag]>1?4:5;break;case 4:d=_PyString_AsString(HEAP[f+8]);_PySys_WriteStderr(__str595741,allocate([d,0,0,0,47,0,0,0,v,0,0, -0],["i8*",0,0,0,"i32",0,0,0,"i8*",0,0,0],ALLOC_STACK));d=5;break;case 5:m=d=_PyDict_GetItemString(HEAP[f+16],w);d=d!=0?6:17;break;case 6:r=0;u=HEAP[p+16]&2;s=HEAP[p+16]&1;d=s!=0?7:8;break;case 7:r=_get_mtime_of_source(f,x);d=8;break;case 8:d=j!=0?9:10;break;case 9:HEAP[j]=u;d=10;break;case 10:var y=_get_code_from_data(f,u,s,r,m);q=y;d=y==__Py_NoneStruct?11:13;break;case 11:HEAP[q]=HEAP[y]-1;d=HEAP[q]==0?12:17;break;case 12:FUNCTION_TABLE[HEAP[HEAP[q+4]+24]](q);d=17;break;case 13:d=y!=0?14:16;break; -case 14:d=k!=0?15:16;break;case 15:d=_PyTuple_GetItem(m,0);d=_PyString_AsString(d);HEAP[k]=d;d=16;break;case 16:l=q;d=20;break;case 17:p+=20;d=18;break;case 18:d=HEAP[p]!=0?3:19;break;case 19:_PyErr_Format(HEAP[_ZipImportError],__str195699,allocate([h,0,0,0],["i8*",0,0,0],ALLOC_STACK));l=0;d=20;break;case 20:return g=l,STACKTOP=c,g;default:assert(0,"bad label: "+d)}} -function _initzipimport(){var g=STACKTOP;STACKTOP+=20;_memset(g,0,20);var e;for(e=-1;;)switch(e){case -1:var b,a=g;e=_PyType_Ready(_ZipImporter_Type)<0?9:1;break;case 1:HEAP[_zip_searchorder]=47;HEAP[_zip_searchorder+20]=47;HEAP[_zip_searchorder+40]=47;e=HEAP[_Py_OptimizeFlag]!=0?2:3;break;case 2:_llvm_memcpy_p0i8_p0i8_i32(a,_zip_searchorder,20,4,0);_llvm_memcpy_p0i8_p0i8_i32(_zip_searchorder,_zip_searchorder+20,20,4,0);_llvm_memcpy_p0i8_p0i8_i32(_zip_searchorder+20,a,20,4,0);_llvm_memcpy_p0i8_p0i8_i32(a, -_zip_searchorder+60,20,4,0);_llvm_memcpy_p0i8_p0i8_i32(_zip_searchorder+60,_zip_searchorder+80,20,4,0);_llvm_memcpy_p0i8_p0i8_i32(_zip_searchorder+80,a,20,4,0);e=3;break;case 3:b=e=_Py_InitModule4(__str605742,0,_zipimport_doc,0,1013);e=e==0?9:4;break;case 4:e=_PyErr_NewException(__str615743,HEAP[_PyExc_ImportError],0);HEAP[_ZipImportError]=e;e=HEAP[_ZipImportError]==0?9:5;break;case 5:HEAP[HEAP[_ZipImportError]]+=1;e=_PyModule_AddObject(b,__str625744,HEAP[_ZipImportError])<0?9:6;break;case 6:HEAP[_ZipImporter_Type]+= -1;e=_PyModule_AddObject(b,__str635745,_ZipImporter_Type)<0?9:7;break;case 7:e=_PyDict_New();HEAP[_zip_directory_cache]=e;e=HEAP[_zip_directory_cache]==0?9:8;break;case 8:HEAP[HEAP[_zip_directory_cache]]+=1;_PyModule_AddObject(b,__str645746,HEAP[_zip_directory_cache]);e=9;break;case 9:STACKTOP=g;return;default:assert(0,"bad label: "+e)}} -function _segment_holding(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;a+=444;b=1;break;case 1:b=HEAP[a]<=c?2:4;break;case 2:b=HEAP[a]+HEAP[a+4]>c?3:4;break;case 3:d=a;b=6;break;case 4:a=b=HEAP[a+8];b=b==0?5:1;break;case 5:d=0;b=6;break;case 6:return c=d;default:assert(0,"bad label: "+b)}} -function _has_segment_link(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;a+=444;b=1;break;case 1:b=HEAP[c]<=a?2:4;break;case 2:b=HEAP[c]+HEAP[c+4]>a?3:4;break;case 3:d=1;b=6;break;case 4:a=b=HEAP[a+8];b=b==0?5:1;break;case 5:d=0;b=6;break;case 6:return c=d;default:assert(0,"bad label: "+b)}} -function _init_mparams(){var g;for(g=-1;;)switch(g){case -1:var e,b;g=HEAP[_mparams]==0?1:5;break;case 1:b=e=_sysconf(30);g=(b-1&b)!=0?3:2;break;case 2:g=(e-1&e)!=0?3:4;break;case 3:throw _abort(),"Reached an unreachable!";case 4:HEAP[_mparams+8]=b;HEAP[_mparams+4]=e;HEAP[_mparams+12]=262144;HEAP[_mparams+16]=2097152;HEAP[_mparams+20]=1;HEAP[__gm_+440]=HEAP[_mparams+20];g=_time(0)^1431655765;g|=8;g&=-8;HEAP[_mparams]=g;g=5;break;case 5:return 1;default:assert(0,"bad label: "+g)}} -function _change_mparam(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h;a=g;c=e;b=HEAP[_mparams]!=0?2:1;break;case 1:b=_init_mparams()!=0?2:3;break;case 2:b=4;break;case 3:b=4;break;case 4:b=c!=-1?5:6;break;case 5:f=c;b=7;break;case 6:f=-1;b=7;break;case 7:h=f;b=a;b=b==-3?13:b==-2?9:b==-1?8:14;break;case 8:HEAP[_mparams+16]=h;d=1;b=15;break;case 9:b=HEAP[_mparams+4]>h?12:10;break;case 10:b=(h-1&h)!=0?12:11;break;case 11:HEAP[_mparams+8]=h;d=1;b=15;break;case 12:d=0;b=15;break;case 13:HEAP[_mparams+ -12]=h;d=1;b=15;break;case 14:d=0;b=15;break;case 15:return a=d;default:assert(0,"bad label: "+b)}} -function _internal_mallinfo(g){var e=STACKTOP;STACKTOP+=40;_memset(e,0,40);var b;for(b=-1;;)switch(b){case -1:var a,c,d=e,f,h,j,k,l,m;a=__gm_;_llvm_memset_p0i8_i32(d,0,40,4,0);b=HEAP[_mparams]!=0?2:1;break;case 1:b=_init_mparams()!=0?2:3;break;case 2:b=4;break;case 3:b=4;break;case 4:b=HEAP[a+24]!=0?5:19;break;case 5:f=1;j=h=40+HEAP[a+12];k=a+444;b=a+444!=0?6:18;break;case 6:var n=HEAP[k];b=(HEAP[k]+8&7)!=0?7:8;break;case 7:c=8-(HEAP[k]+8&7)&7;b=9;break;case 8:c=0;b=9;break;case 9:l=n+c;b=13;break; -case 10:m=HEAP[l+4]&-8;j=m+j;b=(HEAP[l+4]&3)==1?11:12;break;case 11:h=m+h;f+=1;b=12;break;case 12:l+=HEAP[l+4]&-8;b=13;break;case 13:b=HEAP[k]>l?17:14;break;case 14:b=HEAP[k]+HEAP[k+4]<=l?17:15;break;case 15:b=HEAP[a+24]==l?17:16;break;case 16:b=HEAP[l+4]!=7?10:17;break;case 17:k=b=HEAP[k+8];b=b!=0?6:18;break;case 18:HEAP[d]=j;HEAP[d+4]=f;HEAP[d+16]=HEAP[a+432]-j;HEAP[d+20]=HEAP[a+436];HEAP[d+28]=HEAP[a+432]-h;HEAP[d+32]=h;HEAP[d+36]=HEAP[a+12];b=19;break;case 19:_llvm_memcpy_p0i8_p0i8_i32(g,d,40, -4,0);STACKTOP=e;return;default:assert(0,"bad label: "+b)}} -function _internal_malloc_stats(){var g;for(g=-1;;)switch(g){case -1:var e,b,a,c,d,f,h;e=__gm_;g=HEAP[_mparams]!=0?2:1;break;case 1:g=_init_mparams()!=0?2:3;break;case 2:g=4;break;case 3:g=4;break;case 4:d=c=a=0;g=HEAP[e+24]!=0?5:18;break;case 5:f=e+444;a=HEAP[e+436];c=HEAP[e+432];d=-40+(0-HEAP[e+12])+c;g=f!=0?6:18;break;case 6:var j=HEAP[f];g=(HEAP[f]+8&7)!=0?7:8;break;case 7:b=8-(HEAP[f]+8&7)&7;g=9;break;case 8:b=0;g=9;break;case 9:h=j+b;g=13;break;case 10:g=(HEAP[h+4]&3)==1?11:12;break;case 11:d-= -HEAP[h+4]&-8;g=12;break;case 12:h+=HEAP[h+4]&-8;g=13;break;case 13:g=HEAP[f]>h?17:14;break;case 14:g=HEAP[f]+HEAP[f+4]<=h?17:15;break;case 15:g=HEAP[e+24]==h?17:16;break;case 16:g=HEAP[h+4]!=7?10:17;break;case 17:f=g=HEAP[f+8];g=g!=0?6:18;break;case 18:_fprintf(HEAP[_stderr],__str513,allocate([a,0,0,0],["i32",0,0,0],ALLOC_STACK));_fprintf(HEAP[_stderr],__str1514,allocate([c,0,0,0],["i32",0,0,0],ALLOC_STACK));_fprintf(HEAP[_stderr],__str2515,allocate([d,0,0,0],["i32",0,0,0],ALLOC_STACK));return;default:assert(0, -"bad label: "+g)}} -function _mmap_alloc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f,h,j,k;a=g;b=e;f=HEAP[_mparams+4]+30+b&0-HEAP[_mparams+4];b=f>b?1:11;break;case 1:h=_mmap(0,f,3,34,-1,0);b=h!=-1?2:11;break;case 2:b=(h+8&7)!=0?3:4;break;case 3:d=8-(h+8&7)&7;b=5;break;case 4:d=0;b=5;break;case 5:b=d;j=f+-16+(0-b);k=h+b;HEAP[k]=b;HEAP[k+4]=j;HEAP[k+j+4]=7;HEAP[k+(j+4)+4]=0;b=HEAP[a+16]==0?7:6;break;case 6:b=HEAP[a+16]>h?7:8;break;case 7:HEAP[a+16]=h;b=8;break;case 8:HEAP[a+432]=f+HEAP[a+432];b=HEAP[a+432]>HEAP[a+ -436]?9:10;break;case 9:HEAP[a+436]=HEAP[a+432];b=10;break;case 10:c=k+8;b=12;break;case 11:c=0;b=12;break;case 12:return a=c;default:assert(0,"bad label: "+b)}} -function _mmap_resize(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h,j,k,l,m,n,o;c=g;d=e;f=b;j=HEAP[d+4]&-8;a=f>>>3<=31?1:2;break;case 1:h=0;a=12;break;case 2:a=f+4>j?5:3;break;case 3:a=j-f>HEAP[_mparams+8]<<1?5:4;break;case 4:h=d;a=12;break;case 5:k=HEAP[d];l=j+16+k;m=HEAP[_mparams+4]+30+f&0-HEAP[_mparams+4];n=a=_mremap(d+(0-k),l,m,1,allocate(1,"i32",ALLOC_STACK));a=a!=-1?6:11;break;case 6:o=n+k;a=m+-16+(0-k);HEAP[o+4]=a;HEAP[o+a+4]=7;HEAP[o+(a+4)+4]=0;a=HEAP[c+16]>n?7:8;break;case 7:HEAP[c+ -16]=n;a=8;break;case 8:HEAP[c+432]=m+HEAP[c+432]+(0-l);a=HEAP[c+432]>HEAP[c+436]?9:10;break;case 9:HEAP[c+436]=HEAP[c+432];a=10;break;case 10:h=o;a=12;break;case 11:h=0;a=12;break;case 12:return g=h;default:assert(0,"bad label: "+a)}} -function _init_top(g,e,b){var a;for(a=-1;;)switch(a){case -1:var c,d,f,h;c=g;d=e;f=b;a=(d+8&7)!=0?1:2;break;case 1:h=8-(d+8&7)&7;a=3;break;case 2:h=0;a=3;break;case 3:g=h;d+=g;f-=g;HEAP[c+24]=d;HEAP[c+12]=f;HEAP[d+4]=f|1;HEAP[d+f+4]=40;HEAP[c+28]=HEAP[_mparams+16];return;default:assert(0,"bad label: "+a)}} -function _init_bins(g){var e;for(e=-1;;)switch(e){case -1:var b,a;b=g;a=0;e=1;break;case 1:e=b+40+(a<<1)*4;HEAP[e+12]=e;HEAP[e+8]=HEAP[e+12];a=e=a+1;e=e<=31?1:2;break;case 2:return;default:assert(0,"bad label: "+e)}} -function _prepend_alloc(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V,Q,Z,K,N;d=g;f=e;h=b;j=a;c=(f+8&7)!=0?1:2;break;case 1:m=8-(f+8&7)&7;c=3;break;case 2:m=0;c=3;break;case 3:n=f+m;c=(h+8&7)!=0?4:5;break;case 4:l=8-(h+8&7)&7;c=6;break;case 5:l=0;c=6;break;case 6:o=h+l;p=o-n;q=n+j;p-=j;HEAP[n+4]=j|3;var H=d;c=HEAP[d+24]==o?7:8;break;case 7:HEAP[d+12]=p+HEAP[H+12];c=HEAP[d+12];HEAP[d+24]=q;HEAP[q+4]=c|1;c=81;break;case 8:c=HEAP[H+20]== -o?9:10;break;case 9:HEAP[d+8]=p+HEAP[d+8];c=HEAP[d+8];HEAP[d+20]=q;HEAP[q+4]=c|1;HEAP[q+c]=c;c=81;break;case 10:c=(HEAP[o+4]&3)==1?11:53;break;case 11:r=HEAP[o+4]&-8;var ba=o;c=r>>>3<=31?12:20;break;case 12:u=HEAP[ba+8];s=HEAP[o+12];t=r>>>3;c=u==s?13:14;break;case 13:HEAP[d]&=1<>>3<=31?54: -60;break;case 54:D=p>>>3;M=R=d+40+(D<<1)*4;c=(1<=HEAP[d+16]!=0?57:58;break;case 57:M=HEAP[R+8];c=59;break;case 58:throw _abort(),"Reached an unreachable!";case 59:HEAP[R+8]=q;HEAP[M+12]=q;HEAP[q+8]=M;HEAP[q+12]=R;c=81;break;case 60:L=q;F=p>>>8;c=F==0?61:62;break;case 61:J=0;c=65;break;case 62:c=F>65535?63:64;break;case 63:J=31;c=65;break;case 64:J=F;c=J-256>>>16&8;J<<=c;V=J-4096>>>16&4;c=V+c;J<<=V;V=J-16384>>>16&2;c+= -V;J<<=V;V=0-c+14+(J>>>15);J=(p>>>V+7&1)+V*2;c=65;break;case 65:I=d+304+J*4;HEAP[L+28]=J;HEAP[L+16+4]=0;HEAP[L+16]=HEAP[L+16+4];c=(1<>>1);c=70;break;case 69:k=0;c=70;break;case 70:Z=p<>>31&1)*4;Z<<=1;c=HEAP[K]!=0?73:74;break;case 73:Q=HEAP[K];c=71;break;case 74:c= -HEAP[d+16]<=K!=0?75:76;break;case 75:HEAP[K]=L;HEAP[L+24]=Q;HEAP[L+12]=L;HEAP[L+8]=HEAP[L+12];c=81;break;case 76:throw _abort(),"Reached an unreachable!";case 77:N=HEAP[Q+8];c=HEAP[d+16]>Q?80:78;break;case 78:c=HEAP[d+16]>N?80:79;break;case 79:HEAP[N+12]=L;HEAP[Q+8]=HEAP[N+12];HEAP[L+8]=N;HEAP[L+12]=Q;HEAP[L+24]=0;c=81;break;case 80:throw _abort(),"Reached an unreachable!";case 81:return g=n+8;default:assert(0,"bad label: "+c)}} -function _add_segment(g,e,b,a){var c;for(c=-1;;)switch(c){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L;d=g;f=e;h=b;j=a;n=HEAP[d+24];o=_segment_holding(d,n);o=HEAP[o]+HEAP[o+4];p=24;q=o+(0-(p+23));c=(q+8&7)!=0?1:2;break;case 1:m=8-(q+8&7)&7;c=3;break;case 2:m=0;c=3;break;case 3:r=m;r=q+r;c=n+16>r?4:5;break;case 4:l=n;c=6;break;case 5:l=r;c=6;break;case 6:s=u=l;t=s+8;c=s+p;_init_top(d,f,h-40);HEAP[s+4]=p|3;s=t;var I=d+444;HEAP[s]=HEAP[I];HEAP[s+4]=HEAP[I+4];HEAP[s+8]=HEAP[I+8]; -HEAP[s+12]=HEAP[I+12];HEAP[d+444]=f;HEAP[d+444+4]=h;HEAP[d+444+12]=j;HEAP[d+444+8]=t;t=c+4;HEAP[c+4]=7;c=t+4>>3<=31?10:16;break;case 10:x=w>>>3;z=y=d+40+(x<<1)*4;c=(1<=HEAP[d+16]!=0?13:14;break;case 13:z=HEAP[y+8];c=15;break;case 14:throw _abort(),"Reached an unreachable!"; -case 15:HEAP[y+8]=v;HEAP[z+12]=v;HEAP[v+8]=z;HEAP[v+12]=y;c=37;break;case 16:C=v;E=w>>>8;c=E==0?17:18;break;case 17:G=0;c=21;break;case 18:c=E>65535?19:20;break;case 19:G=31;c=21;break;case 20:G=E;c=G-256>>>16&8;G<<=c;s=G-4096>>>16&4;c=s+c;G<<=s;s=G-16384>>>16&2;c+=s;G<<=s;s=0-c+14+(G>>>15);G=(w>>>s+7&1)+s*2;c=21;break;case 21:A=d+304+G*4;HEAP[C+28]=G;HEAP[C+16+4]=0;HEAP[C+16]=HEAP[C+16+4];c=(1<>>1);c=26;break;case 25:k=0;c=26;break;case 26:R=w<>>31&1)*4;R<<=1;c=HEAP[M]!=0?29:30;break;case 29:D=HEAP[M];c=27;break;case 30:c=HEAP[d+16]<=M!=0?31:32;break;case 31:HEAP[M]=C;HEAP[C+24]=D;HEAP[C+12]=C;HEAP[C+8]=HEAP[C+12];c=37;break;case 32:throw _abort(),"Reached an unreachable!";case 33:L=HEAP[D+8];c=HEAP[d+16]>D?36:34;break;case 34:c=HEAP[d+16]>L?36:35; -break;case 35:HEAP[L+12]=C;HEAP[D+8]=HEAP[L+12];HEAP[C+8]=L;HEAP[C+12]=D;HEAP[C+24]=0;c=37;break;case 36:throw _abort(),"Reached an unreachable!";case 37:return;default:assert(0,"bad label: "+c)}} -function _sys_alloc(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x;a=__gm_;c=g;f=4294967295;j=h=0;e=HEAP[_mparams]!=0?2:1;break;case 1:e=_init_mparams()!=0?2:3;break;case 2:e=4;break;case 3:e=4;break;case 4:e=(HEAP[a+440]&1)!=0?5:9;break;case 5:e=HEAP[_mparams+12]<=c?6:9;break;case 6:e=HEAP[a+12]!=0?7:9;break;case 7:k=_mmap_alloc(a,c);e=k!=0?8:9;break;case 8:d=k;e=83;break;case 9:e=(HEAP[a+440]&4)==0?10:35;break;case 10:l=4294967295;e=HEAP[a+24]!=0?12:11; -break;case 11:n=m=0;e=13;break;case 12:m=e=_segment_holding(a,HEAP[a+24]);n=0;e=e==0?13:20;break;case 13:o=e=_sbrk(0);e=e!=-1?14:23;break;case 14:n=47+c+HEAP[_mparams+8]&0-HEAP[_mparams+8];e=(o&HEAP[_mparams+4]-1)!=0?15:16;break;case 15:var y=(HEAP[_mparams+4]+-1+o&0-HEAP[_mparams+4])-o+n;n=y;b=15;e=17;break;case 16:var z=n,b=16;e=17;break;case 17:e=(b==16?z:y)<=2147483646?18:23;break;case 18:l=_sbrk(n);e=l==o?19:23;break;case 19:var C=o;f=C;h=n;b=19;e=24;break;case 20:n=0-HEAP[a+12]+-1+c+48+HEAP[_mparams+ -8]&0-HEAP[_mparams+8];e=n<=2147483646?21:23;break;case 21:l=_sbrk(n);e=l==HEAP[m]+HEAP[m+4]?22:23;break;case 22:var A=l;f=A;h=n;b=22;e=24;break;case 23:var G=f,b=23;e=24;break;case 24:e=(b==23?G:b==19?C:A)==-1?25:35;break;case 25:e=l!=-1?26:34;break;case 26:e=n<=2147483646?27:32;break;case 27:e=c+48>n?28:32;break;case 28:p=47+c+(0-n)+HEAP[_mparams+8]&0-HEAP[_mparams+8];e=p<=2147483646?29:32;break;case 29:e=_sbrk(p);var E=n;e=e!=-1?30:31;break;case 30:n=p+E;e=32;break;case 31:_sbrk(0-E);l=4294967295; -e=34;break;case 32:e=l!=-1?33:34;break;case 33:var D=l;f=D;h=n;b=33;e=36;break;case 34:HEAP[a+440]|=4;e=35;break;case 35:var R=f,b=35;e=36;break;case 36:e=(b==35?R:D)==-1?37:40;break;case 37:q=47+c+HEAP[_mparams+8]&0-HEAP[_mparams+8];e=q>c?38:40;break;case 38:r=_mmap(0,q,3,34,-1,0);e=r!=-1?39:40;break;case 39:var M=r;f=M;h=q;j=1;b=39;e=41;break;case 40:var L=f,b=40;e=41;break;case 41:e=(b==40?L:M)==-1?42:48;break;case 42:u=47+c+HEAP[_mparams+8]&0-HEAP[_mparams+8];e=u<=2147483646?43:48;break;case 43:s= -_sbrk(u);t=_sbrk(0);e=s!=-1?44:48;break;case 44:e=t!=-1?45:48;break;case 45:e=sHEAP[a+436]?51:52;break;case 51:HEAP[a+436]=HEAP[a+432];e=52;break;case 52:var F=a;e=HEAP[a+24]==0?53:59;break;case 53:e=HEAP[F+16]==0?55:54;break;case 54:e=HEAP[a+16]>f?55:56;break;case 55:HEAP[a+16]=f;e=56;break; -case 56:HEAP[a+444]=f;HEAP[a+444+4]=h;HEAP[a+444+12]=j;HEAP[a+36]=HEAP[_mparams];HEAP[a+32]=4095;_init_bins(a);e=a==__gm_?57:58;break;case 57:_init_top(a,f,h-40);e=80;break;case 58:e=a+-8+(HEAP[a+-8+4]&-8);_init_top(a,e,0-e+-40+(f+h));e=80;break;case 59:var V=F+444;w=V;b=59;e=61;break;case 60:var Q=HEAP[w+8];w=Q;b=60;e=61;break;case 61:e=(b==60?Q:V)==0?63:62;break;case 62:e=HEAP[w]+HEAP[w+4]!=f?60:63;break;case 63:e=w==0?69:64;break;case 64:e=(HEAP[w+12]&8)!=0?69:65;break;case 65:e=(HEAP[w+12]&1)!= -j?69:66;break;case 66:e=HEAP[a+24]=HEAP[w]+HEAP[w+4]?69:68;break;case 68:HEAP[w+4]=h+HEAP[w+4];_init_top(a,HEAP[a+24],h+HEAP[a+12]);e=80;break;case 69:e=HEAP[a+16]>f?70:71;break;case 70:HEAP[a+16]=f;e=71;break;case 71:var Z=a+444;w=Z;b=71;e=73;break;case 72:var K=HEAP[w+8];w=K;b=72;e=73;break;case 73:e=(b==72?K:Z)==0?75:74;break;case 74:e=HEAP[w]!=f+h?72:75;break;case 75:e=w==0?79:76;break;case 76:e=(HEAP[w+12]&8)!=0?79:77;break;case 77:e=(HEAP[w+12]&1)!= -j?79:78;break;case 78:d=HEAP[w];HEAP[w]=f;HEAP[w+4]=h+HEAP[w+4];d=_prepend_alloc(a,f,d,c);e=83;break;case 79:_add_segment(a,f,h,j);e=80;break;case 80:e=HEAP[a+12]>c?81:82;break;case 81:HEAP[a+12]-=c;d=HEAP[a+12];e=HEAP[a+24];HEAP[a+24]=e+c;x=HEAP[a+24];HEAP[x+4]=d|1;HEAP[e+4]=c|3;d=e+8;e=83;break;case 82:d=___errno_location();HEAP[d]=12;d=0;e=83;break;case 83:return g=d;default:assert(0,"bad label: "+e)}} -function _release_unused_segments(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M;a=g;h=f=0;j=a+444;var L=HEAP[j+8];k=L;b=-1;e=66;break;case 1:l=HEAP[k];m=HEAP[k+4];n=HEAP[k+8];h+=1;e=(HEAP[k+12]&1)!=0?2:65;break;case 2:e=(HEAP[k+12]&8)==0?3:65;break;case 3:e=(l+8&7)!=0?4:5;break;case 4:d=8-(l+8&7)&7;e=6;break;case 5:d=0;e=6;break;case 6:o=l+d;p=HEAP[o+4]&-8;e=(HEAP[o+4]&3)==1?7:65;break;case 7:e=o+p>=l+m+-40?8:65;break;case 8:q=o;e=HEAP[a+ -20]==o?9:10;break;case 9:HEAP[a+20]=0;HEAP[a+8]=0;e=42;break;case 10:r=HEAP[q+24];var I=q;e=HEAP[q+12]!=q?11:14;break;case 11:s=HEAP[I+8];u=HEAP[q+12];e=HEAP[a+16]<=s!=0?12:13;break;case 12:HEAP[s+12]=u;HEAP[u+8]=s;e=22;break;case 13:throw _abort(),"Reached an unreachable!";case 14:t=I+16+4;u=HEAP[t];e=u!=0?17:15;break;case 15:t=q+16;u=HEAP[t];e=u!=0?17:22;break;case 16:t=v;u=HEAP[t];e=17;break;case 17:v=u+16+4;e=HEAP[v]!=0?16:18;break;case 18:v=u+16;e=HEAP[v]!=0?16:19;break;case 19:e=HEAP[a+16]<= -t!=0?20:21;break;case 20:HEAP[t]=0;e=22;break;case 21:throw _abort(),"Reached an unreachable!";case 22:e=r!=0?23:42;break;case 23:w=a+304+HEAP[q+28]*4;e=HEAP[w]==q?24:26;break;case 24:HEAP[w]=u;e=HEAP[w]==0?25:31;break;case 25:HEAP[a+4]&=1<>>8;e=A==0?45:46;break;case 45:C=0;e=49;break;case 46:e=A>65535?47:48;break;case 47:C=31;e=49;break;case 48:e=A;C=e-256>>>16&8;e<<=C;G=e-4096>>>16&4;C=G+C;e<<=G;G=e-16384>>>16&2;C+=G;e<<=G;G=0-C+14+(e>>>15);C=(p>>>G+7&1)+G*2;e=49;break;case 49:z=a+304+C*4;HEAP[q+28]=C;HEAP[q+16+4]=0;HEAP[q+16]=HEAP[q+16+4];e=(1<>>1);e=54;break;case 53:c=0;e=54;break;case 54:D=p<>>31&1)*4;D<<=1;e=HEAP[R]!=0?57:58;break;case 57:E=HEAP[R];e=55;break;case 58:e=HEAP[a+16]<=R!=0?59:60;break;case 59:HEAP[R]=q;HEAP[q+24]=E;HEAP[q+12]=q;HEAP[q+8]=HEAP[q+12];e=65;break;case 60:throw _abort(),"Reached an unreachable!";case 61:M=HEAP[E+8];e=HEAP[a+16]>E?64:62;break;case 62:e=HEAP[a+16]>M?64:63;break;case 63:HEAP[M+12]=q;HEAP[E+ -8]=HEAP[M+12];HEAP[q+8]=M;HEAP[q+12]=E;HEAP[q+24]=0;e=65;break;case 64:throw _abort(),"Reached an unreachable!";case 65:j=k;var F=n;k=F;b=65;e=66;break;case 66:e=(b==65?F:L)!=0?1:67;break;case 67:return HEAP[a+32]=h>=4095?h:4095,g=f;default:assert(0,"bad label: "+e)}} -function _sys_trim(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m;a=__gm_;c=g;d=0;e=HEAP[_mparams]!=0?2:1;break;case 1:e=_init_mparams()!=0?2:3;break;case 2:e=4;break;case 3:e=4;break;case 4:e=c<=4294967231?5:26;break;case 5:e=HEAP[a+24]!=0?6:26;break;case 6:c+=40;e=HEAP[a+12]>c?7:23;break;case 7:f=HEAP[_mparams+8];h=(Math.floor((HEAP[a+12]+-1+(0-c)+f)/f)-1)*f;j=_segment_holding(a,HEAP[a+24]);e=(HEAP[j+12]&8)==0?8:20;break;case 8:e=(HEAP[j+12]&1)!=0?9:14;break;case 9:e=HEAP[j+ -4]>=h?10:20;break;case 10:e=_has_segment_link(a,j)==0?11:20;break;case 11:k=HEAP[j+4]-h;e=_mremap(HEAP[j],HEAP[j+4],k,0,allocate(1,"i32",ALLOC_STACK))!=-1?13:12;break;case 12:e=_munmap(HEAP[j]+k,h)==0?13:20;break;case 13:var n=h;d=n;b=13;e=21;break;case 14:e=h>2147483646?15:16;break;case 15:h=-2147483648-f;e=16;break;case 16:l=_sbrk(0);e=HEAP[j]+HEAP[j+4]==l?17:20;break;case 17:e=_sbrk(0-h);m=_sbrk(0);e=e!=-1?18:20;break;case 18:e=mHEAP[a+28]?25:26;break;case 25:HEAP[a+28]=-1;e=26;break;case 26:return g=d!=0;default:assert(0,"bad label: "+e)}} -function _tmalloc_large(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V,Q,Z,K,N;a=__gm_;c=g;j=0;k=0-c;n=c>>>0>>>8;e=(n|0)==0?1:2;break;case 1:m=0;e=5;break;case 2:e=n>>>0>65535?3:4;break;case 3:m=31;e=5;break;case 4:m=n;e=m-256>>>0>>>16&8;m<<=e;o=m-4096>>>0>>>16&4;e=o+e;m<<=o;o=m-16384>>>0>>>16&2;e+=o;m<<=o;o=0-e+14+(m>>>0>>>15);m=(c>>>0>>>(o+7>>>0)&1)+o*2;e=5;break;case 5:l=HEAP[a+304+m*4];e=HEAP[a+304+m*4]!=0?6:20;break;case 6:e= -m!=31?7:8;break;case 7:h=25-(m>>>1);e=9;break;case 8:h=0;e=9;break;case 9:p=c<>>0>>0?11:12;break;case 11:j=l;k=u;e=k==0?18:12;break;case 12:r=HEAP[l+16+4];var H=HEAP[l+16+(p>>>0>>>31&1)*4];l=H;r!=0?(b=12,e=13):(b=12,e=15);break;case 13:var ba=l;r!=ba?(b=13,e=14):(b=13,e=15);break;case 14:q=r;var W=l,b=14;e=15;break;case 15:e=(b==14?W:b==13?ba:H)==0?16:17;break;case 16:var B=q;l=B;b=16;e=19;break;case 17:p<<=1;e=10;break;case 18:var Y=l,b=18;e=19; -break;case 19:e=(b==18?Y:B)==0?20:29;break;case 20:e=j==0?21:29;break;case 21:s=(0-(1<>>12&16;b>>>=l;l=b>>>5&8;t+=l;b>>>=l;l=b>>>2&4;t+=l;b>>>=l;l=b>>>1&2;t+=l;b>>>=l;l=b>>>1&1;t+=l;b>>>=l;b+=t;l=t=HEAP[a+304+b*4];b=22;e=30;break;case 23:v=(HEAP[l+4]&-8)-c;e=v>>>0>>0?24:25;break;case 24:k=v;j=l;e=25;break;case 25:var fa=l+16;e=HEAP[l+16]!=0?26:27;break;case 26:var ha=HEAP[fa],b=26;e=28;break;case 27:var la=HEAP[fa+4],b=27; -e=28;break;case 28:l=e=b==27?la:ha;e=e!=0?23:31;break;case 29:var ra=l,b=29;e=30;break;case 30:e=(b==29?ra:t)!=0?23:31;break;case 31:e=(j|0)!=0?32:99;break;case 32:e=HEAP[a+8]-c>>>0>k>>>0?33:99;break;case 33:e=HEAP[a+16]<=j!=0?34:98;break;case 34:w=j+c;e=j>>0>>>3>>>0<=31?70:76;break;case 70:R=k>>>0>>>3;L=M=a+40+(R<<1)*4;e=(1<>>0>=HEAP[a+16]>>>0,1,1)|0)!=0?73:74;break;case 73:L= -HEAP[M+8];e=75;break;case 74:throw _abort(),"Reached an unreachable!";case 75:HEAP[M+8]=w;HEAP[L+12]=w;HEAP[w+8]=L;HEAP[w+12]=M;e=97;break;case 76:I=w;V=k>>>0>>>8;e=(V|0)==0?77:78;break;case 77:F=0;e=81;break;case 78:e=V>>>0>65535?79:80;break;case 79:F=31;e=81;break;case 80:F=V;e=F-256>>>0>>>16&8;F<<=e;o=F-4096>>>0>>>16&4;e=o+e;F<<=o;o=F-16384>>>0>>>16&2;e+=o;F<<=o;o=0-e+14+(F>>>0>>>15);F=(k>>>0>>>(o+7>>>0)&1)+o*2;e=81;break;case 81:J=a+304+F*4;HEAP[I+28]=F;HEAP[I+16+4]=0;HEAP[I+16]=HEAP[I+16+4]; -e=(1<>>0>>>1);e=86;break;case 85:f=0;e=86;break;case 86:Z=k<>>0>>>31&1)*4;Z<<=1;e=(HEAP[K]|0)!=0?89:90;break;case 89:Q=HEAP[K];e=87;break;case 90:e=(unSign(HEAP[a+16]>>>0<=K>>>0,1,1)|0)!=0?91:92;break;case 91:HEAP[K]=I;HEAP[I+24]=Q;HEAP[I+12]= -I;HEAP[I+8]=HEAP[I+12];e=97;break;case 92:throw _abort(),"Reached an unreachable!";case 93:N=HEAP[Q+8];e=HEAP[a+16]>>>0>Q>>>0?96:94;break;case 94:e=HEAP[a+16]>>>0>N>>>0?96:95;break;case 95:HEAP[N+12]=I;HEAP[Q+8]=HEAP[N+12];HEAP[I+8]=N;HEAP[I+12]=Q;HEAP[I+24]=0;e=97;break;case 96:throw _abort(),"Reached an unreachable!";case 97:d=j+8;e=100;break;case 98:throw _abort(),"Reached an unreachable!";case 99:d=0;e=100;break;case 100:return g=d;default:assert(0,"bad label: "+e)}} -function _tmalloc_small(g){var e,b=null;for(e=-1;;)switch(e){case -1:var a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x;a=__gm_;c=g;d=(0-HEAP[a+4]&HEAP[a+4])-1;h=f=d>>>12&16;d>>>=f;f=d>>>5&8;h+=f;d>>>=f;f=d>>>2&4;h+=f;d>>>=f;f=d>>>1&2;h+=f;d>>>=f;f=d>>>1&1;h+=f;d>>>=f;f=d=HEAP[a+304+(d+h)*4];h=(HEAP[d+4]&-8)-c;e=3;break;case 1:j=(HEAP[d+4]&-8)-c;e=j>>3;x=w=a+40+(v<<1)*4;e=(1<=HEAP[a+16]!=0?47:48;break;case 47:x=HEAP[w+8];e=49;break;case 48:throw _abort(),"Reached an unreachable!";case 49:HEAP[w+8]=t;HEAP[x+12]=t;HEAP[t+8]=x;HEAP[t+12]=w;e=50;break;case 50:HEAP[a+8]=h;HEAP[a+20]=k;e=51;break;case 51:return g= -f+8;case 52:throw _abort(),"Reached an unreachable!";default:assert(0,"bad label: "+e)}} -function _internal_realloc(g,e,b){var a,c=null;for(a=-1;;)switch(a){case -1:var d,f,h,j,k,l,m,n,o,p,q,r,u,s;d=g;f=e;h=b;a=h>4294967231?1:2;break;case 1:l=___errno_location();HEAP[l]=12;l=0;a=29;break;case 2:m=f+-8;n=HEAP[m+4]&-8;o=m+n;q=p=0;a=HEAP[d+16]>m?19:3;break;case 3:a=(HEAP[m+4]&3)==1?19:4;break;case 4:a=m>=o?19:5;break;case 5:a=((HEAP[o+4]&1)!=0^1)!=0?19:6;break;case 6:a=h>10?7:8;break;case 7:k=h+11&-8;a=9;break;case 8:k=16;a=9;break;case 9:r=k;a=(HEAP[m+4]&3)==0?10:11;break;case 10:var t= -_mmap_resize(d,m,r);p=t;c=10;a=18;break;case 11:a=n>=r?12:14;break;case 12:u=n-r;var v=m;p=v;u>15?(c=12,a=13):(c=12,a=18);break;case 13:q=p+r;HEAP[p+4]=r|2|HEAP[p+4]&1;HEAP[p+r+4]|=1;HEAP[q+4]=u|3;HEAP[q+u+4]|=1;q+=8;a=17;break;case 14:a=HEAP[d+24]==o?15:17;break;case 15:a=n+HEAP[d+12]>r?16:17;break;case 16:c=n+HEAP[d+12];c-=r;p=m+r;HEAP[m+4]=r|2|HEAP[m+4]&1;HEAP[m+r+4]|=1;HEAP[p+4]=c|1;HEAP[d+24]=p;HEAP[d+12]=c;var w=m;p=w;c=16;a=18;break;case 17:var x=p,c=17;a=18;break;case 18:a=(c==17?x:c==12? -v:c==16?w:t)!=0?20:23;break;case 19:throw _abort(),"Reached an unreachable!";case 20:a=q!=0?21:22;break;case 21:_free(q);a=22;break;case 22:l=p+8;a=29;break;case 23:s=_malloc(h);a=s!=0?24:28;break;case 24:a=(HEAP[m+4]&3)==0?25:26;break;case 25:j=8;a=27;break;case 26:j=4;a=27;break;case 27:a=n-j;_llvm_memcpy_p0i8_p0i8_i32(s,f,h<=a?h:a,1,0);_free(f);a=28;break;case 28:l=s;a=29;break;case 29:return g=l;default:assert(0,"bad label: "+a)}} -function _malloc(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C=b=g;e=b<=244?1:28;break;case 1:e=C>10?2:3;break;case 2:a=b+11&-8;e=4;break;case 3:a=16;e=4;break;case 4:d=a;f=d>>>3;h=HEAP[__gm_]>>>0>>>(f>>>0);e=(h&3)!=0?5:11;break;case 5:f=((h&1)==0)+f;j=__gm_+40+(f<<1)*4;k=HEAP[j+8];l=HEAP[k+8];e=j==l?6:7;break;case 6:HEAP[__gm_]&=1<>>12&16;m>>>=n;n=m>>>5&8;q+=n;m>>>=n;n=m>>>2&4;q+=n;m>>>=n;n=m>>>1&2;q+=n;m>>>=n;n=m>>>1&1;q+=n;m>>>=n;q=m+q;m=__gm_+40+(q<<1)*4;n=HEAP[m+8];r=HEAP[n+8];e=m==r?14:15;break;case 14:HEAP[__gm_]&=1<>>3;w=v=__gm_+40+(t<<1)*4;e=(1<=HEAP[__gm_+16]!=0?22:23;break;case 22:w=HEAP[v+8];e=24;break;case 23:throw _abort(),"Reached an unreachable!";case 24:HEAP[v+8]=s;HEAP[w+12]=s;HEAP[s+8]=w;HEAP[s+12]=v;e=25;break;case 25:HEAP[__gm_+8]=p;HEAP[__gm_+ -20]=o;c=n+8;e=40;break;case 26:e=HEAP[__gm_+4]!=0?27:32;break;case 27:c=_tmalloc_small(d);e=c!=0?40:32;break;case 28:e=C>4294967231?29:30;break;case 29:d=-1;e=32;break;case 30:d=b+11&-8;e=HEAP[__gm_+4]!=0?31:32;break;case 31:c=_tmalloc_large(d);e=c!=0?40:32;break;case 32:e=HEAP[__gm_+8]>=d?33:37;break;case 33:x=HEAP[__gm_+8]-d;y=HEAP[__gm_+20];e=x>15?34:35;break;case 34:HEAP[__gm_+20]=y+d;e=HEAP[__gm_+20];HEAP[__gm_+8]=x;HEAP[e+4]=x|1;HEAP[e+x]=x;HEAP[y+4]=d|3;e=36;break;case 35:e=HEAP[__gm_+8];HEAP[__gm_+ -8]=0;HEAP[__gm_+20]=0;HEAP[y+4]=e|3;HEAP[y+e+4]|=1;e=36;break;case 36:c=y+8;e=40;break;case 37:e=HEAP[__gm_+12]>d?38:39;break;case 38:HEAP[__gm_+12]-=d;c=HEAP[__gm_+12];e=HEAP[__gm_+24];HEAP[__gm_+24]=e+d;z=HEAP[__gm_+24];HEAP[z+4]=c|1;HEAP[e+4]=d|3;c=e+8;e=40;break;case 39:c=_sys_alloc(d);e=40;break;case 40:return g=c;default:assert(0,"bad label: "+e)}} -function _internal_memalign(g,e){var b,a=null;for(b=-1;;)switch(b){case -1:var c,d,f,h,j,k,l,m,n,o,p,q,r,u,s;c=__gm_;d=g;f=e;b=d<=8?1:2;break;case 1:k=_malloc(f);b=32;break;case 2:b=d<=15?3:4;break;case 3:d=16;b=4;break;case 4:b=(d-1&d)!=0?5:8;break;case 5:var t=a=16;a10? -12:13;break;case 12:j=f+11&-8;b=14;break;case 13:j=16;b=14;break;case 14:l=j;m=l+12+d;m=b=_malloc(m);b=b!=0?15:31;break;case 15:o=n=0;p=m+-8;b=m%d!=0?16:23;break;case 16:var w=b=(m+d+-1&0-d)+-8;b=b-p<=15?17:18;break;case 17:h=w+d;b=19;break;case 18:h=w;b=19;break;case 19:r=q=h;q-=p;u=(HEAP[p+4]&-8)-q;b=(HEAP[p+4]&3)==0?20:21;break;case 20:HEAP[r]=q+HEAP[p];HEAP[r+4]=u;b=22;break;case 21:HEAP[r+4]=u|2|HEAP[r+4]&1;HEAP[r+u+4]|=1;HEAP[p+4]=q|2|HEAP[p+4]&1;HEAP[p+q+4]|=1;n=p+8;b=22;break;case 22:p=r; -b=23;break;case 23:b=(HEAP[p+4]&3)!=0?24:26;break;case 24:s=HEAP[p+4]&-8;b=l+1610?11:12;break;case 11:p=(h+1)*4+7&-8;c=13;break;case 12:p=16;c=13;break;case 13:s= -p;c=14;break;case 14:c=(k&1)!=0?15:19;break;case 15:c=HEAP[j]>10?16:17;break;case 16:o=HEAP[j]+11&-8;c=18;break;case 17:o=16;c=18;break;case 18:r=o;u=r*h;c=24;break;case 19:z=u=r=0;c=z!=h?20:24;break;case 20:c=HEAP[j+4*z]>10?21:22;break;case 21:n=HEAP[j+4*z]+11&-8;c=23;break;case 22:n=16;c=23;break;case 23:u+=n;z+=1;c=z!=h?20:24;break;case 24:y=s+u;d=HEAP[f+440]&1;HEAP[f+440]&=-2;var G=_malloc(y-4);t=G;d!=0?(d=24,c=25):(d=24,c=26);break;case 25:HEAP[f+440]|=1;var E=t,d=25;c=26;break;case 26:c=(d== -25?E:G)==0?27:28;break;case 27:q=0;c=41;break;case 28:v=t+-8;w=HEAP[v+4]&-8;c=(k&2)!=0?29:30;break;case 29:_llvm_memset_p0i8_i32(t,0,w+-4+(0-s),1,0);c=30;break;case 30:c=x==0?31:32;break;case 31:c=v+u;w-=u;x=c+8;HEAP[c+4]=w|3;w=u;c=32;break;case 32:z=0;HEAP[x+4*z]=v+8;c=h-1!=z?33:40;break;case 33:c=r!=0?34:35;break;case 34:y=r;c=39;break;case 35:c=HEAP[j+4*z]>10?36:37;break;case 36:m=HEAP[j+4*z]+11&-8;c=38;break;case 37:m=16;c=38;break;case 38:y=m;c=39;break;case 39:w-=y;HEAP[v+4]=y|3;v+=y;z+=1;HEAP[x+ -4*z]=v+8;c=h-1!=z?33:40;break;case 40:HEAP[v+4]=w|3;q=x;c=41;break;case 41:return g=q;default:assert(0,"bad label: "+c)}} -function _free(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d,f,h,j,k,l,m,n,o,p,q,r,u,s,t,v,w,x,y,z,C,A,G,E,D,R,M,L,I,J,F,V,Q,Z,K,N,H,ba,W,B,Y;b=g;e=b!=0?1:139;break;case 1:c=b+-8;e=HEAP[__gm_+16]>c?3:2;break;case 2:e=(HEAP[c+4]&3)==1?3:4;break;case 3:e=138;break;case 4:d=HEAP[c+4]&-8;f=c+d;e=(HEAP[c+4]&1)==0?5:53;break;case 5:h=HEAP[c];e=(HEAP[c+4]&3)==0?6:8;break;case 6:d=h+16+d;e=_munmap(c+(0-h),d)==0?7:139;break;case 7:HEAP[__gm_+432]-=d;e=139;break;case 8:e=c+(0-h);d=h+d;c=e;e=HEAP[__gm_+ -16]<=e!=0?9:138;break;case 9:e=HEAP[__gm_+20]!=c?10:51;break;case 10:var fa=c;e=h>>>3<=31?11:19;break;case 11:j=HEAP[fa+8];k=HEAP[c+12];l=h>>>3;e=j==k?12:13;break;case 12:HEAP[__gm_]&=1<=f?55:54;break;case 54:e=((HEAP[f+4]&1)!=0^1)!=0?55:56;break;case 55:e=138;break;case 56:e=(HEAP[f+4]&2)==0?57:107;break;case 57:e=HEAP[__gm_+24]==f?58:62;break;case 58:HEAP[__gm_+12]=d+HEAP[__gm_+12];v=HEAP[__gm_+12];HEAP[__gm_+24]=c;HEAP[c+4]=v|1;e=HEAP[__gm_+20]==c?59:60;break;case 59:HEAP[__gm_+20]=0;HEAP[__gm_+8]=0;e=60;break;case 60:e=HEAP[__gm_+28]>>3<=31?65:73;break;case 65:x=HEAP[ra+8];y=HEAP[f+12];z=w>>>3;e=x==y?66:67;break;case 66:HEAP[__gm_]&=1<>>3<=31?109:115;break;case 109:J=d>>>3;V=F=__gm_+40+(J<<1)*4;e=(1<=HEAP[__gm_+16]!=0?112:113;break;case 112:V=HEAP[F+8];e=114;break;case 113:throw _abort(),"Reached an unreachable!";case 114:HEAP[F+8]=c;HEAP[V+12]=c;HEAP[c+8]=V;HEAP[c+12]=F;e=139;break;case 115:Q=c;N=d>>>0>>>8;e=(N|0)==0?116:117;break;case 116:K=0;e= -120;break;case 117:e=N>>>0>65535?118:119;break;case 118:K=31;e=120;break;case 119:K=N;e=K-256>>>0>>>16&8;K<<=e;H=K-4096>>>0>>>16&4;e=H+e;K<<=H;H=K-16384>>>0>>>16&2;e+=H;K<<=H;H=0-e+14+(K>>>0>>>15);K=(d>>>0>>>(H+7>>>0)&1)+H*2;e=120;break;case 120:Z=__gm_+304+K*4;HEAP[Q+28]=K;HEAP[Q+16+4]=0;HEAP[Q+16]=HEAP[Q+16+4];e=(1<>>0>>>1);e=125;break;case 124:a=0;e=125;break;case 125:W=d<>>0>>>31&1)*4;W<<=1;e=(HEAP[B]|0)!=0?128:129;break;case 128:ba=HEAP[B];e=126;break;case 129:e=(unSign(HEAP[__gm_+16]>>>0<=B>>>0,1,1)|0)!=0?130:131;break;case 130:HEAP[B]=Q;HEAP[Q+24]=ba;HEAP[Q+12]=Q;HEAP[Q+8]=HEAP[Q+12];e=136;break;case 131:throw _abort(),"Reached an unreachable!";case 132:Y=HEAP[ba+8];e=HEAP[__gm_+16]>>>0>ba>>>0?135:133;break;case 133:e= -HEAP[__gm_+16]>>>0>Y>>>0?135:134;break;case 134:HEAP[Y+12]=Q;HEAP[ba+8]=HEAP[Y+12];HEAP[Q+8]=Y;HEAP[Q+12]=ba;HEAP[Q+24]=0;e=136;break;case 135:throw _abort(),"Reached an unreachable!";case 136:e=HEAP[__gm_+32]-1;HEAP[__gm_+32]=e;e=e==0?137:139;break;case 137:_release_unused_segments(__gm_);e=139;break;case 138:throw _abort(),"Reached an unreachable!";case 139:return;default:assert(0,"bad label: "+e)}} -function _calloc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d,f;a=g;c=e;f=0;b=a!=0?1:4;break;case 1:f=c*a;b=((c|a)&-65536)!=0?2:4;break;case 2:b=Math.floor(f/a)!=c?3:4;break;case 3:f=-1;b=4;break;case 4:d=b=_malloc(f);b=b!=0?5:7;break;case 5:b=(HEAP[d+-8+4]&3)!=0?6:7;break;case 6:_llvm_memset_p0i8_i32(d,0,f,1,0);b=7;break;case 7:return a=d;default:assert(0,"bad label: "+b)}} -function _realloc(g,e){var b;for(b=-1;;)switch(b){case -1:var a,c,d;a=g;c=e;b=a==0?1:2;break;case 1:d=_malloc(c);b=3;break;case 2:b=__gm_;d=_internal_realloc(b,a,c);b=3;break;case 3:return a=d;default:assert(0,"bad label: "+b)}}function _memalign(g,e){return _internal_memalign(g,e)}function _independent_calloc(g,e,b){var a=STACKTOP;STACKTOP+=4;_memset(a,0,4);HEAP[a]=e;g=_ialloc(g,a,3,b);STACKTOP=a;return g}function _independent_comalloc(g,e,b){return _ialloc(g,e,0,b)} -function _valloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[_mparams]!=0?2:1;break;case 1:e=_init_mparams()!=0?2:3;break;case 2:e=4;break;case 3:e=4;break;case 4:return g=HEAP[_mparams+4],b=_memalign(g,b);default:assert(0,"bad label: "+e)}} -function _pvalloc(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[_mparams]!=0?2:1;break;case 1:e=_init_mparams()!=0?2:3;break;case 2:e=4;break;case 3:e=4;break;case 4:return g=HEAP[_mparams+4],b=_memalign(g,b+-1+g&0-g);default:assert(0,"bad label: "+e)}}function _malloc_trim(g){var e;for(e=-1;;)switch(e){case -1:var b;b=g;e=HEAP[_mparams]!=0?2:1;break;case 1:e=_init_mparams()!=0?2:3;break;case 2:e=4;break;case 3:e=4;break;case 4:return g=_sys_trim(b);default:assert(0,"bad label: "+e)}} -function _malloc_footprint(){return HEAP[__gm_+432]}function _malloc_max_footprint(){return HEAP[__gm_+436]}function _mallinfo(g){_internal_mallinfo(g)}function _malloc_stats(){_internal_malloc_stats()}function _mallopt(g,e){return _change_mparam(g,e)} -function _malloc_usable_size(g){var e;for(e=-1;;)switch(e){case -1:var b,a,c,d;b=g;e=b!=0?1:6;break;case 1:d=b+-8;e=(HEAP[d+4]&3)!=1?2:6;break;case 2:var f=HEAP[d+4]&-8;e=(HEAP[d+4]&3)==0?3:4;break;case 3:a=8;e=5;break;case 4:a=4;e=5;break;case 5:c=f-a;e=7;break;case 6:c=0;e=7;break;case 7:return g=c;default:assert(0,"bad label: "+e)}} -var FUNCTION_TABLE=[0,0,__Py_add_one_to_index_F,0,__Py_add_one_to_index_C,0,__PyObject_NextNotImplemented,0,_PyNumber_Or,0,_PyNumber_And,0,_PyNumber_Xor,0,_PyNumber_Lshift,0,_PyNumber_Rshift,0,_PyNumber_Add,0,_PyNumber_Subtract,0,_PyNumber_Multiply,0,_PyNumber_Divide,0,_PyNumber_Remainder,0,_PyNumber_Divmod,0,_PyNumber_FloorDivide,0,_PyNumber_TrueDivide,0,_PyNumber_InPlaceOr,0,_PyNumber_InPlaceXor,0,_PyNumber_InPlaceAnd,0,_PyNumber_InPlaceLshift,0,_PyNumber_InPlaceRshift,0,_PyNumber_InPlaceAdd,0, -_PyNumber_InPlaceSubtract,0,_PyNumber_InPlaceMultiply,0,_PyNumber_InPlaceDivide,0,_PyNumber_InPlaceRemainder,0,_PyNumber_InPlaceFloorDivide,0,_PyNumber_InPlaceTrueDivide,0,_bin_power,0,_bin_inplace_power,0,_lookdict_string,0,_lookdict,0,_BaseException_str,0,_fclose,0,_long_format,0,_int_format,0,_visit_decref,0,_visit_reachable,0,_visit_move,0,_referrersvisit,0,_referentsvisit,0,_cleanup_ptr,0,_cleanup_buffer,0,__PyEval_SliceIndex,0,_PyOS_StdioReadline,0,__PyObject_SlotCompare,0,_chdir,0,_fchdir, -0,_chroot,0,_fsync,0,_fdatasync,0,_link,0,_rename,0,_rmdir,0,___01stat64_,0,_unlink,0,_PyList_GetItem,0,_PyTuple_GetItem,0,_pclose,0,___01lstat64_,0,_symlink,0,_conv_path_confname,0,_conv_confstr_confname,0,_conv_sysconf_confname,0,_cmp_constdefs,0,_statresult_new,0,_threadstate_getframe,0,_ast2obj_stmt,0,_ast2obj_expr,0,_ast2obj_excepthandler,0,_ast2obj_alias,0,_ast2obj_object,0,_ast2obj_comprehension,0,_ast2obj_keyword,0,_ast2obj_slice,0,_set_lookkey,0,_set_lookkey_string,0,_checksignals_witharg, -0,_signal_handler,0,_sre_lower_locale,0,_sre_lower_unicode,0,_sre_lower,0,__PyBytes_FormatAdvanced,0,__PyInt_FormatAdvanced,0,__PyLong_FormatAdvanced,0,__PyFloat_FormatAdvanced,0,_SubString_new_object_or_empty,0,_SubString_new_object,0,_trace_trampoline,0,_profile_trampoline,0,__check_and_flush,0,_fp_getc,0,_fp_ungetc,0,_fp_setreadl,0,_buf_getc,0,_buf_ungetc,0,_buf_setreadl,0,_subtype_traverse,0,_subtype_clear,0,_subtype_dealloc,0,_PyObject_GenericGetAttr,0,_PyObject_GenericSetAttr,0,_PyType_GenericAlloc, -0,_PyObject_GC_Del,0,_PyObject_Free,0,_type_new,0,_object_init,0,_object_new,0,_object_repr,0,_PyObject_HashNotImplemented,0,_slot_nb_add,0,_slot_nb_subtract,0,_slot_nb_multiply,0,_slot_nb_divide,0,_slot_nb_remainder,0,_slot_nb_divmod,0,_slot_nb_power,0,_slot_nb_lshift,0,_slot_nb_rshift,0,_slot_nb_and,0,_slot_nb_xor,0,_slot_nb_or,0,_slot_nb_coerce,0,_slot_nb_floor_divide,0,_slot_nb_true_divide,0,_slot_tp_getattro,0,_slot_tp_richcompare,0,_slot_tp_descr_get,0,_tp_new_wrapper,0,_slotdef_cmp,0,_update_slots_callback, -0,_fixtitle,0,_fixcapitalize,0,_convert_uc,0,_fixlower,0,_fixswapcase,0,_fixupper,0,__PyUnicode_FormatAdvanced,0,_SubString_new_object_or_empty5521,0,_SubString_new_object5520,0,_builtin___import__,0,_builtin_abs,0,_builtin_all,0,_builtin_any,0,_builtin_apply,0,_builtin_bin,0,_builtin_callable,0,_builtin_chr,0,_builtin_cmp,0,_builtin_coerce,0,_builtin_compile,0,_builtin_delattr,0,_builtin_dir,0,_builtin_divmod,0,_builtin_eval,0,_builtin_execfile,0,_builtin_filter,0,_builtin_format,0,_builtin_getattr, -0,_builtin_globals,0,_builtin_hasattr,0,_builtin_hash,0,_builtin_hex,0,_builtin_id,0,_builtin_input,0,_builtin_intern,0,_builtin_isinstance,0,_builtin_issubclass,0,_builtin_iter,0,_builtin_len,0,_builtin_locals,0,_builtin_map,0,_builtin_max,0,_builtin_min,0,_builtin_next,0,_builtin_oct,0,_builtin_open,0,_builtin_ord,0,_builtin_pow,0,_builtin_print,0,_builtin_range,0,_builtin_raw_input,0,_builtin_reduce,0,_builtin_reload,0,_builtin_repr,0,_builtin_round,0,_builtin_setattr,0,_builtin_sorted,0,_builtin_sum, -0,_builtin_unichr,0,_builtin_vars,0,_builtin_zip,0,_bool_and,0,_bool_xor,0,_bool_or,0,_bool_print,0,_bool_repr,0,_bool_new,0,_buffer_length,0,_buffer_concat,0,_buffer_repeat,0,_buffer_item,0,_buffer_slice,0,_buffer_ass_item,0,_buffer_ass_slice,0,_buffer_subscript,0,_buffer_ass_subscript,0,_buffer_getreadbuf,0,_buffer_getwritebuf,0,_buffer_getsegcount,0,_buffer_getcharbuf,0,_buffer_dealloc,0,_buffer_compare,0,_buffer_repr,0,_buffer_hash,0,_buffer_str,0,_buffer_new,0,_bytearray_length,0,_PyByteArray_Concat, -0,_bytearray_repeat,0,_bytearray_getitem,0,_bytearray_setitem,0,_bytearray_contains,0,_bytearray_iconcat,0,_bytearray_irepeat,0,_bytearray_subscript,0,_bytearray_ass_subscript,0,_bytearray_buffer_getreadbuf,0,_bytearray_buffer_getwritebuf,0,_bytearray_buffer_getsegcount,0,_bytearray_buffer_getcharbuf,0,_bytearray_getbuffer,0,_bytearray_releasebuffer,0,_bytearray_alloc,0,_bytearray_reduce,0,_bytearray_sizeof,0,_bytearray_append,0,_stringlib_capitalize,0,_stringlib_center,0,_bytearray_count,0,_bytearray_decode, -0,_bytearray_endswith,0,_stringlib_expandtabs,0,_bytearray_extend,0,_bytearray_find,0,_bytearray_fromhex,0,_bytearray_index,0,_bytearray_insert,0,_stringlib_isalnum,0,_stringlib_isalpha,0,_stringlib_isdigit,0,_stringlib_islower,0,_stringlib_isspace,0,_stringlib_istitle,0,_stringlib_isupper,0,_bytearray_join,0,_stringlib_ljust,0,_stringlib_lower,0,_bytearray_lstrip,0,_bytearray_partition,0,_bytearray_pop,0,_bytearray_remove,0,_bytearray_replace,0,_bytearray_reverse,0,_bytearray_rfind,0,_bytearray_rindex, -0,_stringlib_rjust,0,_bytearray_rpartition,0,_bytearray_rsplit,0,_bytearray_rstrip,0,_bytearray_split,0,_bytearray_splitlines,0,_bytearray_startswith,0,_bytearray_strip,0,_stringlib_swapcase,0,_stringlib_title,0,_bytearray_translate,0,_stringlib_upper,0,_stringlib_zfill,0,_bytearray_dealloc,0,_bytearray_repr,0,_bytearray_str,0,_bytearray_richcompare,0,_bytearray_iter,0,_bytearray_init,0,_PyType_GenericNew,0,_bytesarrayiter_length_hint,0,_bytearrayiter_dealloc,0,_bytearrayiter_traverse,0,_PyObject_SelfIter, -0,_bytearrayiter_next,0,_capsule_dealloc,0,_capsule_repr,0,_cell_get_contents,0,_cell_dealloc,0,_cell_compare,0,_cell_repr,0,_cell_traverse,0,_cell_clear,0,_class_dealloc,0,_class_repr,0,_PyInstance_New,0,_class_str,0,_class_getattr,0,_class_setattr,0,_class_traverse,0,_class_new,0,_instance_length,0,_instance_subscript,0,_instance_ass_subscript,0,_instance_item,0,_instance_slice,0,_instance_ass_item,0,_instance_ass_slice,0,_instance_contains,0,_instance_add,0,_instance_sub,0,_instance_mul,0,_instance_div, -0,_instance_mod,0,_instance_divmod,0,_instance_pow,0,_instance_neg,0,_instance_pos,0,_instance_abs,0,_instance_nonzero,0,_instance_invert,0,_instance_lshift,0,_instance_rshift,0,_instance_and,0,_instance_xor,0,_instance_or,0,_instance_coerce,0,_instance_int,0,_instance_long,0,_instance_float,0,_instance_oct,0,_instance_hex,0,_instance_iadd,0,_instance_isub,0,_instance_imul,0,_instance_idiv,0,_instance_imod,0,_instance_ipow,0,_instance_ilshift,0,_instance_irshift,0,_instance_iand,0,_instance_ixor, -0,_instance_ior,0,_instance_floordiv,0,_instance_truediv,0,_instance_ifloordiv,0,_instance_itruediv,0,_instance_index,0,_instance_dealloc,0,_instance_compare,0,_instance_repr,0,_instance_hash,0,_instance_call,0,_instance_str,0,_instance_getattr,0,_instance_setattr,0,_instance_traverse,0,_instance_richcompare,0,_instance_getiter,0,_instance_iternext,0,_instance_new,0,_instancemethod_get_doc,0,_instancemethod_dealloc,0,_instancemethod_compare,0,_instancemethod_repr,0,_instancemethod_hash,0,_instancemethod_call, -0,_instancemethod_getattro,0,_instancemethod_traverse,0,_instancemethod_descr_get,0,_instancemethod_new,0,_PyCObject_dealloc,0,_codec_register,0,_codec_lookup,0,_codec_encode,0,_codec_decode,0,_escape_encode,0,_escape_decode,0,_utf_8_encode,0,_utf_8_decode,0,_utf_7_encode,0,_utf_7_decode,0,_utf_16_encode,0,_utf_16_le_encode,0,_utf_16_be_encode,0,_utf_16_decode,0,_utf_16_le_decode,0,_utf_16_be_decode,0,_utf_16_ex_decode,0,_utf_32_encode,0,_utf_32_le_encode,0,_utf_32_be_encode,0,_utf_32_decode,0,_utf_32_le_decode, -0,_utf_32_be_decode,0,_utf_32_ex_decode,0,_unicode_escape_encode,0,_unicode_escape_decode,0,_unicode_internal_encode,0,_unicode_internal_decode,0,_raw_unicode_escape_encode,0,_raw_unicode_escape_decode,0,_latin_1_encode,0,_latin_1_decode,0,_ascii_encode,0,_ascii_decode,0,_charmap_encode,0,_charmap_decode,0,_charmap_build,0,_readbuffer_encode,0,_charbuffer_encode,0,_register_error,0,_lookup_error,0,_strict_errors,0,_ignore_errors,0,_replace_errors,0,_xmlcharrefreplace_errors,0,_backslashreplace_errors, -0,_code_dealloc,0,_code_compare,0,_code_repr,0,_code_hash,0,_code_richcompare,0,_code_new,0,_complex_conjugate,0,_complex_getnewargs,0,_complex__format__,0,_complex_add,0,_complex_sub,0,_complex_mul,0,_complex_classic_div,0,_complex_remainder,0,_complex_divmod,0,_complex_pow,0,_complex_neg,0,_complex_pos,0,_complex_abs,0,_complex_nonzero,0,_complex_coerce,0,_complex_int,0,_complex_long,0,_complex_float,0,_complex_int_div,0,_complex_div,0,_complex_dealloc,0,_complex_print,0,_complex_repr,0,_complex_hash, -0,_complex_str,0,_complex_richcompare,0,_complex_new,0,_initsignal,0,_initposix,0,_initerrno,0,_initpwd,0,_init_sre,0,_init_codecs,0,_init_weakref,0,_initzipimport,0,_init_symtable,0,_initxxsubtype,0,_PyMarshal_Init,0,_initimp,0,_init_ast,0,_initgc,0,__PyWarnings_Init,0,_method_get_doc,0,_member_get_doc,0,_getset_get_doc,0,_wrapperdescr_get_doc,0,_descr_dealloc,0,_method_repr,0,_methoddescr_call,0,_descr_traverse,0,_method_get,0,_classmethoddescr_call,0,_classmethod_get,0,_member_repr,0,_member_get, -0,_member_set,0,_getset_repr,0,_getset_get,0,_getset_set,0,_wrapperdescr_repr,0,_wrapperdescr_call,0,_wrapperdescr_get,0,_proxy_len,0,_proxy_getitem,0,_proxy_contains,0,_proxy_has_key,0,_proxy_get,0,_proxy_keys,0,_proxy_values,0,_proxy_items,0,_proxy_iterkeys,0,_proxy_itervalues,0,_proxy_iteritems,0,_proxy_copy,0,_proxy_dealloc,0,_proxy_compare,0,_proxy_str,0,_proxy_traverse,0,_proxy_richcompare,0,_proxy_getiter,0,_wrapper_objclass,0,_wrapper_name,0,_wrapper_doc,0,_wrapper_dealloc,0,_wrapper_compare, -0,_wrapper_repr,0,_wrapper_hash,0,_wrapper_call,0,_wrapper_traverse,0,_property_getter,0,_property_setter,0,_property_deleter,0,_property_dealloc,0,_property_traverse,0,_property_descr_get,0,_property_descr_set,0,_property_init,0,_dict_length,0,_dict_subscript,0,_dict_ass_sub,0,_dict_contains,0,_dict_sizeof,0,_dict_has_key,0,_dict_get,0,_dict_setdefault,0,_dict_pop,0,_dict_popitem,0,_dict_keys,0,_dict_items,0,_dict_values,0,_dictkeys_new,0,_dictitems_new,0,_dictvalues_new,0,_dict_update,0,_dict_fromkeys, -0,_dict_clear,0,_dict_copy,0,_dict_iterkeys,0,_dict_itervalues,0,_dict_iteritems,0,_PyDict_Contains,0,_dict_dealloc,0,_dict_print,0,_dict_compare,0,_dict_repr,0,_dict_traverse,0,_dict_tp_clear,0,_dict_richcompare,0,_dict_iter,0,_dict_init,0,_dict_new,0,_dictiter_len,0,_dictiter_dealloc,0,_dictiter_traverse,0,_dictiter_iternextkey,0,_dictiter_iternextvalue,0,_dictiter_iternextitem,0,_dictview_len,0,_dictkeys_contains,0,_dictviews_sub,0,_dictviews_and,0,_dictviews_xor,0,_dictviews_or,0,_dictview_dealloc, -0,_dictview_repr,0,_dictview_traverse,0,_dictview_richcompare,0,_dictkeys_iter,0,_dictitems_contains,0,_dictitems_iter,0,_dictvalues_iter,0,_enum_dealloc,0,_enum_traverse,0,_enum_next,0,_enum_new,0,_reversed_len,0,_reversed_dealloc,0,_reversed_traverse,0,_reversed_next,0,_reversed_new,0,_BaseException_reduce,0,_BaseException_setstate,0,_BaseException_unicode,0,_BaseException_getitem,0,_BaseException_getslice,0,_BaseException_get_dict,0,_BaseException_set_dict,0,_BaseException_get_args,0,_BaseException_set_args, -0,_BaseException_get_message,0,_BaseException_set_message,0,_BaseException_dealloc,0,_BaseException_repr,0,_BaseException_traverse,0,_BaseException_clear,0,_BaseException_init,0,_BaseException_new,0,_SystemExit_dealloc,0,_SystemExit_traverse,0,_SystemExit_clear,0,_SystemExit_init,0,_EnvironmentError_reduce,0,_EnvironmentError_dealloc,0,_EnvironmentError_str,0,_EnvironmentError_traverse,0,_EnvironmentError_clear,0,_EnvironmentError_init,0,_SyntaxError_dealloc,0,_SyntaxError_str,0,_SyntaxError_traverse, -0,_SyntaxError_clear,0,_SyntaxError_init,0,_KeyError_str,0,_UnicodeError_dealloc,0,_UnicodeEncodeError_str,0,_UnicodeError_traverse,0,_UnicodeError_clear,0,_UnicodeEncodeError_init,0,_UnicodeDecodeError_str,0,_UnicodeDecodeError_init,0,_UnicodeTranslateError_str,0,_UnicodeTranslateError_init,0,_file_readline,0,_file_read,0,_file_write,0,_file_fileno,0,_file_seek,0,_file_truncate,0,_file_tell,0,_file_readinto,0,_file_readlines,0,_file_xreadlines,0,_file_writelines,0,_file_flush,0,_file_close,0,_file_isatty, -0,_file_self,0,_file_exit,0,_get_closed,0,_get_newlines,0,_get_softspace,0,_set_softspace,0,_file_dealloc,0,_file_repr,0,_file_iternext,0,_file_init,0,_file_new,0,_float_float,0,_float_trunc,0,_float_as_integer_ratio,0,_float_fromhex,0,_float_hex,0,_float_is_integer,0,_float_getnewargs,0,_float_getformat,0,_float_setformat,0,_float__format__,0,_float_getzero,0,_float_add,0,_float_sub,0,_float_mul,0,_float_classic_div,0,_float_rem,0,_float_divmod,0,_float_pow,0,_float_neg,0,_float_abs,0,_float_nonzero, -0,_float_coerce,0,_float_long,0,_float_floor_div,0,_float_div,0,_float_dealloc,0,_float_print,0,_float_repr,0,_float_hash,0,_float_str,0,_float_richcompare,0,_float_new,0,_frame_getlocals,0,_frame_getlineno,0,_frame_setlineno,0,_frame_gettrace,0,_frame_settrace,0,_frame_getrestricted,0,_frame_get_f_exc_traceback,0,_frame_set_f_exc_traceback,0,_frame_get_f_exc_type,0,_frame_set_f_exc_type,0,_frame_get_f_exc_value,0,_frame_set_f_exc_value,0,_frame_sizeof,0,_frame_dealloc,0,_frame_traverse,0,_frame_clear, -0,_func_get_code,0,_func_set_code,0,_func_get_defaults,0,_func_set_defaults,0,_func_get_dict,0,_func_set_dict,0,_func_get_name,0,_func_set_name,0,_func_dealloc,0,_func_repr,0,_function_call,0,_func_traverse,0,_func_descr_get,0,_func_new,0,_cm_dealloc,0,_cm_traverse,0,_cm_clear,0,_cm_descr_get,0,_cm_init,0,_sm_dealloc,0,_sm_traverse,0,_sm_clear,0,_sm_descr_get,0,_sm_init,0,_gc_enable,0,_gc_disable,0,_gc_isenabled,0,_gc_set_debug,0,_gc_get_debug,0,_gc_get_count,0,_gc_set_thresh,0,_gc_get_thresh,0,_gc_collect, -0,_gc_get_objects,0,_gc_is_tracked,0,_gc_get_referrers,0,_gc_get_referents,0,_gen_get_name,0,_gen_send,0,_gen_throw,0,_gen_close,0,_gen_dealloc,0,_gen_repr,0,_gen_traverse,0,_gen_iternext,0,_gen_del,0,_imp_reload,0,_imp_find_module,0,_imp_get_magic,0,_imp_get_suffixes,0,_imp_load_module,0,_imp_new_module,0,_imp_lock_held,0,_imp_acquire_lock,0,_imp_release_lock,0,_imp_get_frozen_object,0,_imp_init_builtin,0,_imp_init_frozen,0,_imp_is_builtin,0,_imp_is_frozen,0,_imp_load_compiled,0,_imp_load_dynamic, -0,_imp_load_package,0,_imp_load_source,0,_NullImporter_find_module,0,_NullImporter_init,0,_int_int,0,_int_bit_length,0,_int_getnewargs,0,_int__format__,0,_int_get0,0,_int_get1,0,_int_add,0,_int_sub,0,_int_mul,0,_int_classic_div,0,_int_mod,0,_int_divmod,0,_int_pow,0,_int_neg,0,_int_abs,0,_int_nonzero,0,_int_invert,0,_int_lshift,0,_int_rshift,0,_int_and,0,_int_xor,0,_int_or,0,_int_coerce,0,_int_long,0,_int_float,0,_int_oct,0,_int_hex,0,_int_div,0,_int_true_divide,0,_int_dealloc,0,_int_print,0,_int_compare, -0,_int_to_decimal_string,0,_int_hash,0,_int_new,0,_int_free,0,_iter_len,0,_iter_dealloc,0,_iter_traverse,0,_iter_iternext,0,_calliter_dealloc,0,_calliter_traverse,0,_calliter_iternext,0,_sortwrapper_dealloc,0,_sortwrapper_richcompare,0,_cmpwrapper_dealloc,0,_cmpwrapper_call,0,_list_subscript,0,_list_reversed,0,_list_sizeof,0,_listappend,0,_listinsert,0,_listextend,0,_listpop,0,_listremove,0,_listindex,0,_listcount,0,_listreverse,0,_listsort,0,_list_length,0,_list_concat,0,_list_repeat,0,_list_item, -0,_list_slice,0,_list_ass_item,0,_list_ass_slice,0,_list_contains,0,_list_inplace_concat,0,_list_inplace_repeat,0,_list_ass_subscript,0,_list_dealloc,0,_list_print,0,_list_repr,0,_list_traverse,0,_list_clear,0,_list_richcompare,0,_list_iter,0,_list_init,0,_listiter_len,0,_listiter_dealloc,0,_listiter_traverse,0,_listiter_next,0,_listreviter_len,0,_listreviter_dealloc,0,_listreviter_traverse,0,_listreviter_next,0,_long_long,0,_long_bit_length,0,_long_getnewargs,0,_long__format__,0,_long_sizeof,0,_long_get0, -0,_long_get1,0,_long_add,0,_long_sub,0,_long_mul,0,_long_classic_div,0,_long_mod,0,_long_divmod,0,_long_pow,0,_long_neg,0,_long_abs,0,_long_nonzero,0,_long_invert,0,_long_lshift,0,_long_rshift,0,_long_and,0,_long_xor,0,_long_or,0,_long_coerce,0,_long_int,0,_long_float,0,_long_oct,0,_long_hex,0,_long_div,0,_long_true_divide,0,_long_dealloc,0,_long_compare,0,_long_repr,0,_long_hash,0,_long_str,0,_long_new,0,_marshal_dump,0,_marshal_load,0,_marshal_dumps,0,_marshal_loads,0,_memory_format_get,0,_memory_itemsize_get, -0,_memory_shape_get,0,_memory_strides_get,0,_memory_suboffsets_get,0,_memory_readonly_get,0,_memory_ndim_get,0,_memory_tobytes,0,_memory_tolist,0,_memory_length,0,_memory_subscript,0,_memory_ass_sub,0,_memory_item,0,_memory_getbuf,0,_memory_releasebuf,0,_memory_dealloc,0,_memory_repr,0,_memory_traverse,0,_memory_clear,0,_memory_richcompare,0,_memory_new,0,_meth_get__doc__,0,_meth_get__name__,0,_meth_get__self__,0,_meth_dealloc,0,_meth_compare,0,_meth_repr,0,_meth_hash,0,_PyCFunction_Call,0,_meth_traverse, -0,_meth_richcompare,0,_module_dealloc,0,_module_repr,0,_module_traverse,0,_module_init,0,_none_dealloc,0,_none_repr,0,__Py_HashPointer,0,_NotImplemented_repr,0,_PyObject_Size,0,_posix_access,0,_posix_ttyname,0,_posix_chdir,0,_posix_chmod,0,_posix_fchmod,0,_posix_chown,0,_posix_fchown,0,_posix_lchown,0,_posix_chroot,0,_posix_ctermid,0,_posix_getcwd,0,_posix_getcwdu,0,_posix_link,0,_posix_listdir,0,_posix_lstat,0,_posix_mkdir,0,_posix_nice,0,_posix_readlink,0,_posix_rename,0,_posix_rmdir,0,_posix_stat, -0,_stat_float_times,0,_posix_symlink,0,_posix_system,0,_posix_umask,0,_posix_uname,0,_posix_unlink,0,_posix_utime,0,_posix_times,0,_posix__exit,0,_posix_execv,0,_posix_execve,0,_posix_fork,0,_posix_openpty,0,_posix_forkpty,0,_posix_getegid,0,_posix_geteuid,0,_posix_getgid,0,_posix_getgroups,0,_posix_getpid,0,_posix_getpgrp,0,_posix_getppid,0,_posix_getuid,0,_posix_getlogin,0,_posix_kill,0,_posix_killpg,0,_posix_popen,0,_posix_setuid,0,_posix_seteuid,0,_posix_setegid,0,_posix_setreuid,0,_posix_setregid, -0,_posix_setgid,0,_posix_setgroups,0,_posix_initgroups,0,_posix_getpgid,0,_posix_setpgrp,0,_posix_wait,0,_posix_wait3,0,_posix_wait4,0,_posix_waitpid,0,_posix_getsid,0,_posix_setsid,0,_posix_setpgid,0,_posix_tcgetpgrp,0,_posix_tcsetpgrp,0,_posix_open,0,_posix_close,0,_posix_closerange,0,_posix_dup,0,_posix_dup2,0,_posix_lseek,0,_posix_read,0,_posix_write,0,_posix_fstat,0,_posix_fdopen,0,_posix_isatty,0,_posix_pipe,0,_posix_mkfifo,0,_posix_mknod,0,_posix_major,0,_posix_minor,0,_posix_makedev,0,_posix_ftruncate, -0,_posix_putenv,0,_posix_unsetenv,0,_posix_strerror,0,_posix_fchdir,0,_posix_fsync,0,_posix_fdatasync,0,_posix_WCOREDUMP,0,_posix_WIFCONTINUED,0,_posix_WIFSTOPPED,0,_posix_WIFSIGNALED,0,_posix_WIFEXITED,0,_posix_WEXITSTATUS,0,_posix_WTERMSIG,0,_posix_WSTOPSIG,0,_posix_fstatvfs,0,_posix_statvfs,0,_posix_tmpfile,0,_posix_tempnam,0,_posix_tmpnam,0,_posix_confstr,0,_posix_sysconf,0,_posix_fpathconf,0,_posix_pathconf,0,_posix_abort,0,_posix_getloadavg,0,_posix_setresuid,0,_posix_setresgid,0,_posix_getresuid, -0,_posix_getresgid,0,_pwd_getpwuid,0,_pwd_getpwnam,0,_pwd_getpwall,0,_ast_type_reduce,0,_ast_type_init,0,_range_length,0,_range_item,0,_range_reverse,0,_range_reduce,0,_range_repr,0,_range_iter,0,_range_new,0,_rangeiter_len,0,_rangeiter_next,0,_setiter_len,0,_setiter_dealloc,0,_setiter_traverse,0,_setiter_iternext,0,_set_len,0,_set_contains,0,_set_add,0,_set_clear,0,_set_direct_contains,0,_set_copy,0,_set_discard,0,_set_difference_multi,0,_set_difference_update,0,_set_intersection_multi,0,_set_intersection_update_multi, -0,_set_isdisjoint,0,_set_issubset,0,_set_issuperset,0,_set_pop,0,_set_reduce,0,_set_remove,0,_set_sizeof,0,_set_symmetric_difference,0,_set_symmetric_difference_update,0,_set_union,0,_set_update,0,_set_sub,0,_set_and,0,_set_xor,0,_set_or,0,_set_isub,0,_set_iand,0,_set_ixor,0,_set_ior,0,_set_dealloc,0,_set_tp_print,0,_set_nocmp,0,_set_repr,0,_set_traverse,0,_set_clear_internal,0,_set_richcompare,0,_set_iter,0,_set_init,0,_set_new,0,_frozenset_copy,0,_frozenset_hash,0,_frozenset_new,0,_signal_alarm, -0,_signal_setitimer,0,_signal_getitimer,0,_signal_signal,0,_signal_getsignal,0,_signal_set_wakeup_fd,0,_signal_pause,0,_signal_default_int_handler,0,_ellipsis_repr,0,_slice_indices,0,_slice_reduce,0,_slice_dealloc,0,_slice_compare,0,_slice_repr,0,_slice_hash,0,_slice_new,0,_pattern_match,0,_pattern_search,0,_pattern_sub,0,_pattern_subn,0,_pattern_split,0,_pattern_findall,0,_pattern_finditer,0,_pattern_scanner,0,_pattern_copy,0,_pattern_deepcopy,0,_pattern_dealloc,0,_match_group,0,_match_start,0,_match_end, -0,_match_span,0,_match_groups,0,_match_groupdict,0,_match_expand,0,_match_copy,0,_match_deepcopy,0,_match_lastindex_get,0,_match_lastgroup_get,0,_match_regs_get,0,_match_dealloc,0,_scanner_match,0,_scanner_search,0,_scanner_dealloc,0,__compile,0,_sre_codesize,0,_sre_getlower,0,_string_length,0,_string_concat,0,_string_repeat,0,_string_item,0,_string_slice,0,_string_contains,0,_string_subscript,0,_string_buffer_getreadbuf,0,_string_buffer_getwritebuf,0,_string_buffer_getsegcount,0,_string_buffer_getcharbuf, -0,_string_buffer_getbuffer,0,_formatteriter_dealloc,0,_formatteriter_next,0,_fieldnameiter_dealloc,0,_fieldnameiter_next,0,_string_join,0,_string_split,0,_string_rsplit,0,_string_lower,0,_string_upper,0,_string_islower,0,_string_isupper,0,_string_isspace,0,_string_isdigit,0,_string_istitle,0,_string_isalpha,0,_string_isalnum,0,_string_capitalize,0,_string_count,0,_string_endswith,0,_string_partition,0,_string_find,0,_string_index,0,_string_lstrip,0,_string_replace,0,_string_rfind,0,_string_rindex, -0,_string_rstrip,0,_string_rpartition,0,_string_startswith,0,_string_strip,0,_string_swapcase,0,_string_translate,0,_string_title,0,_string_ljust,0,_string_rjust,0,_string_center,0,_string_zfill,0,_do_string_format,0,_string__format__,0,_formatter_field_name_split,0,_formatter_parser,0,_string_encode,0,_string_decode,0,_string_expandtabs,0,_string_splitlines,0,_string_sizeof,0,_string_getnewargs,0,_string_mod,0,_basestring_new,0,_string_dealloc,0,_string_print,0,_string_repr,0,_string_hash,0,_string_str, -0,_string_richcompare,0,_string_new,0,_structseq_length,0,_structseq_concat,0,_structseq_repeat,0,_structseq_item,0,_structseq_slice,0,_structseq_contains,0,_structseq_subscript,0,_structseq_reduce,0,_structseq_dealloc,0,_structseq_repr,0,_structseq_hash,0,_structseq_richcompare,0,_structseq_new4467,0,_symtable_symtable,0,_ste_dealloc,0,_ste_repr,0,_PyEval_GetCallStats,0,_sys_clear_type_cache,0,_sys_current_frames,0,_sys_displayhook,0,_sys_exc_info,0,_sys_exc_clear,0,_sys_excepthook,0,_sys_exit,0, -_sys_getdefaultencoding,0,_sys_getdlopenflags,0,_sys_getfilesystemencoding,0,_sys_getrefcount,0,_sys_getrecursionlimit,0,_sys_getsizeof,0,_sys_getframe,0,_sys_setdefaultencoding,0,_sys_setcheckinterval,0,_sys_getcheckinterval,0,_sys_setdlopenflags,0,_sys_setprofile,0,_sys_getprofile,0,_sys_setrecursionlimit,0,_sys_settrace,0,_sys_gettrace,0,_sys_call_tracing,0,_tb_dealloc,0,_tb_traverse,0,_tb_clear,0,_tuplelength,0,_tupleconcat,0,_tuplerepeat,0,_tupleitem,0,_tupleslice,0,_tuplecontains,0,_tuple_getnewargs, -0,_tuple_sizeof,0,_tupleindex,0,_tuplecount,0,_tuplesubscript,0,_tupledealloc,0,_tupleprint,0,_tuplerepr,0,_tuplehash,0,_tupletraverse,0,_tuplerichcompare,0,_tuple_iter,0,_tuple_new,0,_tupleiter_len,0,_tupleiter_dealloc,0,_tupleiter_traverse,0,_tupleiter_next,0,_type_name,0,_type_set_name,0,_type_get_bases,0,_type_set_bases,0,_type_module,0,_type_set_module,0,_type_abstractmethods,0,_type_set_abstractmethods,0,_type_dict,0,_type_get_doc,0,_subtype_dict,0,_subtype_setdict,0,_subtype_getweakref,0,_mro_external, -0,_type_subclasses,0,_type___instancecheck__,0,_type___subclasscheck__,0,_type_dealloc,0,_type_repr,0,_type_call,0,_type_getattro,0,_type_setattro,0,_type_traverse,0,_type_clear,0,_type_richcompare,0,_type_init,0,_type_is_gc,0,_object_get_class,0,_object_set_class,0,_object_reduce_ex,0,_object_reduce,0,_object_subclasshook,0,_object_format,0,_object_sizeof,0,_object_dealloc,0,_object_str,0,_slot_sq_length,0,_wrap_lenfunc,0,_wrap_binaryfunc,0,_wrap_indexargfunc,0,_slot_sq_item,0,_wrap_sq_item,0,_slot_sq_slice, -0,_wrap_ssizessizeargfunc,0,_slot_sq_ass_item,0,_wrap_sq_setitem,0,_wrap_sq_delitem,0,_slot_sq_ass_slice,0,_wrap_ssizessizeobjargproc,0,_wrap_delslice,0,_slot_sq_contains,0,_wrap_objobjproc,0,_slot_mp_subscript,0,_slot_mp_ass_subscript,0,_wrap_objobjargproc,0,_wrap_delitem,0,_wrap_binaryfunc_l,0,_wrap_binaryfunc_r,0,_wrap_ternaryfunc,0,_wrap_ternaryfunc_r,0,_slot_nb_negative,0,_wrap_unaryfunc,0,_slot_nb_positive,0,_slot_nb_absolute,0,_slot_nb_nonzero,0,_wrap_inquirypred,0,_slot_nb_invert,0,_wrap_coercefunc, -0,_slot_nb_int,0,_slot_nb_long,0,_slot_nb_float,0,_slot_nb_oct,0,_slot_nb_hex,0,_slot_nb_index,0,_slot_nb_inplace_add,0,_slot_nb_inplace_subtract,0,_slot_nb_inplace_multiply,0,_slot_nb_inplace_divide,0,_slot_nb_inplace_remainder,0,_slot_nb_inplace_power,0,_slot_nb_inplace_lshift,0,_slot_nb_inplace_rshift,0,_slot_nb_inplace_and,0,_slot_nb_inplace_xor,0,_slot_nb_inplace_or,0,_slot_nb_inplace_floor_divide,0,_slot_nb_inplace_true_divide,0,_slot_tp_str,0,_slot_tp_repr,0,_wrap_cmpfunc,0,_slot_tp_hash,0, -_wrap_hashfunc,0,_slot_tp_call,0,_wrap_call,0,_slot_tp_getattr_hook,0,_slot_tp_setattro,0,_wrap_setattr,0,_wrap_delattr,0,_richcmp_lt,0,_richcmp_le,0,_richcmp_eq,0,_richcmp_ne,0,_richcmp_gt,0,_richcmp_ge,0,_slot_tp_iter,0,_slot_tp_iternext,0,_wrap_next,0,_wrap_descr_get,0,_slot_tp_descr_set,0,_wrap_descr_set,0,_wrap_descr_delete,0,_slot_tp_init,0,_wrap_init,0,_slot_tp_new,0,_slot_tp_del,0,_super_dealloc,0,_super_repr,0,_super_getattro,0,_super_traverse,0,_super_descr_get,0,_super_init,0,_encoding_map_size, -0,_encoding_map_dealloc,0,_formatteriter_dealloc5546,0,_formatteriter_next5547,0,_fieldnameiter_dealloc5549,0,_fieldnameiter_next5550,0,_unicode_encode,0,_unicode_replace,0,_unicode_split,0,_unicode_rsplit,0,_unicode_join,0,_unicode_capitalize,0,_unicode_title,0,_unicode_center,0,_unicode_count,0,_unicode_expandtabs,0,_unicode_find,0,_unicode_partition,0,_unicode_index,0,_unicode_ljust,0,_unicode_lower,0,_unicode_lstrip,0,_unicode_decode,0,_unicode_rfind,0,_unicode_rindex,0,_unicode_rjust,0,_unicode_rstrip, -0,_unicode_rpartition,0,_unicode_splitlines,0,_unicode_strip,0,_unicode_swapcase,0,_unicode_translate,0,_unicode_upper,0,_unicode_startswith,0,_unicode_endswith,0,_unicode_islower,0,_unicode_isupper,0,_unicode_istitle,0,_unicode_isspace,0,_unicode_isdecimal,0,_unicode_isdigit,0,_unicode_isnumeric,0,_unicode_isalpha,0,_unicode_isalnum,0,_unicode_zfill,0,_do_string_format5545,0,_unicode__format__,0,_formatter_field_name_split5551,0,_formatter_parser5548,0,_unicode__sizeof__,0,_unicode_getnewargs,0, -_unicode_mod,0,_unicode_length,0,_PyUnicodeUCS2_Concat,0,_unicode_repeat,0,_unicode_getitem,0,_unicode_slice,0,_PyUnicodeUCS2_Contains,0,_unicode_subscript,0,_unicode_buffer_getreadbuf,0,_unicode_buffer_getwritebuf,0,_unicode_buffer_getsegcount,0,_unicode_buffer_getcharbuf,0,_unicode_dealloc,0,_unicode_repr,0,_unicode_hash,0,_unicode_str,0,_PyUnicodeUCS2_RichCompare,0,_unicode_new,0,_warnings_warn,0,_warnings_warn_explicit,0,_weakref_getweakrefcount,0,_weakref_getweakrefs,0,_weakref_proxy,0,_weakref_dealloc, -0,_weakref_repr,0,_weakref_hash,0,_weakref_call,0,_gc_traverse,0,_gc_clear,0,_weakref_richcompare,0,_weakref___init__,0,_weakref___new__,0,_proxy_unicode,0,_proxy_add,0,_proxy_sub,0,_proxy_mul,0,_proxy_div,0,_proxy_mod,0,_proxy_divmod,0,_proxy_pow,0,_proxy_neg,0,_proxy_pos,0,_proxy_abs,0,_proxy_nonzero,0,_proxy_invert,0,_proxy_lshift,0,_proxy_rshift,0,_proxy_and,0,_proxy_xor,0,_proxy_or,0,_proxy_int,0,_proxy_long,0,_proxy_float,0,_proxy_iadd,0,_proxy_isub,0,_proxy_imul,0,_proxy_idiv,0,_proxy_imod, -0,_proxy_ipow,0,_proxy_ilshift,0,_proxy_irshift,0,_proxy_iand,0,_proxy_ixor,0,_proxy_ior,0,_proxy_floor_div,0,_proxy_true_div,0,_proxy_ifloor_div,0,_proxy_itrue_div,0,_proxy_index,0,_proxy_length,0,_proxy_slice,0,_proxy_ass_slice,0,_proxy_contains5654,0,_proxy_getitem5655,0,_proxy_setitem,0,_proxy_dealloc5653,0,_proxy_compare5652,0,_proxy_repr,0,_proxy_str5651,0,_proxy_getattr,0,_proxy_setattr,0,_proxy_iter,0,_proxy_iternext,0,_proxy_call,0,_spamlist_getstate,0,_spamlist_setstate,0,_spamlist_specialmeth, -0,_spamlist_state_get,0,_spamlist_init,0,_spamdict_getstate,0,_spamdict_setstate,0,_spamdict_init,0,_spam_bench,0,_zipimporter_find_module,0,_zipimporter_load_module,0,_zipimporter_get_data,0,_zipimporter_get_code,0,_zipimporter_get_source,0,_zipimporter_get_filename,0,_zipimporter_is_package,0,_zipimporter_dealloc,0,_zipimporter_repr,0,_zipimporter_traverse,0,_zipimporter_init,0]; -Module.callMain=function(g){function e(){for(var b=0;b<3;b++)a.push(0)}var b=g.length+1,a=[allocate(intArrayFromString("/bin/this.program"),"i8",ALLOC_STATIC)];e();for(var c=0;c"), - this.flags=allocate([0],"i32",ALLOC_NORMAL), - this.globals=_PyModule_GetDict(this.module), - this.isInitialized=!0, - this.eval('def help(x):\n print getattr(x, "__doc__", "No documentation.")\n print ""\n print "For detailed help, run \'from pydoc import help\' (slow)."') - ) - }, - - eval : function(g) { - if (!this.isInitialized) throw Error("Python runtime not initialized."); - var g=this.allocateString(g), - e=_Py_CompileStringFlags( - g, - this.filename, - this.Py_eval_input, - this.flags - ); - e === 0 && (_PyErr_Clear(),e=_Py_CompileStringFlags(g,this.filename,this.Py_file_input,this.flags)); - if(e===0)_PyErr_Print(),_free(g); - else { - var b=_PyEval_EvalCode(e,this.globals,this.globals); - if(b===0)_PyErr_Print(),_Py_DecRef(e),_free(g); - else{ - var a=Pointer_stringify(_PyString_AsString(_PyObject_Repr(b))); - a==="None"&&(a=null); - _Py_DecRef(e); - _Py_DecRef(b); - _free(g); - return a - } - } - }, - - isFinished : function(g){ - if(!this.isInitialized)throw Error("Python runtime not initialized."); - var g=this.allocateString(g),e=_Py_CompileStringFlags(g,this.filename,this.Py_eval_input,this.flags); - e === 0 && (_PyErr_Clear(),e=_Py_CompileStringFlags(g,this.filename,this.Py_file_input,this.flags)); - if(e!==0)return _free(g),!0; - var e=allocate([0],"void*",ALLOC_NORMAL),b=allocate([0],"void*",ALLOC_NORMAL),a=allocate([0],"void*",ALLOC_NORMAL),c=allocate([0],"void*",ALLOC_NORMAL),d=allocate([0],"i8*",ALLOC_NORMAL),f=this.allocateString("sO"); - _PyErr_Fetch(e,b,a); - var h=allocate([d,0,0,0,c,0,0,0],["i8**",0,0,0,"void*",0,0,0],ALLOC_NORMAL); - _PyArg_ParseTuple(getValue(b,"void*"),f,h); - var j=Pointer_stringify(getValue(d,"i8*")), - j = j!="unexpected EOF while parsing" && j!="EOF while scanning triple-quoted string literal"; - _Py_DecRef(e); - _Py_DecRef(b); - _Py_DecRef(a); - _free(h); - _free(g); - _free(f); - _free(d); - _free(c); - _free(a); - _free(b); - _free(e); - return j - }, - - isInitialized : !1, - flags : null, - filename : null, - module : null, - Py_single_input : 256, - Py_file_input : 257, - Py_eval_input : 258, - - allocateString : function(g){ - return allocate(intArrayFromString(g),"i8",ALLOC_NORMAL) - } - -}; - -this.FS = FS; \ No newline at end of file diff --git a/pythonjs/fakelibs/os.py b/pythonjs/fakelibs/os.py deleted file mode 100644 index ff13249..0000000 --- a/pythonjs/fakelibs/os.py +++ /dev/null @@ -1,82 +0,0 @@ -_fs = require('fs') -_path = require('path') - - -class _fake_path: - def __init__(self): - self.sep = _path.sep - - def join(self, a, b): - return _path.join( a, b ) - - def normpath(self, path): - return _path.normalize( path ) - - def dirname(self, path): - return _path.dirname( path ) - - def basename(self, path): - return _path.basename( path ) - - def split(self, path): - a = self.dirname(path) - b = self.basename(path) - return [a,b] - - def exists(self, path): ## this is new - missing in Node v0.6.19 - return _fs.existsSync(path) - - def abspath(self, path): - return _path.resolve( path ) - - def expanduser(self, path): - ## assume that path starts with "~/" - return self.join( process.env.HOME, path[2:] ) - - def isdir(self, path): - if self.exists( path ): - with javascript: - stat = _fs.statSync( path ) - if stat: - return stat.isDirectory() - else: - return False - return False - - def isfile(self, path): - if self.exists( path ): - with javascript: - stat = _fs.statSync( path ) - if stat: - return stat.isFile() - else: - return False - return False - -class _fake_os: - def __init__(self): - self.environ = process.env - self.path = _fake_path() - - def abort(self): - process.abort() - - def chrdir(self, path): - process.chdir( path ) - - def getcwd(self): - return process.cwd() - - def getpid(self): - return process.pid - - def listdir(self, path): - return _fs.readdirSync(path) - - def mkdir(self, path): - _fs.mkdirSync( path ) - - def stat(self, path): - return _fs.statSync( path ) - -os = _fake_os() diff --git a/pythonjs/fakelibs/subprocess.py b/pythonjs/fakelibs/subprocess.py deleted file mode 100644 index 4a87e24..0000000 --- a/pythonjs/fakelibs/subprocess.py +++ /dev/null @@ -1,119 +0,0 @@ -__cp__ = require('child_process') - -class Popen: - def __init__(self, executeable=None, args=[], stdin='ignore', stdout='ignore', stderr='ignore', cwd=None, env=None, detached=False, callback=None, error_callback=None, returns_binary=False): - if stdin is None: stdin = 'pipe' - elif stdin == -1: stdin = 'pipe' - self._echo_stdout = False - self._echo_stderr = False - if stdout is None: - stdout = 'pipe' - self._echo_stdout = True - if stderr is None: - stderr = process.stderr - self._echo_stderr = True - - with javascript: - if env is None: env = process.env - options = { - 'cwd': cwd, - 'stdio' : [stdin, stdout, stderr], - 'env' : env, - 'detached' : detached - } - proc = __cp__.spawn( executeable, args, options ) - self[...] = proc - #print 'proc.stdio', proc.stdio ## this is in the new API? - - self.stdin = proc.stdin - self.stdout = proc.stdout - self.stderr = proc.stderr - if self.stderr: - self.stderr.setEncoding('utf8') ## assume that errors are always text - - self.stdout_callback = callback - self.stderr_callback = error_callback - self._returns_binary = returns_binary - self._stdout_buff = [] - self._stderr_buff = [] - - if self._echo_stdout or self.stdout_callback: - if self.stdout_callback: - self._hookup_stdout( echo=False ) - else: - self._hookup_stdout( echo=True ) - - if self._echo_stderr: - self._hookup_stderr() - - def _read_stdout(self, data): - if self._echo_stdout: - print data - self._stdout_buff.append( data ) - - def _read_stderr(self, data): - if self._echo_stderr: - print data - self._stderr_buff.append( data ) - - def _end_stdout(self): - if len( self._stdout_buff ) == 1: - data = self._stdout_buff[0] - elif not self._returns_binary: - data = ''.join( self._stdout_buff ) - else: - print 'TODO' - if self.stdout_callback: - self.stdout_callback( data ) - else: - print 'WARNING: no stdout callback assigned' - - def _end_stderr(self): - data = ''.join( self._stderr_buffer ) - if self.stderr_callback: - self.stderr_callback( data ) - - def _hookup_stdout(self, echo=False): - self._stdout_buff = [] - self._echo_stdout = echo - if self.stdout: - if not self._returns_binary: self.stdout.setEncoding( 'utf8' ) - self.stdout.on('data', self._read_stdout ) - self.stdout.on('end', self._end_stdout ) - else: - print 'WARNING: tried to hookup stdout, but it is null' - - def _hookup_stderr(self): - self._stderr_buff = [] - self.stderr.on('data', self._read_stderr ) - self.stderr.on('end', self._end_stderr ) - - - def communicate(self, data, encoding='utf8', returns_binary=False, callback=None, error_callback=None): - ## TODO fix me - def flushed(): print 'write data flushed' - print 'communicate->', data - self.stdin.write( data, encoding, flushed ) - self.stdout_callback = callback - self.stderr_callback = error_callback - self._returns_binary = returns_binary - self._hookup_stdout( echo=True ) - self._hookup_stderr() - return [ self.stdout, self.stderr ] - - - -class _fake_subprocess: - def __init__(self): - self.PIPE = -1 ## in python this is -1, nodejs has "pipe" - self.Popen = Popen - - - def call(self, executeable=None, args=[], callback=None, stdin='ignore', stdout=None, stderr='ignore', cwd=None, env=None): - print 'subprocess.call' - print executeable - p = Popen( executeable=executeable, args=args, callback=callback, stdin=stdin, stdout=stdout, stderr=stderr, cwd=cwd, env=env ) - return p - - -subprocess = _fake_subprocess() diff --git a/pythonjs/fakelibs/sys.py b/pythonjs/fakelibs/sys.py deleted file mode 100644 index 231e23d..0000000 --- a/pythonjs/fakelibs/sys.py +++ /dev/null @@ -1,12 +0,0 @@ - -class _fake_sys: - def __init__(self): - self.stdin = process.stdin - self.stdout = process.stdout - self.stderr = process.stderr - self.argv = process.argv - - def exit(self): - process.exit() - -sys = _fake_sys() diff --git a/pythonjs/fakelibs/tempfile.py b/pythonjs/fakelibs/tempfile.py deleted file mode 100644 index 6f5fc42..0000000 --- a/pythonjs/fakelibs/tempfile.py +++ /dev/null @@ -1,7 +0,0 @@ -_os = require('os') - -with javascript: - tempfile = { - 'gettempdir' : lambda : _os.tmpdir() - } - diff --git a/pythonjs/fakelibs/tornado.py b/pythonjs/fakelibs/tornado.py deleted file mode 100644 index 0aa02ec..0000000 --- a/pythonjs/fakelibs/tornado.py +++ /dev/null @@ -1,156 +0,0 @@ -with javascript: - __http = require('http') - __urlparser = require('url') - __ws = require('ws') ## npm install ws - -class _fake_RequestHandler: - def __init__(self, response): - self._response = response - self._headers = {} - - def set_header(self, key, value): - self._headers[ key ] = value - if key == 'Content-Length': - self._headers.pop( 'Transfer-Encoding' ) - print 'set Content-Length and popped Transfer-Encoding' - print value - elif key == 'Content-Type': - print 'set Content-Type' - print value - - def write(self, data): - self._response.writeHead(200, self._headers[...]) - self._response.write( data ) - self._response.end() - - def finish(self): - self._response.end() - - -class _fake_app: - def __init__(self, handlers): - self._handlers = {} - self._handler_keys = [] - #self._ws_handlers = {} ## TODO support multiple websocket paths - self._ws_handler = None - for a in handlers: - hclass = a[1] - if issubclass( hclass, _fake_WebSocketHandler): - #self._ws_handlers[ a[0] ] = hclass - self._ws_handler = hclass - self._ws_path = a[0] - else: - self._handlers[ a[0] ] = hclass - self._handler_keys.append( a[0] ) - - - self[...] = __http.createServer( self.on_request ) - - def on_request(self, request, response): - print 'got request' - url = __urlparser.parse( request.url ) - print url.pathname - handler = None - prefix = None - #for key in self._handlers: - for key in self._handler_keys: - print 'checking handler->', key - if url.pathname.startswith(key): - handler = self._handlers[key]( response ) - prefix = key - print 'GOT HANDLER', key - break - - if handler: - handler.set_header('Transfer-Encoding', 'chunked') - s = url.pathname[len(prefix):] ## strip prefix - handler.get( s ) ## subclass of tornado.web.RequestHandler defines `get` - else: - print 'ERROR: no handler' - response.writeHead(404) - response.end() - - def listen(self, port, address=""): - print 'listening on:', port - - server = self[...] - - if self._ws_handler: - options = { - 'server' : server, - 'path' : self._ws_path - } - with javascript: - wss = new( __ws.Server(options[...]) ) - print 'wss', wss - self.wss = wss - self.wss.on('connection', self.on_ws_connection) - - server.listen( port , address) - - def on_ws_connection(self, ws): ## ws is a websocket client - print 'new ws connection' - handler = self._ws_handler( ws ) - handler.open() - ## handler.on_message will be called with: data, flags - ## flags.binary = true/false - ## flags.masked = true/false - ws.on('message', handler.on_message) - - - -class _fake_web: - def __init__(self): - self.RequestHandler = _fake_RequestHandler - self.Application = _fake_app - - def HTTPError(self, code): - return code - -class _fake_request: - def __init__(self, client): - self.connection = client - -class _fake_WebSocketHandler: - def __init__(self, client): - self.request = _fake_request( client ) - self.ws_connection = client - - def write_message(self, data, binary=False, mask=False): - if isinstance( data, dict): - data = json.dumps( data[...] ) - self.ws_connection.send( data, {'binary':False, 'mask':False}[...] ) - else: - self.ws_connection.send( data, {'binary':binary, 'mask':mask}[...] ) - - ## subclass overloads these - def open(self): - print 'on websocket open' - - def on_message(self, msg): - print 'on websocket message' - - def on_close(self): - print 'closed websocket connection' - - -class _fake_websocket: - def __init__(self): - self.WebSocketHandler = _fake_WebSocketHandler - - - - -class _fake_tornado: - def __init__(self): - self.web = _fake_web() - self.websocket = _fake_websocket() - with javascript: - start = lambda : None - self.ioloop = { - "IOLoop": { - "instance" : lambda : {'start':start} - } - } - -tornado = _fake_tornado() diff --git a/pythonjs/inline_function.py b/pythonjs/inline_function.py deleted file mode 100644 index cb67c62..0000000 --- a/pythonjs/inline_function.py +++ /dev/null @@ -1,88 +0,0 @@ -# AST Function Inliner -# by Brett Hartshorn - copyright 2013 -# License: "New BSD" -import ast, copy -from ast_utils import * - -class Inliner: - def setup_inliner(self, writer): - self.writer = writer - self._with_inline = False - self._inline = [] - self._inline_ids = 0 - self._inline_breakout = False - - def inline_helper_remap_names(self, remap): - return "JS('var %s')" %','.join(remap.values()) - - def inline_helper_return_id(self, return_id): - return "JS('var __returns__%s = null')"%return_id - - def inline_function(self, node): - name = self.visit(node.func) - fnode = self._global_functions[ name ] - fnode = copy.deepcopy( fnode ) - finfo = inspect_function( fnode ) - remap = {} - for n in finfo['name_nodes']: - if n.id not in finfo['locals']: continue - - if isinstance(n.id, ast.Name): - raise RuntimeError - - if n.id not in remap: - new_name = n.id + '_%s'%self._inline_ids - remap[ n.id ] = new_name - self._inline_ids += 1 - - n.id = remap[ n.id ] - - if remap: - self.writer.write( self.inline_helper_remap_names(remap) ) - for n in remap: - if n in finfo['typedefs']: - self._func_typedefs[ remap[n] ] = finfo['typedefs'][n] - - offset = len(fnode.args.args) - len(fnode.args.defaults) - for i,ad in enumerate(fnode.args.args): - if i < len(node.args): - ac = self.visit( node.args[i] ) - else: - assert fnode.args.defaults - dindex = i - offset - ac = self.visit( fnode.args.defaults[dindex] ) - - ad = remap[ self.visit(ad) ] - self.writer.write( "%s = %s" %(ad, ac) ) - - - return_id = name + str(self._inline_ids) - self._inline.append( return_id ) - - self.writer.write( self.inline_helper_return_id( return_id )) - #if len( finfo['return_nodes'] ) > 1: ## TODO fix me - if True: - self._inline_breakout = True - self.writer.write('while True:') - self.writer.push() - for b in fnode.body: - self.visit(b) - - if not len( finfo['return_nodes'] ): - self.writer.write('break') - self.writer.pull() - #self._inline_breakout = False - else: - for b in fnode.body: - self.visit(b) - - if self._inline.pop() != return_id: - raise RuntimeError - - for n in remap: - gname = remap[n] - for n in finfo['name_nodes']: - if n.id == gname: - n.id = n - - return '__returns__%s' %return_id diff --git a/pythonjs/lib/python2.7/StringIO.py b/pythonjs/lib/python2.7/StringIO.py deleted file mode 100644 index f74a066..0000000 --- a/pythonjs/lib/python2.7/StringIO.py +++ /dev/null @@ -1,324 +0,0 @@ -r"""File-like objects that read from or write to a string buffer. - -This implements (nearly) all stdio methods. - -f = StringIO() # ready for writing -f = StringIO(buf) # ready for reading -f.close() # explicitly release resources held -flag = f.isatty() # always false -pos = f.tell() # get current position -f.seek(pos) # set current position -f.seek(pos, mode) # mode 0: absolute; 1: relative; 2: relative to EOF -buf = f.read() # read until EOF -buf = f.read(n) # read up to n bytes -buf = f.readline() # read until end of line ('\n') or EOF -list = f.readlines()# list of f.readline() results until EOF -f.truncate([size]) # truncate file at to at most size (default: current pos) -f.write(buf) # write at current position -f.writelines(list) # for line in list: f.write(line) -f.getvalue() # return whole file's contents as a string - -Notes: -- Using a real file is often faster (but less convenient). -- There's also a much faster implementation in C, called cStringIO, but - it's not subclassable. -- fileno() is left unimplemented so that code which uses it triggers - an exception early. -- Seeking far beyond EOF and then writing will insert real null - bytes that occupy space in the buffer. -- There's a simple test set (see end of this file). -""" -try: - from errno import EINVAL -except ImportError: - EINVAL = 22 - -__all__ = ["StringIO"] - -def _complain_ifclosed(closed): - if closed: - raise ValueError, "I/O operation on closed file" - -class StringIO: - """class StringIO([buffer]) - - When a StringIO object is created, it can be initialized to an existing - string by passing the string to the constructor. If no string is given, - the StringIO will start empty. - - The StringIO object can accept either Unicode or 8-bit strings, but - mixing the two may take some care. If both are used, 8-bit strings that - cannot be interpreted as 7-bit ASCII (that use the 8th bit) will cause - a UnicodeError to be raised when getvalue() is called. - """ - def __init__(self, buf = ''): - # Force self.buf to be a string or unicode - if not isinstance(buf, basestring): - buf = str(buf) - self.buf = buf - self.len = len(buf) - self.buflist = [] - self.pos = 0 - self.closed = False - self.softspace = 0 - - def __iter__(self): - return self - - def next(self): - """A file object is its own iterator, for example iter(f) returns f - (unless f is closed). When a file is used as an iterator, typically - in a for loop (for example, for line in f: print line), the next() - method is called repeatedly. This method returns the next input line, - or raises StopIteration when EOF is hit. - """ - _complain_ifclosed(self.closed) - r = self.readline() - if not r: - raise StopIteration - return r - - def close(self): - """Free the memory buffer. - """ - if not self.closed: - self.closed = True - del self.buf, self.pos - - def isatty(self): - """Returns False because StringIO objects are not connected to a - tty-like device. - """ - _complain_ifclosed(self.closed) - return False - - def seek(self, pos, mode = 0): - """Set the file's current position. - - The mode argument is optional and defaults to 0 (absolute file - positioning); other values are 1 (seek relative to the current - position) and 2 (seek relative to the file's end). - - There is no return value. - """ - _complain_ifclosed(self.closed) - if self.buflist: - self.buf += ''.join(self.buflist) - self.buflist = [] - if mode == 1: - pos += self.pos - elif mode == 2: - pos += self.len - self.pos = max(0, pos) - - def tell(self): - """Return the file's current position.""" - _complain_ifclosed(self.closed) - return self.pos - - def read(self, n = -1): - """Read at most size bytes from the file - (less if the read hits EOF before obtaining size bytes). - - If the size argument is negative or omitted, read all data until EOF - is reached. The bytes are returned as a string object. An empty - string is returned when EOF is encountered immediately. - """ - _complain_ifclosed(self.closed) - if self.buflist: - self.buf += ''.join(self.buflist) - self.buflist = [] - if n is None or n < 0: - newpos = self.len - else: - newpos = min(self.pos+n, self.len) - r = self.buf[self.pos:newpos] - self.pos = newpos - return r - - def readline(self, length=None): - r"""Read one entire line from the file. - - A trailing newline character is kept in the string (but may be absent - when a file ends with an incomplete line). If the size argument is - present and non-negative, it is a maximum byte count (including the - trailing newline) and an incomplete line may be returned. - - An empty string is returned only when EOF is encountered immediately. - - Note: Unlike stdio's fgets(), the returned string contains null - characters ('\0') if they occurred in the input. - """ - _complain_ifclosed(self.closed) - if self.buflist: - self.buf += ''.join(self.buflist) - self.buflist = [] - i = self.buf.find('\n', self.pos) - if i < 0: - newpos = self.len - else: - newpos = i+1 - if length is not None and length > 0: - if self.pos + length < newpos: - newpos = self.pos + length - r = self.buf[self.pos:newpos] - self.pos = newpos - return r - - def readlines(self, sizehint = 0): - """Read until EOF using readline() and return a list containing the - lines thus read. - - If the optional sizehint argument is present, instead of reading up - to EOF, whole lines totalling approximately sizehint bytes (or more - to accommodate a final whole line). - """ - total = 0 - lines = [] - line = self.readline() - while line: - lines.append(line) - total += len(line) - if 0 < sizehint <= total: - break - line = self.readline() - return lines - - def truncate(self, size=None): - """Truncate the file's size. - - If the optional size argument is present, the file is truncated to - (at most) that size. The size defaults to the current position. - The current file position is not changed unless the position - is beyond the new file size. - - If the specified size exceeds the file's current size, the - file remains unchanged. - """ - _complain_ifclosed(self.closed) - if size is None: - size = self.pos - elif size < 0: - raise IOError(EINVAL, "Negative size not allowed") - elif size < self.pos: - self.pos = size - self.buf = self.getvalue()[:size] - self.len = size - - def write(self, s): - """Write a string to the file. - - There is no return value. - """ - _complain_ifclosed(self.closed) - if not s: return - # Force s to be a string or unicode - if not isinstance(s, basestring): - s = str(s) - spos = self.pos - slen = self.len - if spos == slen: - self.buflist.append(s) - self.len = self.pos = spos + len(s) - return - if spos > slen: - self.buflist.append('\0'*(spos - slen)) - slen = spos - newpos = spos + len(s) - if spos < slen: - if self.buflist: - self.buf += ''.join(self.buflist) - self.buflist = [self.buf[:spos], s, self.buf[newpos:]] - self.buf = '' - if newpos > slen: - slen = newpos - else: - self.buflist.append(s) - slen = newpos - self.len = slen - self.pos = newpos - - def writelines(self, iterable): - """Write a sequence of strings to the file. The sequence can be any - iterable object producing strings, typically a list of strings. There - is no return value. - - (The name is intended to match readlines(); writelines() does not add - line separators.) - """ - write = self.write - for line in iterable: - write(line) - - def flush(self): - """Flush the internal buffer - """ - _complain_ifclosed(self.closed) - - def getvalue(self): - """ - Retrieve the entire contents of the "file" at any time before - the StringIO object's close() method is called. - - The StringIO object can accept either Unicode or 8-bit strings, - but mixing the two may take some care. If both are used, 8-bit - strings that cannot be interpreted as 7-bit ASCII (that use the - 8th bit) will cause a UnicodeError to be raised when getvalue() - is called. - """ - _complain_ifclosed(self.closed) - if self.buflist: - self.buf += ''.join(self.buflist) - self.buflist = [] - return self.buf - - -# A little test suite - -def test(): - import sys - if sys.argv[1:]: - file = sys.argv[1] - else: - file = '/etc/passwd' - lines = open(file, 'r').readlines() - text = open(file, 'r').read() - f = StringIO() - for line in lines[:-2]: - f.write(line) - f.writelines(lines[-2:]) - if f.getvalue() != text: - raise RuntimeError, 'write failed' - length = f.tell() - print 'File length =', length - f.seek(len(lines[0])) - f.write(lines[1]) - f.seek(0) - print 'First line =', repr(f.readline()) - print 'Position =', f.tell() - line = f.readline() - print 'Second line =', repr(line) - f.seek(-len(line), 1) - line2 = f.read(len(line)) - if line != line2: - raise RuntimeError, 'bad result after seek back' - f.seek(len(line2), 1) - list = f.readlines() - line = list[-1] - f.seek(f.tell() - len(line)) - line2 = f.read() - if line != line2: - raise RuntimeError, 'bad result after seek back from EOF' - print 'Read', len(list), 'more lines' - print 'File length =', f.tell() - if f.tell() != length: - raise RuntimeError, 'bad length' - f.truncate(length/2) - f.seek(0, 2) - print 'Truncated length =', f.tell() - if f.tell() != length/2: - raise RuntimeError, 'truncate did not adjust length' - f.close() - -if __name__ == '__main__': - test() diff --git a/pythonjs/lib/python2.7/UserDict.py b/pythonjs/lib/python2.7/UserDict.py deleted file mode 100644 index bb2218a..0000000 --- a/pythonjs/lib/python2.7/UserDict.py +++ /dev/null @@ -1,180 +0,0 @@ -"""A more or less complete user-defined wrapper around dictionary objects.""" - -class UserDict: - def __init__(self, dict=None, **kwargs): - self.data = {} - if dict is not None: - self.update(dict) - if len(kwargs): - self.update(kwargs) - def __repr__(self): return repr(self.data) - def __cmp__(self, dict): - if isinstance(dict, UserDict): - return cmp(self.data, dict.data) - else: - return cmp(self.data, dict) - __hash__ = None # Avoid Py3k warning - def __len__(self): return len(self.data) - def __getitem__(self, key): - if key in self.data: - return self.data[key] - if hasattr(self.__class__, "__missing__"): - return self.__class__.__missing__(self, key) - raise KeyError(key) - def __setitem__(self, key, item): self.data[key] = item - def __delitem__(self, key): del self.data[key] - def clear(self): self.data.clear() - def copy(self): - if self.__class__ is UserDict: - return UserDict(self.data.copy()) - import copy - data = self.data - try: - self.data = {} - c = copy.copy(self) - finally: - self.data = data - c.update(self) - return c - def keys(self): return self.data.keys() - def items(self): return self.data.items() - def iteritems(self): return self.data.iteritems() - def iterkeys(self): return self.data.iterkeys() - def itervalues(self): return self.data.itervalues() - def values(self): return self.data.values() - def has_key(self, key): return key in self.data - def update(self, dict=None, **kwargs): - if dict is None: - pass - elif isinstance(dict, UserDict): - self.data.update(dict.data) - elif isinstance(dict, type({})) or not hasattr(dict, 'items'): - self.data.update(dict) - else: - for k, v in dict.items(): - self[k] = v - if len(kwargs): - self.data.update(kwargs) - def get(self, key, failobj=None): - if key not in self: - return failobj - return self[key] - def setdefault(self, key, failobj=None): - if key not in self: - self[key] = failobj - return self[key] - def pop(self, key, *args): - return self.data.pop(key, *args) - def popitem(self): - return self.data.popitem() - def __contains__(self, key): - return key in self.data - @classmethod - def fromkeys(cls, iterable, value=None): - d = cls() - for key in iterable: - d[key] = value - return d - -class IterableUserDict(UserDict): - def __iter__(self): - return iter(self.data) - -import _abcoll -_abcoll.MutableMapping.register(IterableUserDict) - - -class DictMixin: - # Mixin defining all dictionary methods for classes that already have - # a minimum dictionary interface including getitem, setitem, delitem, - # and keys. Without knowledge of the subclass constructor, the mixin - # does not define __init__() or copy(). In addition to the four base - # methods, progressively more efficiency comes with defining - # __contains__(), __iter__(), and iteritems(). - - # second level definitions support higher levels - def __iter__(self): - for k in self.keys(): - yield k - def has_key(self, key): - try: - self[key] - except KeyError: - return False - return True - def __contains__(self, key): - return self.has_key(key) - - # third level takes advantage of second level definitions - def iteritems(self): - for k in self: - yield (k, self[k]) - def iterkeys(self): - return self.__iter__() - - # fourth level uses definitions from lower levels - def itervalues(self): - for _, v in self.iteritems(): - yield v - def values(self): - return [v for _, v in self.iteritems()] - def items(self): - return list(self.iteritems()) - def clear(self): - for key in self.keys(): - del self[key] - def setdefault(self, key, default=None): - try: - return self[key] - except KeyError: - self[key] = default - return default - def pop(self, key, *args): - if len(args) > 1: - raise TypeError, "pop expected at most 2 arguments, got "\ - + repr(1 + len(args)) - try: - value = self[key] - except KeyError: - if args: - return args[0] - raise - del self[key] - return value - def popitem(self): - try: - k, v = self.iteritems().next() - except StopIteration: - raise KeyError, 'container is empty' - del self[k] - return (k, v) - def update(self, other=None, **kwargs): - # Make progressively weaker assumptions about "other" - if other is None: - pass - elif hasattr(other, 'iteritems'): # iteritems saves memory and lookups - for k, v in other.iteritems(): - self[k] = v - elif hasattr(other, 'keys'): - for k in other.keys(): - self[k] = other[k] - else: - for k, v in other: - self[k] = v - if kwargs: - self.update(kwargs) - def get(self, key, default=None): - try: - return self[key] - except KeyError: - return default - def __repr__(self): - return repr(dict(self.iteritems())) - def __cmp__(self, other): - if other is None: - return 1 - if isinstance(other, DictMixin): - other = dict(other.iteritems()) - return cmp(dict(self.iteritems()), other) - def __len__(self): - return len(self.keys()) diff --git a/pythonjs/lib/python2.7/_abcoll.py b/pythonjs/lib/python2.7/_abcoll.py deleted file mode 100644 index e7376e4..0000000 --- a/pythonjs/lib/python2.7/_abcoll.py +++ /dev/null @@ -1,601 +0,0 @@ -# Copyright 2007 Google, Inc. All Rights Reserved. -# Licensed to PSF under a Contributor Agreement. - -"""Abstract Base Classes (ABCs) for collections, according to PEP 3119. - -DON'T USE THIS MODULE DIRECTLY! The classes here should be imported -via collections; they are defined here only to alleviate certain -bootstrapping issues. Unit tests are in test_collections. -""" - -from abc import ABCMeta, abstractmethod -import sys - -__all__ = ["Hashable", "Iterable", "Iterator", - "Sized", "Container", "Callable", - "Set", "MutableSet", - "Mapping", "MutableMapping", - "MappingView", "KeysView", "ItemsView", "ValuesView", - "Sequence", "MutableSequence", - ] - -### ONE-TRICK PONIES ### - -def _hasattr(C, attr): - try: - return any(attr in B.__dict__ for B in C.__mro__) - except AttributeError: - # Old-style class - return hasattr(C, attr) - - -class Hashable: - __metaclass__ = ABCMeta - - @abstractmethod - def __hash__(self): - return 0 - - @classmethod - def __subclasshook__(cls, C): - if cls is Hashable: - try: - for B in C.__mro__: - if "__hash__" in B.__dict__: - if B.__dict__["__hash__"]: - return True - break - except AttributeError: - # Old-style class - if getattr(C, "__hash__", None): - return True - return NotImplemented - - -class Iterable: - __metaclass__ = ABCMeta - - @abstractmethod - def __iter__(self): - while False: - yield None - - @classmethod - def __subclasshook__(cls, C): - if cls is Iterable: - if _hasattr(C, "__iter__"): - return True - return NotImplemented - -Iterable.register(str) - - -class Iterator(Iterable): - - @abstractmethod - def next(self): - raise StopIteration - - def __iter__(self): - return self - - @classmethod - def __subclasshook__(cls, C): - if cls is Iterator: - if _hasattr(C, "next") and _hasattr(C, "__iter__"): - return True - return NotImplemented - - -class Sized: - __metaclass__ = ABCMeta - - @abstractmethod - def __len__(self): - return 0 - - @classmethod - def __subclasshook__(cls, C): - if cls is Sized: - if _hasattr(C, "__len__"): - return True - return NotImplemented - - -class Container: - __metaclass__ = ABCMeta - - @abstractmethod - def __contains__(self, x): - return False - - @classmethod - def __subclasshook__(cls, C): - if cls is Container: - if _hasattr(C, "__contains__"): - return True - return NotImplemented - - -class Callable: - __metaclass__ = ABCMeta - - @abstractmethod - def __call__(self, *args, **kwds): - return False - - @classmethod - def __subclasshook__(cls, C): - if cls is Callable: - if _hasattr(C, "__call__"): - return True - return NotImplemented - - -### SETS ### - - -class Set(Sized, Iterable, Container): - """A set is a finite, iterable container. - - This class provides concrete generic implementations of all - methods except for __contains__, __iter__ and __len__. - - To override the comparisons (presumably for speed, as the - semantics are fixed), all you have to do is redefine __le__ and - then the other operations will automatically follow suit. - """ - - def __le__(self, other): - if not isinstance(other, Set): - return NotImplemented - if len(self) > len(other): - return False - for elem in self: - if elem not in other: - return False - return True - - def __lt__(self, other): - if not isinstance(other, Set): - return NotImplemented - return len(self) < len(other) and self.__le__(other) - - def __gt__(self, other): - if not isinstance(other, Set): - return NotImplemented - return other < self - - def __ge__(self, other): - if not isinstance(other, Set): - return NotImplemented - return other <= self - - def __eq__(self, other): - if not isinstance(other, Set): - return NotImplemented - return len(self) == len(other) and self.__le__(other) - - def __ne__(self, other): - return not (self == other) - - @classmethod - def _from_iterable(cls, it): - '''Construct an instance of the class from any iterable input. - - Must override this method if the class constructor signature - does not accept an iterable for an input. - ''' - return cls(it) - - def __and__(self, other): - if not isinstance(other, Iterable): - return NotImplemented - return self._from_iterable(value for value in other if value in self) - - def isdisjoint(self, other): - for value in other: - if value in self: - return False - return True - - def __or__(self, other): - if not isinstance(other, Iterable): - return NotImplemented - chain = (e for s in (self, other) for e in s) - return self._from_iterable(chain) - - def __sub__(self, other): - if not isinstance(other, Set): - if not isinstance(other, Iterable): - return NotImplemented - other = self._from_iterable(other) - return self._from_iterable(value for value in self - if value not in other) - - def __xor__(self, other): - if not isinstance(other, Set): - if not isinstance(other, Iterable): - return NotImplemented - other = self._from_iterable(other) - return (self - other) | (other - self) - - # Sets are not hashable by default, but subclasses can change this - __hash__ = None - - def _hash(self): - """Compute the hash value of a set. - - Note that we don't define __hash__: not all sets are hashable. - But if you define a hashable set type, its __hash__ should - call this function. - - This must be compatible __eq__. - - All sets ought to compare equal if they contain the same - elements, regardless of how they are implemented, and - regardless of the order of the elements; so there's not much - freedom for __eq__ or __hash__. We match the algorithm used - by the built-in frozenset type. - """ - MAX = sys.maxint - MASK = 2 * MAX + 1 - n = len(self) - h = 1927868237 * (n + 1) - h &= MASK - for x in self: - hx = hash(x) - h ^= (hx ^ (hx << 16) ^ 89869747) * 3644798167 - h &= MASK - h = h * 69069 + 907133923 - h &= MASK - if h > MAX: - h -= MASK + 1 - if h == -1: - h = 590923713 - return h - -Set.register(frozenset) - - -class MutableSet(Set): - - @abstractmethod - def add(self, value): - """Add an element.""" - raise NotImplementedError - - @abstractmethod - def discard(self, value): - """Remove an element. Do not raise an exception if absent.""" - raise NotImplementedError - - def remove(self, value): - """Remove an element. If not a member, raise a KeyError.""" - if value not in self: - raise KeyError(value) - self.discard(value) - - def pop(self): - """Return the popped value. Raise KeyError if empty.""" - it = iter(self) - try: - value = next(it) - except StopIteration: - raise KeyError - self.discard(value) - return value - - def clear(self): - """This is slow (creates N new iterators!) but effective.""" - try: - while True: - self.pop() - except KeyError: - pass - - def __ior__(self, it): - for value in it: - self.add(value) - return self - - def __iand__(self, it): - for value in (self - it): - self.discard(value) - return self - - def __ixor__(self, it): - if it is self: - self.clear() - else: - if not isinstance(it, Set): - it = self._from_iterable(it) - for value in it: - if value in self: - self.discard(value) - else: - self.add(value) - return self - - def __isub__(self, it): - if it is self: - self.clear() - else: - for value in it: - self.discard(value) - return self - -MutableSet.register(set) - - -### MAPPINGS ### - - -class Mapping(Sized, Iterable, Container): - - @abstractmethod - def __getitem__(self, key): - raise KeyError - - def get(self, key, default=None): - try: - return self[key] - except KeyError: - return default - - def __contains__(self, key): - try: - self[key] - except KeyError: - return False - else: - return True - - def iterkeys(self): - return iter(self) - - def itervalues(self): - for key in self: - yield self[key] - - def iteritems(self): - for key in self: - yield (key, self[key]) - - def keys(self): - return list(self) - - def items(self): - return [(key, self[key]) for key in self] - - def values(self): - return [self[key] for key in self] - - # Mappings are not hashable by default, but subclasses can change this - __hash__ = None - - def __eq__(self, other): - if not isinstance(other, Mapping): - return NotImplemented - return dict(self.items()) == dict(other.items()) - - def __ne__(self, other): - return not (self == other) - -class MappingView(Sized): - - def __init__(self, mapping): - self._mapping = mapping - - def __len__(self): - return len(self._mapping) - - def __repr__(self): - return '{0.__class__.__name__}({0._mapping!r})'.format(self) - - -class KeysView(MappingView, Set): - - @classmethod - def _from_iterable(self, it): - return set(it) - - def __contains__(self, key): - return key in self._mapping - - def __iter__(self): - for key in self._mapping: - yield key - - -class ItemsView(MappingView, Set): - - @classmethod - def _from_iterable(self, it): - return set(it) - - def __contains__(self, item): - key, value = item - try: - v = self._mapping[key] - except KeyError: - return False - else: - return v == value - - def __iter__(self): - for key in self._mapping: - yield (key, self._mapping[key]) - - -class ValuesView(MappingView): - - def __contains__(self, value): - for key in self._mapping: - if value == self._mapping[key]: - return True - return False - - def __iter__(self): - for key in self._mapping: - yield self._mapping[key] - - -class MutableMapping(Mapping): - - @abstractmethod - def __setitem__(self, key, value): - raise KeyError - - @abstractmethod - def __delitem__(self, key): - raise KeyError - - __marker = object() - - def pop(self, key, default=__marker): - try: - value = self[key] - except KeyError: - if default is self.__marker: - raise - return default - else: - del self[key] - return value - - def popitem(self): - try: - key = next(iter(self)) - except StopIteration: - raise KeyError - value = self[key] - del self[key] - return key, value - - def clear(self): - try: - while True: - self.popitem() - except KeyError: - pass - - def update(*args, **kwds): - if len(args) > 2: - raise TypeError("update() takes at most 2 positional " - "arguments ({} given)".format(len(args))) - elif not args: - raise TypeError("update() takes at least 1 argument (0 given)") - self = args[0] - other = args[1] if len(args) >= 2 else () - - if isinstance(other, Mapping): - for key in other: - self[key] = other[key] - elif hasattr(other, "keys"): - for key in other.keys(): - self[key] = other[key] - else: - for key, value in other: - self[key] = value - for key, value in kwds.items(): - self[key] = value - - def setdefault(self, key, default=None): - try: - return self[key] - except KeyError: - self[key] = default - return default - -MutableMapping.register(dict) - - -### SEQUENCES ### - - -class Sequence(Sized, Iterable, Container): - """All the operations on a read-only sequence. - - Concrete subclasses must override __new__ or __init__, - __getitem__, and __len__. - """ - - @abstractmethod - def __getitem__(self, index): - raise IndexError - - def __iter__(self): - i = 0 - try: - while True: - v = self[i] - yield v - i += 1 - except IndexError: - return - - def __contains__(self, value): - for v in self: - if v == value: - return True - return False - - def __reversed__(self): - for i in reversed(range(len(self))): - yield self[i] - - def index(self, value): - for i, v in enumerate(self): - if v == value: - return i - raise ValueError - - def count(self, value): - return sum(1 for v in self if v == value) - -Sequence.register(tuple) -Sequence.register(basestring) -Sequence.register(buffer) -Sequence.register(xrange) - - -class MutableSequence(Sequence): - - @abstractmethod - def __setitem__(self, index, value): - raise IndexError - - @abstractmethod - def __delitem__(self, index): - raise IndexError - - @abstractmethod - def insert(self, index, value): - raise IndexError - - def append(self, value): - self.insert(len(self), value) - - def reverse(self): - n = len(self) - for i in range(n//2): - self[i], self[n-i-1] = self[n-i-1], self[i] - - def extend(self, values): - for v in values: - self.append(v) - - def pop(self, index=-1): - v = self[index] - del self[index] - return v - - def remove(self, value): - del self[self.index(value)] - - def __iadd__(self, values): - self.extend(values) - return self - -MutableSequence.register(list) diff --git a/pythonjs/lib/python2.7/_weakrefset.py b/pythonjs/lib/python2.7/_weakrefset.py deleted file mode 100644 index ffa5e31..0000000 --- a/pythonjs/lib/python2.7/_weakrefset.py +++ /dev/null @@ -1,216 +0,0 @@ -# Access WeakSet through the weakref module. -# This code is separated-out because it is needed -# by abc.py to load everything else at startup. - -from _weakref import ref - -__all__ = ['WeakSet'] - - -class _IterationGuard(object): - # This context manager registers itself in the current iterators of the - # weak container, such as to delay all removals until the context manager - # exits. - # This technique should be relatively thread-safe (since sets are). - - def __init__(self, weakcontainer): - # Don't create cycles - self.weakcontainer = ref(weakcontainer) - - def __enter__(self): - w = self.weakcontainer() - if w is not None: - w._iterating.add(self) - return self - - def __exit__(self, e, t, b): - w = self.weakcontainer() - if w is not None: - s = w._iterating - s.remove(self) - if not s: - w._commit_removals() - - -class WeakSet(object): - def __init__(self, data=None): - self.data = set() - def _remove(item, selfref=ref(self)): - self = selfref() - if self is not None: - if self._iterating: - self._pending_removals.append(item) - else: - self.data.discard(item) - self._remove = _remove - # A list of keys to be removed - self._pending_removals = [] - self._iterating = set() - if data is not None: - self.update(data) - - def _commit_removals(self): - l = self._pending_removals - discard = self.data.discard - while l: - discard(l.pop()) - - def __iter__(self): - with _IterationGuard(self): - for itemref in self.data: - item = itemref() - if item is not None: - yield item - - def __len__(self): - return sum(x() is not None for x in self.data) - - def __contains__(self, item): - try: - wr = ref(item) - except TypeError: - return False - return wr in self.data - - def __reduce__(self): - return (self.__class__, (list(self),), - getattr(self, '__dict__', None)) - - __hash__ = None - - def add(self, item): - if self._pending_removals: - self._commit_removals() - self.data.add(ref(item, self._remove)) - - def clear(self): - if self._pending_removals: - self._commit_removals() - self.data.clear() - - def copy(self): - return self.__class__(self) - - def pop(self): - if self._pending_removals: - self._commit_removals() - while True: - try: - itemref = self.data.pop() - except KeyError: - raise KeyError('pop from empty WeakSet') - item = itemref() - if item is not None: - return item - - def remove(self, item): - if self._pending_removals: - self._commit_removals() - self.data.remove(ref(item)) - - def discard(self, item): - if self._pending_removals: - self._commit_removals() - self.data.discard(ref(item)) - - def update(self, other): - if self._pending_removals: - self._commit_removals() - if isinstance(other, self.__class__): - self.data.update(other.data) - else: - for element in other: - self.add(element) - - def __ior__(self, other): - self.update(other) - return self - - # Helper functions for simple delegating methods. - def _apply(self, other, method): - if not isinstance(other, self.__class__): - other = self.__class__(other) - newdata = method(other.data) - newset = self.__class__() - newset.data = newdata - return newset - - def difference(self, other): - return self._apply(other, self.data.difference) - __sub__ = difference - - def difference_update(self, other): - if self._pending_removals: - self._commit_removals() - if self is other: - self.data.clear() - else: - self.data.difference_update(ref(item) for item in other) - def __isub__(self, other): - if self._pending_removals: - self._commit_removals() - if self is other: - self.data.clear() - else: - self.data.difference_update(ref(item) for item in other) - return self - - def intersection(self, other): - return self._apply(other, self.data.intersection) - __and__ = intersection - - def intersection_update(self, other): - if self._pending_removals: - self._commit_removals() - self.data.intersection_update(ref(item) for item in other) - def __iand__(self, other): - if self._pending_removals: - self._commit_removals() - self.data.intersection_update(ref(item) for item in other) - return self - - def issubset(self, other): - return self.data.issubset(ref(item) for item in other) - __lt__ = issubset - - def __le__(self, other): - return self.data <= set(ref(item) for item in other) - - def issuperset(self, other): - return self.data.issuperset(ref(item) for item in other) - __gt__ = issuperset - - def __ge__(self, other): - return self.data >= set(ref(item) for item in other) - - def __eq__(self, other): - if not isinstance(other, self.__class__): - return NotImplemented - return self.data == set(ref(item) for item in other) - - def symmetric_difference(self, other): - return self._apply(other, self.data.symmetric_difference) - __xor__ = symmetric_difference - - def symmetric_difference_update(self, other): - if self._pending_removals: - self._commit_removals() - if self is other: - self.data.clear() - else: - self.data.symmetric_difference_update(ref(item) for item in other) - def __ixor__(self, other): - if self._pending_removals: - self._commit_removals() - if self is other: - self.data.clear() - else: - self.data.symmetric_difference_update(ref(item) for item in other) - return self - - def union(self, other): - return self._apply(other, self.data.union) - __or__ = union - - def isdisjoint(self, other): - return len(self.intersection(other)) == 0 diff --git a/pythonjs/lib/python2.7/abc.py b/pythonjs/lib/python2.7/abc.py deleted file mode 100644 index 02e48a1..0000000 --- a/pythonjs/lib/python2.7/abc.py +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright 2007 Google, Inc. All Rights Reserved. -# Licensed to PSF under a Contributor Agreement. - -"""Abstract Base Classes (ABCs) according to PEP 3119.""" - -import types - -from _weakrefset import WeakSet - -# Instance of old-style class -class _C: pass -_InstanceType = type(_C()) - - -def abstractmethod(funcobj): - """A decorator indicating abstract methods. - - Requires that the metaclass is ABCMeta or derived from it. A - class that has a metaclass derived from ABCMeta cannot be - instantiated unless all of its abstract methods are overridden. - The abstract methods can be called using any of the normal - 'super' call mechanisms. - - Usage: - - class C: - __metaclass__ = ABCMeta - @abstractmethod - def my_abstract_method(self, ...): - ... - """ - funcobj.__isabstractmethod__ = True - return funcobj - - -class abstractproperty(property): - """A decorator indicating abstract properties. - - Requires that the metaclass is ABCMeta or derived from it. A - class that has a metaclass derived from ABCMeta cannot be - instantiated unless all of its abstract properties are overridden. - The abstract properties can be called using any of the normal - 'super' call mechanisms. - - Usage: - - class C: - __metaclass__ = ABCMeta - @abstractproperty - def my_abstract_property(self): - ... - - This defines a read-only property; you can also define a read-write - abstract property using the 'long' form of property declaration: - - class C: - __metaclass__ = ABCMeta - def getx(self): ... - def setx(self, value): ... - x = abstractproperty(getx, setx) - """ - __isabstractmethod__ = True - - -class ABCMeta(type): - - """Metaclass for defining Abstract Base Classes (ABCs). - - Use this metaclass to create an ABC. An ABC can be subclassed - directly, and then acts as a mix-in class. You can also register - unrelated concrete classes (even built-in classes) and unrelated - ABCs as 'virtual subclasses' -- these and their descendants will - be considered subclasses of the registering ABC by the built-in - issubclass() function, but the registering ABC won't show up in - their MRO (Method Resolution Order) nor will method - implementations defined by the registering ABC be callable (not - even via super()). - - """ - - # A global counter that is incremented each time a class is - # registered as a virtual subclass of anything. It forces the - # negative cache to be cleared before its next use. - _abc_invalidation_counter = 0 - - def __new__(mcls, name, bases, namespace): - cls = super(ABCMeta, mcls).__new__(mcls, name, bases, namespace) - # Compute set of abstract method names - abstracts = set(name - for name, value in namespace.items() - if getattr(value, "__isabstractmethod__", False)) - for base in bases: - for name in getattr(base, "__abstractmethods__", set()): - value = getattr(cls, name, None) - if getattr(value, "__isabstractmethod__", False): - abstracts.add(name) - cls.__abstractmethods__ = frozenset(abstracts) - # Set up inheritance registry - cls._abc_registry = WeakSet() - cls._abc_cache = WeakSet() - cls._abc_negative_cache = WeakSet() - cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter - return cls - - def register(cls, subclass): - """Register a virtual subclass of an ABC.""" - if not isinstance(subclass, (type, types.ClassType)): - raise TypeError("Can only register classes") - if issubclass(subclass, cls): - return # Already a subclass - # Subtle: test for cycles *after* testing for "already a subclass"; - # this means we allow X.register(X) and interpret it as a no-op. - if issubclass(cls, subclass): - # This would create a cycle, which is bad for the algorithm below - raise RuntimeError("Refusing to create an inheritance cycle") - cls._abc_registry.add(subclass) - ABCMeta._abc_invalidation_counter += 1 # Invalidate negative cache - - def _dump_registry(cls, file=None): - """Debug helper to print the ABC registry.""" - print >> file, "Class: %s.%s" % (cls.__module__, cls.__name__) - print >> file, "Inv.counter: %s" % ABCMeta._abc_invalidation_counter - for name in sorted(cls.__dict__.keys()): - if name.startswith("_abc_"): - value = getattr(cls, name) - print >> file, "%s: %r" % (name, value) - - def __instancecheck__(cls, instance): - """Override for isinstance(instance, cls).""" - # Inline the cache checking when it's simple. - subclass = getattr(instance, '__class__', None) - if subclass is not None and subclass in cls._abc_cache: - return True - subtype = type(instance) - # Old-style instances - if subtype is _InstanceType: - subtype = subclass - if subtype is subclass or subclass is None: - if (cls._abc_negative_cache_version == - ABCMeta._abc_invalidation_counter and - subtype in cls._abc_negative_cache): - return False - # Fall back to the subclass check. - return cls.__subclasscheck__(subtype) - return (cls.__subclasscheck__(subclass) or - cls.__subclasscheck__(subtype)) - - def __subclasscheck__(cls, subclass): - """Override for issubclass(subclass, cls).""" - # Check cache - if subclass in cls._abc_cache: - return True - # Check negative cache; may have to invalidate - if cls._abc_negative_cache_version < ABCMeta._abc_invalidation_counter: - # Invalidate the negative cache - cls._abc_negative_cache = WeakSet() - cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter - elif subclass in cls._abc_negative_cache: - return False - # Check the subclass hook - ok = cls.__subclasshook__(subclass) - if ok is not NotImplemented: - assert isinstance(ok, bool) - if ok: - cls._abc_cache.add(subclass) - else: - cls._abc_negative_cache.add(subclass) - return ok - # Check if it's a direct subclass - if cls in getattr(subclass, '__mro__', ()): - cls._abc_cache.add(subclass) - return True - # Check if it's a subclass of a registered class (recursive) - for rcls in cls._abc_registry: - if issubclass(subclass, rcls): - cls._abc_cache.add(subclass) - return True - # Check if it's a subclass of a subclass (recursive) - for scls in cls.__subclasses__(): - if issubclass(subclass, scls): - cls._abc_cache.add(subclass) - return True - # No dice; update negative cache - cls._abc_negative_cache.add(subclass) - return False diff --git a/pythonjs/lib/python2.7/ast.py b/pythonjs/lib/python2.7/ast.py deleted file mode 100644 index fd5dfdb..0000000 --- a/pythonjs/lib/python2.7/ast.py +++ /dev/null @@ -1,311 +0,0 @@ -# -*- coding: utf-8 -*- -""" - ast - ~~~ - - The `ast` module helps Python applications to process trees of the Python - abstract syntax grammar. The abstract syntax itself might change with - each Python release; this module helps to find out programmatically what - the current grammar looks like and allows modifications of it. - - An abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as - a flag to the `compile()` builtin function or by using the `parse()` - function from this module. The result will be a tree of objects whose - classes all inherit from `ast.AST`. - - A modified abstract syntax tree can be compiled into a Python code object - using the built-in `compile()` function. - - Additionally various helper functions are provided that make working with - the trees simpler. The main intention of the helper functions and this - module in general is to provide an easy to use interface for libraries - that work tightly with the python syntax (template engines for example). - - - :copyright: Copyright 2008 by Armin Ronacher. - :license: Python License. -""" -from _ast import * -from _ast import __version__ - - -def parse(source, filename='', mode='exec'): - """ - Parse the source into an AST node. - Equivalent to compile(source, filename, mode, PyCF_ONLY_AST). - """ - return compile(source, filename, mode, PyCF_ONLY_AST) - - -def literal_eval(node_or_string): - """ - Safely evaluate an expression node or a string containing a Python - expression. The string or node provided may only consist of the following - Python literal structures: strings, numbers, tuples, lists, dicts, booleans, - and None. - """ - _safe_names = {'None': None, 'True': True, 'False': False} - if isinstance(node_or_string, basestring): - node_or_string = parse(node_or_string, mode='eval') - if isinstance(node_or_string, Expression): - node_or_string = node_or_string.body - def _convert(node): - if isinstance(node, Str): - return node.s - elif isinstance(node, Num): - return node.n - elif isinstance(node, Tuple): - return tuple(map(_convert, node.elts)) - elif isinstance(node, List): - return list(map(_convert, node.elts)) - elif isinstance(node, Dict): - return dict((_convert(k), _convert(v)) for k, v - in zip(node.keys, node.values)) - elif isinstance(node, Name): - if node.id in _safe_names: - return _safe_names[node.id] - elif isinstance(node, BinOp) and \ - isinstance(node.op, (Add, Sub)) and \ - isinstance(node.right, Num) and \ - isinstance(node.right.n, complex) and \ - isinstance(node.left, Num) and \ - isinstance(node.left.n, (int, long, float)): - left = node.left.n - right = node.right.n - if isinstance(node.op, Add): - return left + right - else: - return left - right - raise ValueError('malformed string') - return _convert(node_or_string) - - -def dump(node, annotate_fields=True, include_attributes=False): - """ - Return a formatted dump of the tree in *node*. This is mainly useful for - debugging purposes. The returned string will show the names and the values - for fields. This makes the code impossible to evaluate, so if evaluation is - wanted *annotate_fields* must be set to False. Attributes such as line - numbers and column offsets are not dumped by default. If this is wanted, - *include_attributes* can be set to True. - """ - def _format(node): - if isinstance(node, AST): - fields = [(a, _format(b)) for a, b in iter_fields(node)] - rv = '%s(%s' % (node.__class__.__name__, ', '.join( - ('%s=%s' % field for field in fields) - if annotate_fields else - (b for a, b in fields) - )) - if include_attributes and node._attributes: - rv += fields and ', ' or ' ' - rv += ', '.join('%s=%s' % (a, _format(getattr(node, a))) - for a in node._attributes) - return rv + ')' - elif isinstance(node, list): - return '[%s]' % ', '.join(_format(x) for x in node) - return repr(node) - if not isinstance(node, AST): - raise TypeError('expected AST, got %r' % node.__class__.__name__) - return _format(node) - - -def copy_location(new_node, old_node): - """ - Copy source location (`lineno` and `col_offset` attributes) from - *old_node* to *new_node* if possible, and return *new_node*. - """ - for attr in 'lineno', 'col_offset': - if attr in old_node._attributes and attr in new_node._attributes \ - and hasattr(old_node, attr): - setattr(new_node, attr, getattr(old_node, attr)) - return new_node - - -def fix_missing_locations(node): - """ - When you compile a node tree with compile(), the compiler expects lineno and - col_offset attributes for every node that supports them. This is rather - tedious to fill in for generated nodes, so this helper adds these attributes - recursively where not already set, by setting them to the values of the - parent node. It works recursively starting at *node*. - """ - def _fix(node, lineno, col_offset): - if 'lineno' in node._attributes: - if not hasattr(node, 'lineno'): - node.lineno = lineno - else: - lineno = node.lineno - if 'col_offset' in node._attributes: - if not hasattr(node, 'col_offset'): - node.col_offset = col_offset - else: - col_offset = node.col_offset - for child in iter_child_nodes(node): - _fix(child, lineno, col_offset) - _fix(node, 1, 0) - return node - - -def increment_lineno(node, n=1): - """ - Increment the line number of each node in the tree starting at *node* by *n*. - This is useful to "move code" to a different location in a file. - """ - for child in walk(node): - if 'lineno' in child._attributes: - child.lineno = getattr(child, 'lineno', 0) + n - return node - - -def iter_fields(node): - """ - Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields`` - that is present on *node*. - """ - for field in node._fields: - try: - yield field, getattr(node, field) - except AttributeError: - pass - - -def iter_child_nodes(node): - """ - Yield all direct child nodes of *node*, that is, all fields that are nodes - and all items of fields that are lists of nodes. - """ - for name, field in iter_fields(node): - if isinstance(field, AST): - yield field - elif isinstance(field, list): - for item in field: - if isinstance(item, AST): - yield item - - -def get_docstring(node, clean=True): - """ - Return the docstring for the given node or None if no docstring can - be found. If the node provided does not have docstrings a TypeError - will be raised. - """ - if not isinstance(node, (FunctionDef, ClassDef, Module)): - raise TypeError("%r can't have docstrings" % node.__class__.__name__) - if node.body and isinstance(node.body[0], Expr) and \ - isinstance(node.body[0].value, Str): - if clean: - import inspect - return inspect.cleandoc(node.body[0].value.s) - return node.body[0].value.s - - -def walk(node): - """ - Recursively yield all descendant nodes in the tree starting at *node* - (including *node* itself), in no specified order. This is useful if you - only want to modify nodes in place and don't care about the context. - """ - from collections import deque - todo = deque([node]) - while todo: - node = todo.popleft() - todo.extend(iter_child_nodes(node)) - yield node - - -class NodeVisitor(object): - """ - A node visitor base class that walks the abstract syntax tree and calls a - visitor function for every node found. This function may return a value - which is forwarded by the `visit` method. - - This class is meant to be subclassed, with the subclass adding visitor - methods. - - Per default the visitor functions for the nodes are ``'visit_'`` + - class name of the node. So a `TryFinally` node visit function would - be `visit_TryFinally`. This behavior can be changed by overriding - the `visit` method. If no visitor function exists for a node - (return value `None`) the `generic_visit` visitor is used instead. - - Don't use the `NodeVisitor` if you want to apply changes to nodes during - traversing. For this a special visitor exists (`NodeTransformer`) that - allows modifications. - """ - - def visit(self, node): - """Visit a node.""" - method = 'visit_' + node.__class__.__name__ - visitor = getattr(self, method, self.generic_visit) - return visitor(node) - - def generic_visit(self, node): - """Called if no explicit visitor function exists for a node.""" - for field, value in iter_fields(node): - if isinstance(value, list): - for item in value: - if isinstance(item, AST): - self.visit(item) - elif isinstance(value, AST): - self.visit(value) - - -class NodeTransformer(NodeVisitor): - """ - A :class:`NodeVisitor` subclass that walks the abstract syntax tree and - allows modification of nodes. - - The `NodeTransformer` will walk the AST and use the return value of the - visitor methods to replace or remove the old node. If the return value of - the visitor method is ``None``, the node will be removed from its location, - otherwise it is replaced with the return value. The return value may be the - original node in which case no replacement takes place. - - Here is an example transformer that rewrites all occurrences of name lookups - (``foo``) to ``data['foo']``:: - - class RewriteName(NodeTransformer): - - def visit_Name(self, node): - return copy_location(Subscript( - value=Name(id='data', ctx=Load()), - slice=Index(value=Str(s=node.id)), - ctx=node.ctx - ), node) - - Keep in mind that if the node you're operating on has child nodes you must - either transform the child nodes yourself or call the :meth:`generic_visit` - method for the node first. - - For nodes that were part of a collection of statements (that applies to all - statement nodes), the visitor may also return a list of nodes rather than - just a single node. - - Usually you use the transformer like this:: - - node = YourTransformer().visit(node) - """ - - def generic_visit(self, node): - for field, old_value in iter_fields(node): - old_value = getattr(node, field, None) - if isinstance(old_value, list): - new_values = [] - for value in old_value: - if isinstance(value, AST): - value = self.visit(value) - if value is None: - continue - elif not isinstance(value, AST): - new_values.extend(value) - continue - new_values.append(value) - old_value[:] = new_values - elif isinstance(old_value, AST): - new_node = self.visit(old_value) - if new_node is None: - delattr(node, field) - else: - setattr(node, field, new_node) - return node diff --git a/pythonjs/lib/python2.7/codecs.py b/pythonjs/lib/python2.7/codecs.py deleted file mode 100644 index f4cd60a..0000000 --- a/pythonjs/lib/python2.7/codecs.py +++ /dev/null @@ -1,1098 +0,0 @@ -""" codecs -- Python Codec Registry, API and helpers. - - -Written by Marc-Andre Lemburg (mal@lemburg.com). - -(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. - -"""#" - -import __builtin__, sys - -### Registry and builtin stateless codec functions - -try: - from _codecs import * -except ImportError, why: - raise SystemError('Failed to load the builtin codecs: %s' % why) - -__all__ = ["register", "lookup", "open", "EncodedFile", "BOM", "BOM_BE", - "BOM_LE", "BOM32_BE", "BOM32_LE", "BOM64_BE", "BOM64_LE", - "BOM_UTF8", "BOM_UTF16", "BOM_UTF16_LE", "BOM_UTF16_BE", - "BOM_UTF32", "BOM_UTF32_LE", "BOM_UTF32_BE", - "strict_errors", "ignore_errors", "replace_errors", - "xmlcharrefreplace_errors", - "register_error", "lookup_error"] - -### Constants - -# -# Byte Order Mark (BOM = ZERO WIDTH NO-BREAK SPACE = U+FEFF) -# and its possible byte string values -# for UTF8/UTF16/UTF32 output and little/big endian machines -# - -# UTF-8 -BOM_UTF8 = '\xef\xbb\xbf' - -# UTF-16, little endian -BOM_LE = BOM_UTF16_LE = '\xff\xfe' - -# UTF-16, big endian -BOM_BE = BOM_UTF16_BE = '\xfe\xff' - -# UTF-32, little endian -BOM_UTF32_LE = '\xff\xfe\x00\x00' - -# UTF-32, big endian -BOM_UTF32_BE = '\x00\x00\xfe\xff' - -if sys.byteorder == 'little': - - # UTF-16, native endianness - BOM = BOM_UTF16 = BOM_UTF16_LE - - # UTF-32, native endianness - BOM_UTF32 = BOM_UTF32_LE - -else: - - # UTF-16, native endianness - BOM = BOM_UTF16 = BOM_UTF16_BE - - # UTF-32, native endianness - BOM_UTF32 = BOM_UTF32_BE - -# Old broken names (don't use in new code) -BOM32_LE = BOM_UTF16_LE -BOM32_BE = BOM_UTF16_BE -BOM64_LE = BOM_UTF32_LE -BOM64_BE = BOM_UTF32_BE - - -### Codec base classes (defining the API) - -class CodecInfo(tuple): - - def __new__(cls, encode, decode, streamreader=None, streamwriter=None, - incrementalencoder=None, incrementaldecoder=None, name=None): - self = tuple.__new__(cls, (encode, decode, streamreader, streamwriter)) - self.name = name - self.encode = encode - self.decode = decode - self.incrementalencoder = incrementalencoder - self.incrementaldecoder = incrementaldecoder - self.streamwriter = streamwriter - self.streamreader = streamreader - return self - - def __repr__(self): - return "<%s.%s object for encoding %s at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, id(self)) - -class Codec: - - """ Defines the interface for stateless encoders/decoders. - - The .encode()/.decode() methods may use different error - handling schemes by providing the errors argument. These - string values are predefined: - - 'strict' - raise a ValueError error (or a subclass) - 'ignore' - ignore the character and continue with the next - 'replace' - replace with a suitable replacement character; - Python will use the official U+FFFD REPLACEMENT - CHARACTER for the builtin Unicode codecs on - decoding and '?' on encoding. - 'xmlcharrefreplace' - Replace with the appropriate XML - character reference (only for encoding). - 'backslashreplace' - Replace with backslashed escape sequences - (only for encoding). - - The set of allowed values can be extended via register_error. - - """ - def encode(self, input, errors='strict'): - - """ Encodes the object input and returns a tuple (output - object, length consumed). - - errors defines the error handling to apply. It defaults to - 'strict' handling. - - The method may not store state in the Codec instance. Use - StreamCodec for codecs which have to keep state in order to - make encoding/decoding efficient. - - The encoder must be able to handle zero length input and - return an empty object of the output object type in this - situation. - - """ - raise NotImplementedError - - def decode(self, input, errors='strict'): - - """ Decodes the object input and returns a tuple (output - object, length consumed). - - input must be an object which provides the bf_getreadbuf - buffer slot. Python strings, buffer objects and memory - mapped files are examples of objects providing this slot. - - errors defines the error handling to apply. It defaults to - 'strict' handling. - - The method may not store state in the Codec instance. Use - StreamCodec for codecs which have to keep state in order to - make encoding/decoding efficient. - - The decoder must be able to handle zero length input and - return an empty object of the output object type in this - situation. - - """ - raise NotImplementedError - -class IncrementalEncoder(object): - """ - An IncrementalEncoder encodes an input in multiple steps. The input can be - passed piece by piece to the encode() method. The IncrementalEncoder remembers - the state of the Encoding process between calls to encode(). - """ - def __init__(self, errors='strict'): - """ - Creates an IncrementalEncoder instance. - - The IncrementalEncoder may use different error handling schemes by - providing the errors keyword argument. See the module docstring - for a list of possible values. - """ - self.errors = errors - self.buffer = "" - - def encode(self, input, final=False): - """ - Encodes input and returns the resulting object. - """ - raise NotImplementedError - - def reset(self): - """ - Resets the encoder to the initial state. - """ - - def getstate(self): - """ - Return the current state of the encoder. - """ - return 0 - - def setstate(self, state): - """ - Set the current state of the encoder. state must have been - returned by getstate(). - """ - -class BufferedIncrementalEncoder(IncrementalEncoder): - """ - This subclass of IncrementalEncoder can be used as the baseclass for an - incremental encoder if the encoder must keep some of the output in a - buffer between calls to encode(). - """ - def __init__(self, errors='strict'): - IncrementalEncoder.__init__(self, errors) - self.buffer = "" # unencoded input that is kept between calls to encode() - - def _buffer_encode(self, input, errors, final): - # Overwrite this method in subclasses: It must encode input - # and return an (output, length consumed) tuple - raise NotImplementedError - - def encode(self, input, final=False): - # encode input (taking the buffer into account) - data = self.buffer + input - (result, consumed) = self._buffer_encode(data, self.errors, final) - # keep unencoded input until the next call - self.buffer = data[consumed:] - return result - - def reset(self): - IncrementalEncoder.reset(self) - self.buffer = "" - - def getstate(self): - return self.buffer or 0 - - def setstate(self, state): - self.buffer = state or "" - -class IncrementalDecoder(object): - """ - An IncrementalDecoder decodes an input in multiple steps. The input can be - passed piece by piece to the decode() method. The IncrementalDecoder - remembers the state of the decoding process between calls to decode(). - """ - def __init__(self, errors='strict'): - """ - Creates a IncrementalDecoder instance. - - The IncrementalDecoder may use different error handling schemes by - providing the errors keyword argument. See the module docstring - for a list of possible values. - """ - self.errors = errors - - def decode(self, input, final=False): - """ - Decodes input and returns the resulting object. - """ - raise NotImplementedError - - def reset(self): - """ - Resets the decoder to the initial state. - """ - - def getstate(self): - """ - Return the current state of the decoder. - - This must be a (buffered_input, additional_state_info) tuple. - buffered_input must be a bytes object containing bytes that - were passed to decode() that have not yet been converted. - additional_state_info must be a non-negative integer - representing the state of the decoder WITHOUT yet having - processed the contents of buffered_input. In the initial state - and after reset(), getstate() must return (b"", 0). - """ - return (b"", 0) - - def setstate(self, state): - """ - Set the current state of the decoder. - - state must have been returned by getstate(). The effect of - setstate((b"", 0)) must be equivalent to reset(). - """ - -class BufferedIncrementalDecoder(IncrementalDecoder): - """ - This subclass of IncrementalDecoder can be used as the baseclass for an - incremental decoder if the decoder must be able to handle incomplete byte - sequences. - """ - def __init__(self, errors='strict'): - IncrementalDecoder.__init__(self, errors) - self.buffer = "" # undecoded input that is kept between calls to decode() - - def _buffer_decode(self, input, errors, final): - # Overwrite this method in subclasses: It must decode input - # and return an (output, length consumed) tuple - raise NotImplementedError - - def decode(self, input, final=False): - # decode input (taking the buffer into account) - data = self.buffer + input - (result, consumed) = self._buffer_decode(data, self.errors, final) - # keep undecoded input until the next call - self.buffer = data[consumed:] - return result - - def reset(self): - IncrementalDecoder.reset(self) - self.buffer = "" - - def getstate(self): - # additional state info is always 0 - return (self.buffer, 0) - - def setstate(self, state): - # ignore additional state info - self.buffer = state[0] - -# -# The StreamWriter and StreamReader class provide generic working -# interfaces which can be used to implement new encoding submodules -# very easily. See encodings/utf_8.py for an example on how this is -# done. -# - -class StreamWriter(Codec): - - def __init__(self, stream, errors='strict'): - - """ Creates a StreamWriter instance. - - stream must be a file-like object open for writing - (binary) data. - - The StreamWriter may use different error handling - schemes by providing the errors keyword argument. These - parameters are predefined: - - 'strict' - raise a ValueError (or a subclass) - 'ignore' - ignore the character and continue with the next - 'replace'- replace with a suitable replacement character - 'xmlcharrefreplace' - Replace with the appropriate XML - character reference. - 'backslashreplace' - Replace with backslashed escape - sequences (only for encoding). - - The set of allowed parameter values can be extended via - register_error. - """ - self.stream = stream - self.errors = errors - - def write(self, object): - - """ Writes the object's contents encoded to self.stream. - """ - data, consumed = self.encode(object, self.errors) - self.stream.write(data) - - def writelines(self, list): - - """ Writes the concatenated list of strings to the stream - using .write(). - """ - self.write(''.join(list)) - - def reset(self): - - """ Flushes and resets the codec buffers used for keeping state. - - Calling this method should ensure that the data on the - output is put into a clean state, that allows appending - of new fresh data without having to rescan the whole - stream to recover state. - - """ - pass - - def seek(self, offset, whence=0): - self.stream.seek(offset, whence) - if whence == 0 and offset == 0: - self.reset() - - def __getattr__(self, name, - getattr=getattr): - - """ Inherit all other methods from the underlying stream. - """ - return getattr(self.stream, name) - - def __enter__(self): - return self - - def __exit__(self, type, value, tb): - self.stream.close() - -### - -class StreamReader(Codec): - - def __init__(self, stream, errors='strict'): - - """ Creates a StreamReader instance. - - stream must be a file-like object open for reading - (binary) data. - - The StreamReader may use different error handling - schemes by providing the errors keyword argument. These - parameters are predefined: - - 'strict' - raise a ValueError (or a subclass) - 'ignore' - ignore the character and continue with the next - 'replace'- replace with a suitable replacement character; - - The set of allowed parameter values can be extended via - register_error. - """ - self.stream = stream - self.errors = errors - self.bytebuffer = "" - # For str->str decoding this will stay a str - # For str->unicode decoding the first read will promote it to unicode - self.charbuffer = "" - self.linebuffer = None - - def decode(self, input, errors='strict'): - raise NotImplementedError - - def read(self, size=-1, chars=-1, firstline=False): - - """ Decodes data from the stream self.stream and returns the - resulting object. - - chars indicates the number of characters to read from the - stream. read() will never return more than chars - characters, but it might return less, if there are not enough - characters available. - - size indicates the approximate maximum number of bytes to - read from the stream for decoding purposes. The decoder - can modify this setting as appropriate. The default value - -1 indicates to read and decode as much as possible. size - is intended to prevent having to decode huge files in one - step. - - If firstline is true, and a UnicodeDecodeError happens - after the first line terminator in the input only the first line - will be returned, the rest of the input will be kept until the - next call to read(). - - The method should use a greedy read strategy meaning that - it should read as much data as is allowed within the - definition of the encoding and the given size, e.g. if - optional encoding endings or state markers are available - on the stream, these should be read too. - """ - # If we have lines cached, first merge them back into characters - if self.linebuffer: - self.charbuffer = "".join(self.linebuffer) - self.linebuffer = None - - # read until we get the required number of characters (if available) - while True: - # can the request can be satisfied from the character buffer? - if chars < 0: - if size < 0: - if self.charbuffer: - break - elif len(self.charbuffer) >= size: - break - else: - if len(self.charbuffer) >= chars: - break - # we need more data - if size < 0: - newdata = self.stream.read() - else: - newdata = self.stream.read(size) - # decode bytes (those remaining from the last call included) - data = self.bytebuffer + newdata - try: - newchars, decodedbytes = self.decode(data, self.errors) - except UnicodeDecodeError, exc: - if firstline: - newchars, decodedbytes = self.decode(data[:exc.start], self.errors) - lines = newchars.splitlines(True) - if len(lines)<=1: - raise - else: - raise - # keep undecoded bytes until the next call - self.bytebuffer = data[decodedbytes:] - # put new characters in the character buffer - self.charbuffer += newchars - # there was no data available - if not newdata: - break - if chars < 0: - # Return everything we've got - result = self.charbuffer - self.charbuffer = "" - else: - # Return the first chars characters - result = self.charbuffer[:chars] - self.charbuffer = self.charbuffer[chars:] - return result - - def readline(self, size=None, keepends=True): - - """ Read one line from the input stream and return the - decoded data. - - size, if given, is passed as size argument to the - read() method. - - """ - # If we have lines cached from an earlier read, return - # them unconditionally - if self.linebuffer: - line = self.linebuffer[0] - del self.linebuffer[0] - if len(self.linebuffer) == 1: - # revert to charbuffer mode; we might need more data - # next time - self.charbuffer = self.linebuffer[0] - self.linebuffer = None - if not keepends: - line = line.splitlines(False)[0] - return line - - readsize = size or 72 - line = "" - # If size is given, we call read() only once - while True: - data = self.read(readsize, firstline=True) - if data: - # If we're at a "\r" read one extra character (which might - # be a "\n") to get a proper line ending. If the stream is - # temporarily exhausted we return the wrong line ending. - if data.endswith("\r"): - data += self.read(size=1, chars=1) - - line += data - lines = line.splitlines(True) - if lines: - if len(lines) > 1: - # More than one line result; the first line is a full line - # to return - line = lines[0] - del lines[0] - if len(lines) > 1: - # cache the remaining lines - lines[-1] += self.charbuffer - self.linebuffer = lines - self.charbuffer = None - else: - # only one remaining line, put it back into charbuffer - self.charbuffer = lines[0] + self.charbuffer - if not keepends: - line = line.splitlines(False)[0] - break - line0withend = lines[0] - line0withoutend = lines[0].splitlines(False)[0] - if line0withend != line0withoutend: # We really have a line end - # Put the rest back together and keep it until the next call - self.charbuffer = "".join(lines[1:]) + self.charbuffer - if keepends: - line = line0withend - else: - line = line0withoutend - break - # we didn't get anything or this was our only try - if not data or size is not None: - if line and not keepends: - line = line.splitlines(False)[0] - break - if readsize<8000: - readsize *= 2 - return line - - def readlines(self, sizehint=None, keepends=True): - - """ Read all lines available on the input stream - and return them as list of lines. - - Line breaks are implemented using the codec's decoder - method and are included in the list entries. - - sizehint, if given, is ignored since there is no efficient - way to finding the true end-of-line. - - """ - data = self.read() - return data.splitlines(keepends) - - def reset(self): - - """ Resets the codec buffers used for keeping state. - - Note that no stream repositioning should take place. - This method is primarily intended to be able to recover - from decoding errors. - - """ - self.bytebuffer = "" - self.charbuffer = u"" - self.linebuffer = None - - def seek(self, offset, whence=0): - """ Set the input stream's current position. - - Resets the codec buffers used for keeping state. - """ - self.stream.seek(offset, whence) - self.reset() - - def next(self): - - """ Return the next decoded line from the input stream.""" - line = self.readline() - if line: - return line - raise StopIteration - - def __iter__(self): - return self - - def __getattr__(self, name, - getattr=getattr): - - """ Inherit all other methods from the underlying stream. - """ - return getattr(self.stream, name) - - def __enter__(self): - return self - - def __exit__(self, type, value, tb): - self.stream.close() - -### - -class StreamReaderWriter: - - """ StreamReaderWriter instances allow wrapping streams which - work in both read and write modes. - - The design is such that one can use the factory functions - returned by the codec.lookup() function to construct the - instance. - - """ - # Optional attributes set by the file wrappers below - encoding = 'unknown' - - def __init__(self, stream, Reader, Writer, errors='strict'): - - """ Creates a StreamReaderWriter instance. - - stream must be a Stream-like object. - - Reader, Writer must be factory functions or classes - providing the StreamReader, StreamWriter interface resp. - - Error handling is done in the same way as defined for the - StreamWriter/Readers. - - """ - self.stream = stream - self.reader = Reader(stream, errors) - self.writer = Writer(stream, errors) - self.errors = errors - - def read(self, size=-1): - - return self.reader.read(size) - - def readline(self, size=None): - - return self.reader.readline(size) - - def readlines(self, sizehint=None): - - return self.reader.readlines(sizehint) - - def next(self): - - """ Return the next decoded line from the input stream.""" - return self.reader.next() - - def __iter__(self): - return self - - def write(self, data): - - return self.writer.write(data) - - def writelines(self, list): - - return self.writer.writelines(list) - - def reset(self): - - self.reader.reset() - self.writer.reset() - - def seek(self, offset, whence=0): - self.stream.seek(offset, whence) - self.reader.reset() - if whence == 0 and offset == 0: - self.writer.reset() - - def __getattr__(self, name, - getattr=getattr): - - """ Inherit all other methods from the underlying stream. - """ - return getattr(self.stream, name) - - # these are needed to make "with codecs.open(...)" work properly - - def __enter__(self): - return self - - def __exit__(self, type, value, tb): - self.stream.close() - -### - -class StreamRecoder: - - """ StreamRecoder instances provide a frontend - backend - view of encoding data. - - They use the complete set of APIs returned by the - codecs.lookup() function to implement their task. - - Data written to the stream is first decoded into an - intermediate format (which is dependent on the given codec - combination) and then written to the stream using an instance - of the provided Writer class. - - In the other direction, data is read from the stream using a - Reader instance and then return encoded data to the caller. - - """ - # Optional attributes set by the file wrappers below - data_encoding = 'unknown' - file_encoding = 'unknown' - - def __init__(self, stream, encode, decode, Reader, Writer, - errors='strict'): - - """ Creates a StreamRecoder instance which implements a two-way - conversion: encode and decode work on the frontend (the - input to .read() and output of .write()) while - Reader and Writer work on the backend (reading and - writing to the stream). - - You can use these objects to do transparent direct - recodings from e.g. latin-1 to utf-8 and back. - - stream must be a file-like object. - - encode, decode must adhere to the Codec interface, Reader, - Writer must be factory functions or classes providing the - StreamReader, StreamWriter interface resp. - - encode and decode are needed for the frontend translation, - Reader and Writer for the backend translation. Unicode is - used as intermediate encoding. - - Error handling is done in the same way as defined for the - StreamWriter/Readers. - - """ - self.stream = stream - self.encode = encode - self.decode = decode - self.reader = Reader(stream, errors) - self.writer = Writer(stream, errors) - self.errors = errors - - def read(self, size=-1): - - data = self.reader.read(size) - data, bytesencoded = self.encode(data, self.errors) - return data - - def readline(self, size=None): - - if size is None: - data = self.reader.readline() - else: - data = self.reader.readline(size) - data, bytesencoded = self.encode(data, self.errors) - return data - - def readlines(self, sizehint=None): - - data = self.reader.read() - data, bytesencoded = self.encode(data, self.errors) - return data.splitlines(1) - - def next(self): - - """ Return the next decoded line from the input stream.""" - data = self.reader.next() - data, bytesencoded = self.encode(data, self.errors) - return data - - def __iter__(self): - return self - - def write(self, data): - - data, bytesdecoded = self.decode(data, self.errors) - return self.writer.write(data) - - def writelines(self, list): - - data = ''.join(list) - data, bytesdecoded = self.decode(data, self.errors) - return self.writer.write(data) - - def reset(self): - - self.reader.reset() - self.writer.reset() - - def __getattr__(self, name, - getattr=getattr): - - """ Inherit all other methods from the underlying stream. - """ - return getattr(self.stream, name) - - def __enter__(self): - return self - - def __exit__(self, type, value, tb): - self.stream.close() - -### Shortcuts - -def open(filename, mode='rb', encoding=None, errors='strict', buffering=1): - - """ Open an encoded file using the given mode and return - a wrapped version providing transparent encoding/decoding. - - Note: The wrapped version will only accept the object format - defined by the codecs, i.e. Unicode objects for most builtin - codecs. Output is also codec dependent and will usually be - Unicode as well. - - Files are always opened in binary mode, even if no binary mode - was specified. This is done to avoid data loss due to encodings - using 8-bit values. The default file mode is 'rb' meaning to - open the file in binary read mode. - - encoding specifies the encoding which is to be used for the - file. - - errors may be given to define the error handling. It defaults - to 'strict' which causes ValueErrors to be raised in case an - encoding error occurs. - - buffering has the same meaning as for the builtin open() API. - It defaults to line buffered. - - The returned wrapped file object provides an extra attribute - .encoding which allows querying the used encoding. This - attribute is only available if an encoding was specified as - parameter. - - """ - if encoding is not None: - if 'U' in mode: - # No automatic conversion of '\n' is done on reading and writing - mode = mode.strip().replace('U', '') - if mode[:1] not in set('rwa'): - mode = 'r' + mode - if 'b' not in mode: - # Force opening of the file in binary mode - mode = mode + 'b' - file = __builtin__.open(filename, mode, buffering) - if encoding is None: - return file - info = lookup(encoding) - srw = StreamReaderWriter(file, info.streamreader, info.streamwriter, errors) - # Add attributes to simplify introspection - srw.encoding = encoding - return srw - -def EncodedFile(file, data_encoding, file_encoding=None, errors='strict'): - - """ Return a wrapped version of file which provides transparent - encoding translation. - - Strings written to the wrapped file are interpreted according - to the given data_encoding and then written to the original - file as string using file_encoding. The intermediate encoding - will usually be Unicode but depends on the specified codecs. - - Strings are read from the file using file_encoding and then - passed back to the caller as string using data_encoding. - - If file_encoding is not given, it defaults to data_encoding. - - errors may be given to define the error handling. It defaults - to 'strict' which causes ValueErrors to be raised in case an - encoding error occurs. - - The returned wrapped file object provides two extra attributes - .data_encoding and .file_encoding which reflect the given - parameters of the same name. The attributes can be used for - introspection by Python programs. - - """ - if file_encoding is None: - file_encoding = data_encoding - data_info = lookup(data_encoding) - file_info = lookup(file_encoding) - sr = StreamRecoder(file, data_info.encode, data_info.decode, - file_info.streamreader, file_info.streamwriter, errors) - # Add attributes to simplify introspection - sr.data_encoding = data_encoding - sr.file_encoding = file_encoding - return sr - -### Helpers for codec lookup - -def getencoder(encoding): - - """ Lookup up the codec for the given encoding and return - its encoder function. - - Raises a LookupError in case the encoding cannot be found. - - """ - return lookup(encoding).encode - -def getdecoder(encoding): - - """ Lookup up the codec for the given encoding and return - its decoder function. - - Raises a LookupError in case the encoding cannot be found. - - """ - return lookup(encoding).decode - -def getincrementalencoder(encoding): - - """ Lookup up the codec for the given encoding and return - its IncrementalEncoder class or factory function. - - Raises a LookupError in case the encoding cannot be found - or the codecs doesn't provide an incremental encoder. - - """ - encoder = lookup(encoding).incrementalencoder - if encoder is None: - raise LookupError(encoding) - return encoder - -def getincrementaldecoder(encoding): - - """ Lookup up the codec for the given encoding and return - its IncrementalDecoder class or factory function. - - Raises a LookupError in case the encoding cannot be found - or the codecs doesn't provide an incremental decoder. - - """ - decoder = lookup(encoding).incrementaldecoder - if decoder is None: - raise LookupError(encoding) - return decoder - -def getreader(encoding): - - """ Lookup up the codec for the given encoding and return - its StreamReader class or factory function. - - Raises a LookupError in case the encoding cannot be found. - - """ - return lookup(encoding).streamreader - -def getwriter(encoding): - - """ Lookup up the codec for the given encoding and return - its StreamWriter class or factory function. - - Raises a LookupError in case the encoding cannot be found. - - """ - return lookup(encoding).streamwriter - -def iterencode(iterator, encoding, errors='strict', **kwargs): - """ - Encoding iterator. - - Encodes the input strings from the iterator using a IncrementalEncoder. - - errors and kwargs are passed through to the IncrementalEncoder - constructor. - """ - encoder = getincrementalencoder(encoding)(errors, **kwargs) - for input in iterator: - output = encoder.encode(input) - if output: - yield output - output = encoder.encode("", True) - if output: - yield output - -def iterdecode(iterator, encoding, errors='strict', **kwargs): - """ - Decoding iterator. - - Decodes the input strings from the iterator using a IncrementalDecoder. - - errors and kwargs are passed through to the IncrementalDecoder - constructor. - """ - decoder = getincrementaldecoder(encoding)(errors, **kwargs) - for input in iterator: - output = decoder.decode(input) - if output: - yield output - output = decoder.decode("", True) - if output: - yield output - -### Helpers for charmap-based codecs - -def make_identity_dict(rng): - - """ make_identity_dict(rng) -> dict - - Return a dictionary where elements of the rng sequence are - mapped to themselves. - - """ - res = {} - for i in rng: - res[i]=i - return res - -def make_encoding_map(decoding_map): - - """ Creates an encoding map from a decoding map. - - If a target mapping in the decoding map occurs multiple - times, then that target is mapped to None (undefined mapping), - causing an exception when encountered by the charmap codec - during translation. - - One example where this happens is cp875.py which decodes - multiple character to \u001a. - - """ - m = {} - for k,v in decoding_map.items(): - if not v in m: - m[v] = k - else: - m[v] = None - return m - -### error handlers - -try: - strict_errors = lookup_error("strict") - ignore_errors = lookup_error("ignore") - replace_errors = lookup_error("replace") - xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace") - backslashreplace_errors = lookup_error("backslashreplace") -except LookupError: - # In --disable-unicode builds, these error handler are missing - strict_errors = None - ignore_errors = None - replace_errors = None - xmlcharrefreplace_errors = None - backslashreplace_errors = None - -# Tell modulefinder that using codecs probably needs the encodings -# package -_false = 0 -if _false: - import encodings - -### Tests - -if __name__ == '__main__': - - # Make stdout translate Latin-1 output into UTF-8 output - sys.stdout = EncodedFile(sys.stdout, 'latin-1', 'utf-8') - - # Have stdin translate Latin-1 input into UTF-8 input - sys.stdin = EncodedFile(sys.stdin, 'utf-8', 'latin-1') diff --git a/pythonjs/lib/python2.7/copy.py b/pythonjs/lib/python2.7/copy.py deleted file mode 100644 index c227a2e..0000000 --- a/pythonjs/lib/python2.7/copy.py +++ /dev/null @@ -1,433 +0,0 @@ -"""Generic (shallow and deep) copying operations. - -Interface summary: - - import copy - - x = copy.copy(y) # make a shallow copy of y - x = copy.deepcopy(y) # make a deep copy of y - -For module specific errors, copy.Error is raised. - -The difference between shallow and deep copying is only relevant for -compound objects (objects that contain other objects, like lists or -class instances). - -- A shallow copy constructs a new compound object and then (to the - extent possible) inserts *the same objects* into it that the - original contains. - -- A deep copy constructs a new compound object and then, recursively, - inserts *copies* into it of the objects found in the original. - -Two problems often exist with deep copy operations that don't exist -with shallow copy operations: - - a) recursive objects (compound objects that, directly or indirectly, - contain a reference to themselves) may cause a recursive loop - - b) because deep copy copies *everything* it may copy too much, e.g. - administrative data structures that should be shared even between - copies - -Python's deep copy operation avoids these problems by: - - a) keeping a table of objects already copied during the current - copying pass - - b) letting user-defined classes override the copying operation or the - set of components copied - -This version does not copy types like module, class, function, method, -nor stack trace, stack frame, nor file, socket, window, nor array, nor -any similar types. - -Classes can use the same interfaces to control copying that they use -to control pickling: they can define methods called __getinitargs__(), -__getstate__() and __setstate__(). See the documentation for module -"pickle" for information on these methods. -""" - -import types -import weakref -from copy_reg import dispatch_table - -class Error(Exception): - pass -error = Error # backward compatibility - -try: - from org.python.core import PyStringMap -except ImportError: - PyStringMap = None - -__all__ = ["Error", "copy", "deepcopy"] - -def copy(x): - """Shallow copy operation on arbitrary Python objects. - - See the module's __doc__ string for more info. - """ - - cls = type(x) - - copier = _copy_dispatch.get(cls) - if copier: - return copier(x) - - copier = getattr(cls, "__copy__", None) - if copier: - return copier(x) - - reductor = dispatch_table.get(cls) - if reductor: - rv = reductor(x) - else: - reductor = getattr(x, "__reduce_ex__", None) - if reductor: - rv = reductor(2) - else: - reductor = getattr(x, "__reduce__", None) - if reductor: - rv = reductor() - else: - raise Error("un(shallow)copyable object of type %s" % cls) - - return _reconstruct(x, rv, 0) - - -_copy_dispatch = d = {} - -def _copy_immutable(x): - return x -for t in (type(None), int, long, float, bool, str, tuple, - frozenset, type, xrange, types.ClassType, - types.BuiltinFunctionType, type(Ellipsis), - types.FunctionType, weakref.ref): - d[t] = _copy_immutable -for name in ("ComplexType", "UnicodeType", "CodeType"): - t = getattr(types, name, None) - if t is not None: - d[t] = _copy_immutable - -def _copy_with_constructor(x): - return type(x)(x) -for t in (list, dict, set): - d[t] = _copy_with_constructor - -def _copy_with_copy_method(x): - return x.copy() -if PyStringMap is not None: - d[PyStringMap] = _copy_with_copy_method - -def _copy_inst(x): - if hasattr(x, '__copy__'): - return x.__copy__() - if hasattr(x, '__getinitargs__'): - args = x.__getinitargs__() - y = x.__class__(*args) - else: - y = _EmptyClass() - y.__class__ = x.__class__ - if hasattr(x, '__getstate__'): - state = x.__getstate__() - else: - state = x.__dict__ - if hasattr(y, '__setstate__'): - y.__setstate__(state) - else: - y.__dict__.update(state) - return y -d[types.InstanceType] = _copy_inst - -del d - -def deepcopy(x, memo=None, _nil=[]): - """Deep copy operation on arbitrary Python objects. - - See the module's __doc__ string for more info. - """ - - if memo is None: - memo = {} - - d = id(x) - y = memo.get(d, _nil) - if y is not _nil: - return y - - cls = type(x) - - copier = _deepcopy_dispatch.get(cls) - if copier: - y = copier(x, memo) - else: - try: - issc = issubclass(cls, type) - except TypeError: # cls is not a class (old Boost; see SF #502085) - issc = 0 - if issc: - y = _deepcopy_atomic(x, memo) - else: - copier = getattr(x, "__deepcopy__", None) - if copier: - y = copier(memo) - else: - reductor = dispatch_table.get(cls) - if reductor: - rv = reductor(x) - else: - reductor = getattr(x, "__reduce_ex__", None) - if reductor: - rv = reductor(2) - else: - reductor = getattr(x, "__reduce__", None) - if reductor: - rv = reductor() - else: - raise Error( - "un(deep)copyable object of type %s" % cls) - y = _reconstruct(x, rv, 1, memo) - - memo[d] = y - _keep_alive(x, memo) # Make sure x lives at least as long as d - return y - -_deepcopy_dispatch = d = {} - -def _deepcopy_atomic(x, memo): - return x -d[type(None)] = _deepcopy_atomic -d[type(Ellipsis)] = _deepcopy_atomic -d[int] = _deepcopy_atomic -d[long] = _deepcopy_atomic -d[float] = _deepcopy_atomic -d[bool] = _deepcopy_atomic -try: - d[complex] = _deepcopy_atomic -except NameError: - pass -d[str] = _deepcopy_atomic -try: - d[unicode] = _deepcopy_atomic -except NameError: - pass -try: - d[types.CodeType] = _deepcopy_atomic -except AttributeError: - pass -d[type] = _deepcopy_atomic -d[xrange] = _deepcopy_atomic -d[types.ClassType] = _deepcopy_atomic -d[types.BuiltinFunctionType] = _deepcopy_atomic -d[types.FunctionType] = _deepcopy_atomic -d[weakref.ref] = _deepcopy_atomic - -def _deepcopy_list(x, memo): - y = [] - memo[id(x)] = y - for a in x: - y.append(deepcopy(a, memo)) - return y -d[list] = _deepcopy_list - -def _deepcopy_tuple(x, memo): - y = [] - for a in x: - y.append(deepcopy(a, memo)) - d = id(x) - try: - return memo[d] - except KeyError: - pass - for i in range(len(x)): - if x[i] is not y[i]: - y = tuple(y) - break - else: - y = x - memo[d] = y - return y -d[tuple] = _deepcopy_tuple - -def _deepcopy_dict(x, memo): - y = {} - memo[id(x)] = y - for key, value in x.iteritems(): - y[deepcopy(key, memo)] = deepcopy(value, memo) - return y -d[dict] = _deepcopy_dict -if PyStringMap is not None: - d[PyStringMap] = _deepcopy_dict - -def _deepcopy_method(x, memo): # Copy instance methods - return type(x)(x.im_func, deepcopy(x.im_self, memo), x.im_class) -_deepcopy_dispatch[types.MethodType] = _deepcopy_method - -def _keep_alive(x, memo): - """Keeps a reference to the object x in the memo. - - Because we remember objects by their id, we have - to assure that possibly temporary objects are kept - alive by referencing them. - We store a reference at the id of the memo, which should - normally not be used unless someone tries to deepcopy - the memo itself... - """ - try: - memo[id(memo)].append(x) - except KeyError: - # aha, this is the first one :-) - memo[id(memo)]=[x] - -def _deepcopy_inst(x, memo): - if hasattr(x, '__deepcopy__'): - return x.__deepcopy__(memo) - if hasattr(x, '__getinitargs__'): - args = x.__getinitargs__() - args = deepcopy(args, memo) - y = x.__class__(*args) - else: - y = _EmptyClass() - y.__class__ = x.__class__ - memo[id(x)] = y - if hasattr(x, '__getstate__'): - state = x.__getstate__() - else: - state = x.__dict__ - state = deepcopy(state, memo) - if hasattr(y, '__setstate__'): - y.__setstate__(state) - else: - y.__dict__.update(state) - return y -d[types.InstanceType] = _deepcopy_inst - -def _reconstruct(x, info, deep, memo=None): - if isinstance(info, str): - return x - assert isinstance(info, tuple) - if memo is None: - memo = {} - n = len(info) - assert n in (2, 3, 4, 5) - callable, args = info[:2] - if n > 2: - state = info[2] - else: - state = {} - if n > 3: - listiter = info[3] - else: - listiter = None - if n > 4: - dictiter = info[4] - else: - dictiter = None - if deep: - args = deepcopy(args, memo) - y = callable(*args) - memo[id(x)] = y - - if state: - if deep: - state = deepcopy(state, memo) - if hasattr(y, '__setstate__'): - y.__setstate__(state) - else: - if isinstance(state, tuple) and len(state) == 2: - state, slotstate = state - else: - slotstate = None - if state is not None: - y.__dict__.update(state) - if slotstate is not None: - for key, value in slotstate.iteritems(): - setattr(y, key, value) - - if listiter is not None: - for item in listiter: - if deep: - item = deepcopy(item, memo) - y.append(item) - if dictiter is not None: - for key, value in dictiter: - if deep: - key = deepcopy(key, memo) - value = deepcopy(value, memo) - y[key] = value - return y - -del d - -del types - -# Helper for instance creation without calling __init__ -class _EmptyClass: - pass - -def _test(): - l = [None, 1, 2L, 3.14, 'xyzzy', (1, 2L), [3.14, 'abc'], - {'abc': 'ABC'}, (), [], {}] - l1 = copy(l) - print l1==l - l1 = map(copy, l) - print l1==l - l1 = deepcopy(l) - print l1==l - class C: - def __init__(self, arg=None): - self.a = 1 - self.arg = arg - if __name__ == '__main__': - import sys - file = sys.argv[0] - else: - file = __file__ - self.fp = open(file) - self.fp.close() - def __getstate__(self): - return {'a': self.a, 'arg': self.arg} - def __setstate__(self, state): - for key, value in state.iteritems(): - setattr(self, key, value) - def __deepcopy__(self, memo=None): - new = self.__class__(deepcopy(self.arg, memo)) - new.a = self.a - return new - c = C('argument sketch') - l.append(c) - l2 = copy(l) - print l == l2 - print l - print l2 - l2 = deepcopy(l) - print l == l2 - print l - print l2 - l.append({l[1]: l, 'xyz': l[2]}) - l3 = copy(l) - import repr - print map(repr.repr, l) - print map(repr.repr, l1) - print map(repr.repr, l2) - print map(repr.repr, l3) - l3 = deepcopy(l) - import repr - print map(repr.repr, l) - print map(repr.repr, l1) - print map(repr.repr, l2) - print map(repr.repr, l3) - class odict(dict): - def __init__(self, d = {}): - self.a = 99 - dict.__init__(self, d) - def __setitem__(self, k, i): - dict.__setitem__(self, k, i) - self.a - o = odict({"A" : "B"}) - x = deepcopy(o) - print(o, x) - -if __name__ == '__main__': - _test() diff --git a/pythonjs/lib/python2.7/copy_reg.py b/pythonjs/lib/python2.7/copy_reg.py deleted file mode 100644 index db17150..0000000 --- a/pythonjs/lib/python2.7/copy_reg.py +++ /dev/null @@ -1,201 +0,0 @@ -"""Helper to provide extensibility for pickle/cPickle. - -This is only useful to add pickle support for extension types defined in -C, not for instances of user-defined classes. -""" - -from types import ClassType as _ClassType - -__all__ = ["pickle", "constructor", - "add_extension", "remove_extension", "clear_extension_cache"] - -dispatch_table = {} - -def pickle(ob_type, pickle_function, constructor_ob=None): - if type(ob_type) is _ClassType: - raise TypeError("copy_reg is not intended for use with classes") - - if not hasattr(pickle_function, '__call__'): - raise TypeError("reduction functions must be callable") - dispatch_table[ob_type] = pickle_function - - # The constructor_ob function is a vestige of safe for unpickling. - # There is no reason for the caller to pass it anymore. - if constructor_ob is not None: - constructor(constructor_ob) - -def constructor(object): - if not hasattr(object, '__call__'): - raise TypeError("constructors must be callable") - -# Example: provide pickling support for complex numbers. - -try: - complex -except NameError: - pass -else: - - def pickle_complex(c): - return complex, (c.real, c.imag) - - pickle(complex, pickle_complex, complex) - -# Support for pickling new-style objects - -def _reconstructor(cls, base, state): - if base is object: - obj = object.__new__(cls) - else: - obj = base.__new__(cls, state) - if base.__init__ != object.__init__: - base.__init__(obj, state) - return obj - -_HEAPTYPE = 1<<9 - -# Python code for object.__reduce_ex__ for protocols 0 and 1 - -def _reduce_ex(self, proto): - assert proto < 2 - for base in self.__class__.__mro__: - if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE: - break - else: - base = object # not really reachable - if base is object: - state = None - else: - if base is self.__class__: - raise TypeError, "can't pickle %s objects" % base.__name__ - state = base(self) - args = (self.__class__, base, state) - try: - getstate = self.__getstate__ - except AttributeError: - if getattr(self, "__slots__", None): - raise TypeError("a class that defines __slots__ without " - "defining __getstate__ cannot be pickled") - try: - dict = self.__dict__ - except AttributeError: - dict = None - else: - dict = getstate() - if dict: - return _reconstructor, args, dict - else: - return _reconstructor, args - -# Helper for __reduce_ex__ protocol 2 - -def __newobj__(cls, *args): - return cls.__new__(cls, *args) - -def _slotnames(cls): - """Return a list of slot names for a given class. - - This needs to find slots defined by the class and its bases, so we - can't simply return the __slots__ attribute. We must walk down - the Method Resolution Order and concatenate the __slots__ of each - class found there. (This assumes classes don't modify their - __slots__ attribute to misrepresent their slots after the class is - defined.) - """ - - # Get the value from a cache in the class if possible - names = cls.__dict__.get("__slotnames__") - if names is not None: - return names - - # Not cached -- calculate the value - names = [] - if not hasattr(cls, "__slots__"): - # This class has no slots - pass - else: - # Slots found -- gather slot names from all base classes - for c in cls.__mro__: - if "__slots__" in c.__dict__: - slots = c.__dict__['__slots__'] - # if class has a single slot, it can be given as a string - if isinstance(slots, basestring): - slots = (slots,) - for name in slots: - # special descriptors - if name in ("__dict__", "__weakref__"): - continue - # mangled names - elif name.startswith('__') and not name.endswith('__'): - names.append('_%s%s' % (c.__name__, name)) - else: - names.append(name) - - # Cache the outcome in the class if at all possible - try: - cls.__slotnames__ = names - except: - pass # But don't die if we can't - - return names - -# A registry of extension codes. This is an ad-hoc compression -# mechanism. Whenever a global reference to , is about -# to be pickled, the (, ) tuple is looked up here to see -# if it is a registered extension code for it. Extension codes are -# universal, so that the meaning of a pickle does not depend on -# context. (There are also some codes reserved for local use that -# don't have this restriction.) Codes are positive ints; 0 is -# reserved. - -_extension_registry = {} # key -> code -_inverted_registry = {} # code -> key -_extension_cache = {} # code -> object -# Don't ever rebind those names: cPickle grabs a reference to them when -# it's initialized, and won't see a rebinding. - -def add_extension(module, name, code): - """Register an extension code.""" - code = int(code) - if not 1 <= code <= 0x7fffffff: - raise ValueError, "code out of range" - key = (module, name) - if (_extension_registry.get(key) == code and - _inverted_registry.get(code) == key): - return # Redundant registrations are benign - if key in _extension_registry: - raise ValueError("key %s is already registered with code %s" % - (key, _extension_registry[key])) - if code in _inverted_registry: - raise ValueError("code %s is already in use for key %s" % - (code, _inverted_registry[code])) - _extension_registry[key] = code - _inverted_registry[code] = key - -def remove_extension(module, name, code): - """Unregister an extension code. For testing only.""" - key = (module, name) - if (_extension_registry.get(key) != code or - _inverted_registry.get(code) != key): - raise ValueError("key %s is not registered with code %s" % - (key, code)) - del _extension_registry[key] - del _inverted_registry[code] - if code in _extension_cache: - del _extension_cache[code] - -def clear_extension_cache(): - _extension_cache.clear() - -# Standard extension code assignments - -# Reserved ranges - -# First Last Count Purpose -# 1 127 127 Reserved for Python standard library -# 128 191 64 Reserved for Zope -# 192 239 48 Reserved for 3rd parties -# 240 255 16 Reserved for private use (will never be assigned) -# 256 Inf Inf Reserved for future assignment - -# Extension codes are assigned by the Python Software Foundation. diff --git a/pythonjs/lib/python2.7/encodings/__init__.py b/pythonjs/lib/python2.7/encodings/__init__.py deleted file mode 100644 index b85ca82..0000000 --- a/pythonjs/lib/python2.7/encodings/__init__.py +++ /dev/null @@ -1,157 +0,0 @@ -""" Standard "encodings" Package - - Standard Python encoding modules are stored in this package - directory. - - Codec modules must have names corresponding to normalized encoding - names as defined in the normalize_encoding() function below, e.g. - 'utf-8' must be implemented by the module 'utf_8.py'. - - Each codec module must export the following interface: - - * getregentry() -> codecs.CodecInfo object - The getregentry() API must a CodecInfo object with encoder, decoder, - incrementalencoder, incrementaldecoder, streamwriter and streamreader - atttributes which adhere to the Python Codec Interface Standard. - - In addition, a module may optionally also define the following - APIs which are then used by the package's codec search function: - - * getaliases() -> sequence of encoding name strings to use as aliases - - Alias names returned by getaliases() must be normalized encoding - names as defined by normalize_encoding(). - -Written by Marc-Andre Lemburg (mal@lemburg.com). - -(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. - -"""#" - -import codecs -from encodings import aliases -import __builtin__ - -_cache = {} -_unknown = '--unknown--' -_import_tail = ['*'] -_norm_encoding_map = (' . ' - '0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ ' - ' abcdefghijklmnopqrstuvwxyz ' - ' ' - ' ' - ' ') -_aliases = aliases.aliases - -class CodecRegistryError(LookupError, SystemError): - pass - -def normalize_encoding(encoding): - - """ Normalize an encoding name. - - Normalization works as follows: all non-alphanumeric - characters except the dot used for Python package names are - collapsed and replaced with a single underscore, e.g. ' -;#' - becomes '_'. Leading and trailing underscores are removed. - - Note that encoding names should be ASCII only; if they do use - non-ASCII characters, these must be Latin-1 compatible. - - """ - # Make sure we have an 8-bit string, because .translate() works - # differently for Unicode strings. - if hasattr(__builtin__, "unicode") and isinstance(encoding, unicode): - # Note that .encode('latin-1') does *not* use the codec - # registry, so this call doesn't recurse. (See unicodeobject.c - # PyUnicode_AsEncodedString() for details) - encoding = encoding.encode('latin-1') - return '_'.join(encoding.translate(_norm_encoding_map).split()) - -def search_function(encoding): - - # Cache lookup - entry = _cache.get(encoding, _unknown) - if entry is not _unknown: - return entry - - # Import the module: - # - # First try to find an alias for the normalized encoding - # name and lookup the module using the aliased name, then try to - # lookup the module using the standard import scheme, i.e. first - # try in the encodings package, then at top-level. - # - norm_encoding = normalize_encoding(encoding) - aliased_encoding = _aliases.get(norm_encoding) or \ - _aliases.get(norm_encoding.replace('.', '_')) - if aliased_encoding is not None: - modnames = [aliased_encoding, - norm_encoding] - else: - modnames = [norm_encoding] - for modname in modnames: - if not modname or '.' in modname: - continue - try: - # Import is absolute to prevent the possibly malicious import of a - # module with side-effects that is not in the 'encodings' package. - mod = __import__('encodings.' + modname, fromlist=_import_tail, - level=0) - except ImportError: - pass - else: - break - else: - mod = None - - try: - getregentry = mod.getregentry - except AttributeError: - # Not a codec module - mod = None - - if mod is None: - # Cache misses - _cache[encoding] = None - return None - - # Now ask the module for the registry entry - entry = getregentry() - if not isinstance(entry, codecs.CodecInfo): - if not 4 <= len(entry) <= 7: - raise CodecRegistryError,\ - 'module "%s" (%s) failed to register' % \ - (mod.__name__, mod.__file__) - if not hasattr(entry[0], '__call__') or \ - not hasattr(entry[1], '__call__') or \ - (entry[2] is not None and not hasattr(entry[2], '__call__')) or \ - (entry[3] is not None and not hasattr(entry[3], '__call__')) or \ - (len(entry) > 4 and entry[4] is not None and not hasattr(entry[4], '__call__')) or \ - (len(entry) > 5 and entry[5] is not None and not hasattr(entry[5], '__call__')): - raise CodecRegistryError,\ - 'incompatible codecs in module "%s" (%s)' % \ - (mod.__name__, mod.__file__) - if len(entry)<7 or entry[6] is None: - entry += (None,)*(6-len(entry)) + (mod.__name__.split(".", 1)[1],) - entry = codecs.CodecInfo(*entry) - - # Cache the codec registry entry - _cache[encoding] = entry - - # Register its aliases (without overwriting previously registered - # aliases) - try: - codecaliases = mod.getaliases() - except AttributeError: - pass - else: - for alias in codecaliases: - if alias not in _aliases: - _aliases[alias] = modname - - # Return the registry entry - return entry - -# Register the search_function in the Python codec registry -codecs.register(search_function) diff --git a/pythonjs/lib/python2.7/encodings/aliases.py b/pythonjs/lib/python2.7/encodings/aliases.py deleted file mode 100644 index a54cf77..0000000 --- a/pythonjs/lib/python2.7/encodings/aliases.py +++ /dev/null @@ -1,527 +0,0 @@ -""" Encoding Aliases Support - - This module is used by the encodings package search function to - map encodings names to module names. - - Note that the search function normalizes the encoding names before - doing the lookup, so the mapping will have to map normalized - encoding names to module names. - - Contents: - - The following aliases dictionary contains mappings of all IANA - character set names for which the Python core library provides - codecs. In addition to these, a few Python specific codec - aliases have also been added. - -""" -aliases = { - - # Please keep this list sorted alphabetically by value ! - - # ascii codec - '646' : 'ascii', - 'ansi_x3.4_1968' : 'ascii', - 'ansi_x3_4_1968' : 'ascii', # some email headers use this non-standard name - 'ansi_x3.4_1986' : 'ascii', - 'cp367' : 'ascii', - 'csascii' : 'ascii', - 'ibm367' : 'ascii', - 'iso646_us' : 'ascii', - 'iso_646.irv_1991' : 'ascii', - 'iso_ir_6' : 'ascii', - 'us' : 'ascii', - 'us_ascii' : 'ascii', - - # base64_codec codec - 'base64' : 'base64_codec', - 'base_64' : 'base64_codec', - - # big5 codec - 'big5_tw' : 'big5', - 'csbig5' : 'big5', - - # big5hkscs codec - 'big5_hkscs' : 'big5hkscs', - 'hkscs' : 'big5hkscs', - - # bz2_codec codec - 'bz2' : 'bz2_codec', - - # cp037 codec - '037' : 'cp037', - 'csibm037' : 'cp037', - 'ebcdic_cp_ca' : 'cp037', - 'ebcdic_cp_nl' : 'cp037', - 'ebcdic_cp_us' : 'cp037', - 'ebcdic_cp_wt' : 'cp037', - 'ibm037' : 'cp037', - 'ibm039' : 'cp037', - - # cp1026 codec - '1026' : 'cp1026', - 'csibm1026' : 'cp1026', - 'ibm1026' : 'cp1026', - - # cp1140 codec - '1140' : 'cp1140', - 'ibm1140' : 'cp1140', - - # cp1250 codec - '1250' : 'cp1250', - 'windows_1250' : 'cp1250', - - # cp1251 codec - '1251' : 'cp1251', - 'windows_1251' : 'cp1251', - - # cp1252 codec - '1252' : 'cp1252', - 'windows_1252' : 'cp1252', - - # cp1253 codec - '1253' : 'cp1253', - 'windows_1253' : 'cp1253', - - # cp1254 codec - '1254' : 'cp1254', - 'windows_1254' : 'cp1254', - - # cp1255 codec - '1255' : 'cp1255', - 'windows_1255' : 'cp1255', - - # cp1256 codec - '1256' : 'cp1256', - 'windows_1256' : 'cp1256', - - # cp1257 codec - '1257' : 'cp1257', - 'windows_1257' : 'cp1257', - - # cp1258 codec - '1258' : 'cp1258', - 'windows_1258' : 'cp1258', - - # cp424 codec - '424' : 'cp424', - 'csibm424' : 'cp424', - 'ebcdic_cp_he' : 'cp424', - 'ibm424' : 'cp424', - - # cp437 codec - '437' : 'cp437', - 'cspc8codepage437' : 'cp437', - 'ibm437' : 'cp437', - - # cp500 codec - '500' : 'cp500', - 'csibm500' : 'cp500', - 'ebcdic_cp_be' : 'cp500', - 'ebcdic_cp_ch' : 'cp500', - 'ibm500' : 'cp500', - - # cp775 codec - '775' : 'cp775', - 'cspc775baltic' : 'cp775', - 'ibm775' : 'cp775', - - # cp850 codec - '850' : 'cp850', - 'cspc850multilingual' : 'cp850', - 'ibm850' : 'cp850', - - # cp852 codec - '852' : 'cp852', - 'cspcp852' : 'cp852', - 'ibm852' : 'cp852', - - # cp855 codec - '855' : 'cp855', - 'csibm855' : 'cp855', - 'ibm855' : 'cp855', - - # cp857 codec - '857' : 'cp857', - 'csibm857' : 'cp857', - 'ibm857' : 'cp857', - - # cp858 codec - '858' : 'cp858', - 'csibm858' : 'cp858', - 'ibm858' : 'cp858', - - # cp860 codec - '860' : 'cp860', - 'csibm860' : 'cp860', - 'ibm860' : 'cp860', - - # cp861 codec - '861' : 'cp861', - 'cp_is' : 'cp861', - 'csibm861' : 'cp861', - 'ibm861' : 'cp861', - - # cp862 codec - '862' : 'cp862', - 'cspc862latinhebrew' : 'cp862', - 'ibm862' : 'cp862', - - # cp863 codec - '863' : 'cp863', - 'csibm863' : 'cp863', - 'ibm863' : 'cp863', - - # cp864 codec - '864' : 'cp864', - 'csibm864' : 'cp864', - 'ibm864' : 'cp864', - - # cp865 codec - '865' : 'cp865', - 'csibm865' : 'cp865', - 'ibm865' : 'cp865', - - # cp866 codec - '866' : 'cp866', - 'csibm866' : 'cp866', - 'ibm866' : 'cp866', - - # cp869 codec - '869' : 'cp869', - 'cp_gr' : 'cp869', - 'csibm869' : 'cp869', - 'ibm869' : 'cp869', - - # cp932 codec - '932' : 'cp932', - 'ms932' : 'cp932', - 'mskanji' : 'cp932', - 'ms_kanji' : 'cp932', - - # cp949 codec - '949' : 'cp949', - 'ms949' : 'cp949', - 'uhc' : 'cp949', - - # cp950 codec - '950' : 'cp950', - 'ms950' : 'cp950', - - # euc_jis_2004 codec - 'jisx0213' : 'euc_jis_2004', - 'eucjis2004' : 'euc_jis_2004', - 'euc_jis2004' : 'euc_jis_2004', - - # euc_jisx0213 codec - 'eucjisx0213' : 'euc_jisx0213', - - # euc_jp codec - 'eucjp' : 'euc_jp', - 'ujis' : 'euc_jp', - 'u_jis' : 'euc_jp', - - # euc_kr codec - 'euckr' : 'euc_kr', - 'korean' : 'euc_kr', - 'ksc5601' : 'euc_kr', - 'ks_c_5601' : 'euc_kr', - 'ks_c_5601_1987' : 'euc_kr', - 'ksx1001' : 'euc_kr', - 'ks_x_1001' : 'euc_kr', - - # gb18030 codec - 'gb18030_2000' : 'gb18030', - - # gb2312 codec - 'chinese' : 'gb2312', - 'csiso58gb231280' : 'gb2312', - 'euc_cn' : 'gb2312', - 'euccn' : 'gb2312', - 'eucgb2312_cn' : 'gb2312', - 'gb2312_1980' : 'gb2312', - 'gb2312_80' : 'gb2312', - 'iso_ir_58' : 'gb2312', - - # gbk codec - '936' : 'gbk', - 'cp936' : 'gbk', - 'ms936' : 'gbk', - - # hex_codec codec - 'hex' : 'hex_codec', - - # hp_roman8 codec - 'roman8' : 'hp_roman8', - 'r8' : 'hp_roman8', - 'csHPRoman8' : 'hp_roman8', - - # hz codec - 'hzgb' : 'hz', - 'hz_gb' : 'hz', - 'hz_gb_2312' : 'hz', - - # iso2022_jp codec - 'csiso2022jp' : 'iso2022_jp', - 'iso2022jp' : 'iso2022_jp', - 'iso_2022_jp' : 'iso2022_jp', - - # iso2022_jp_1 codec - 'iso2022jp_1' : 'iso2022_jp_1', - 'iso_2022_jp_1' : 'iso2022_jp_1', - - # iso2022_jp_2 codec - 'iso2022jp_2' : 'iso2022_jp_2', - 'iso_2022_jp_2' : 'iso2022_jp_2', - - # iso2022_jp_2004 codec - 'iso_2022_jp_2004' : 'iso2022_jp_2004', - 'iso2022jp_2004' : 'iso2022_jp_2004', - - # iso2022_jp_3 codec - 'iso2022jp_3' : 'iso2022_jp_3', - 'iso_2022_jp_3' : 'iso2022_jp_3', - - # iso2022_jp_ext codec - 'iso2022jp_ext' : 'iso2022_jp_ext', - 'iso_2022_jp_ext' : 'iso2022_jp_ext', - - # iso2022_kr codec - 'csiso2022kr' : 'iso2022_kr', - 'iso2022kr' : 'iso2022_kr', - 'iso_2022_kr' : 'iso2022_kr', - - # iso8859_10 codec - 'csisolatin6' : 'iso8859_10', - 'iso_8859_10' : 'iso8859_10', - 'iso_8859_10_1992' : 'iso8859_10', - 'iso_ir_157' : 'iso8859_10', - 'l6' : 'iso8859_10', - 'latin6' : 'iso8859_10', - - # iso8859_11 codec - 'thai' : 'iso8859_11', - 'iso_8859_11' : 'iso8859_11', - 'iso_8859_11_2001' : 'iso8859_11', - - # iso8859_13 codec - 'iso_8859_13' : 'iso8859_13', - 'l7' : 'iso8859_13', - 'latin7' : 'iso8859_13', - - # iso8859_14 codec - 'iso_8859_14' : 'iso8859_14', - 'iso_8859_14_1998' : 'iso8859_14', - 'iso_celtic' : 'iso8859_14', - 'iso_ir_199' : 'iso8859_14', - 'l8' : 'iso8859_14', - 'latin8' : 'iso8859_14', - - # iso8859_15 codec - 'iso_8859_15' : 'iso8859_15', - 'l9' : 'iso8859_15', - 'latin9' : 'iso8859_15', - - # iso8859_16 codec - 'iso_8859_16' : 'iso8859_16', - 'iso_8859_16_2001' : 'iso8859_16', - 'iso_ir_226' : 'iso8859_16', - 'l10' : 'iso8859_16', - 'latin10' : 'iso8859_16', - - # iso8859_2 codec - 'csisolatin2' : 'iso8859_2', - 'iso_8859_2' : 'iso8859_2', - 'iso_8859_2_1987' : 'iso8859_2', - 'iso_ir_101' : 'iso8859_2', - 'l2' : 'iso8859_2', - 'latin2' : 'iso8859_2', - - # iso8859_3 codec - 'csisolatin3' : 'iso8859_3', - 'iso_8859_3' : 'iso8859_3', - 'iso_8859_3_1988' : 'iso8859_3', - 'iso_ir_109' : 'iso8859_3', - 'l3' : 'iso8859_3', - 'latin3' : 'iso8859_3', - - # iso8859_4 codec - 'csisolatin4' : 'iso8859_4', - 'iso_8859_4' : 'iso8859_4', - 'iso_8859_4_1988' : 'iso8859_4', - 'iso_ir_110' : 'iso8859_4', - 'l4' : 'iso8859_4', - 'latin4' : 'iso8859_4', - - # iso8859_5 codec - 'csisolatincyrillic' : 'iso8859_5', - 'cyrillic' : 'iso8859_5', - 'iso_8859_5' : 'iso8859_5', - 'iso_8859_5_1988' : 'iso8859_5', - 'iso_ir_144' : 'iso8859_5', - - # iso8859_6 codec - 'arabic' : 'iso8859_6', - 'asmo_708' : 'iso8859_6', - 'csisolatinarabic' : 'iso8859_6', - 'ecma_114' : 'iso8859_6', - 'iso_8859_6' : 'iso8859_6', - 'iso_8859_6_1987' : 'iso8859_6', - 'iso_ir_127' : 'iso8859_6', - - # iso8859_7 codec - 'csisolatingreek' : 'iso8859_7', - 'ecma_118' : 'iso8859_7', - 'elot_928' : 'iso8859_7', - 'greek' : 'iso8859_7', - 'greek8' : 'iso8859_7', - 'iso_8859_7' : 'iso8859_7', - 'iso_8859_7_1987' : 'iso8859_7', - 'iso_ir_126' : 'iso8859_7', - - # iso8859_8 codec - 'csisolatinhebrew' : 'iso8859_8', - 'hebrew' : 'iso8859_8', - 'iso_8859_8' : 'iso8859_8', - 'iso_8859_8_1988' : 'iso8859_8', - 'iso_ir_138' : 'iso8859_8', - - # iso8859_9 codec - 'csisolatin5' : 'iso8859_9', - 'iso_8859_9' : 'iso8859_9', - 'iso_8859_9_1989' : 'iso8859_9', - 'iso_ir_148' : 'iso8859_9', - 'l5' : 'iso8859_9', - 'latin5' : 'iso8859_9', - - # johab codec - 'cp1361' : 'johab', - 'ms1361' : 'johab', - - # koi8_r codec - 'cskoi8r' : 'koi8_r', - - # latin_1 codec - # - # Note that the latin_1 codec is implemented internally in C and a - # lot faster than the charmap codec iso8859_1 which uses the same - # encoding. This is why we discourage the use of the iso8859_1 - # codec and alias it to latin_1 instead. - # - '8859' : 'latin_1', - 'cp819' : 'latin_1', - 'csisolatin1' : 'latin_1', - 'ibm819' : 'latin_1', - 'iso8859' : 'latin_1', - 'iso8859_1' : 'latin_1', - 'iso_8859_1' : 'latin_1', - 'iso_8859_1_1987' : 'latin_1', - 'iso_ir_100' : 'latin_1', - 'l1' : 'latin_1', - 'latin' : 'latin_1', - 'latin1' : 'latin_1', - - # mac_cyrillic codec - 'maccyrillic' : 'mac_cyrillic', - - # mac_greek codec - 'macgreek' : 'mac_greek', - - # mac_iceland codec - 'maciceland' : 'mac_iceland', - - # mac_latin2 codec - 'maccentraleurope' : 'mac_latin2', - 'maclatin2' : 'mac_latin2', - - # mac_roman codec - 'macroman' : 'mac_roman', - - # mac_turkish codec - 'macturkish' : 'mac_turkish', - - # mbcs codec - 'dbcs' : 'mbcs', - - # ptcp154 codec - 'csptcp154' : 'ptcp154', - 'pt154' : 'ptcp154', - 'cp154' : 'ptcp154', - 'cyrillic_asian' : 'ptcp154', - - # quopri_codec codec - 'quopri' : 'quopri_codec', - 'quoted_printable' : 'quopri_codec', - 'quotedprintable' : 'quopri_codec', - - # rot_13 codec - 'rot13' : 'rot_13', - - # shift_jis codec - 'csshiftjis' : 'shift_jis', - 'shiftjis' : 'shift_jis', - 'sjis' : 'shift_jis', - 's_jis' : 'shift_jis', - - # shift_jis_2004 codec - 'shiftjis2004' : 'shift_jis_2004', - 'sjis_2004' : 'shift_jis_2004', - 's_jis_2004' : 'shift_jis_2004', - - # shift_jisx0213 codec - 'shiftjisx0213' : 'shift_jisx0213', - 'sjisx0213' : 'shift_jisx0213', - 's_jisx0213' : 'shift_jisx0213', - - # tactis codec - 'tis260' : 'tactis', - - # tis_620 codec - 'tis620' : 'tis_620', - 'tis_620_0' : 'tis_620', - 'tis_620_2529_0' : 'tis_620', - 'tis_620_2529_1' : 'tis_620', - 'iso_ir_166' : 'tis_620', - - # utf_16 codec - 'u16' : 'utf_16', - 'utf16' : 'utf_16', - - # utf_16_be codec - 'unicodebigunmarked' : 'utf_16_be', - 'utf_16be' : 'utf_16_be', - - # utf_16_le codec - 'unicodelittleunmarked' : 'utf_16_le', - 'utf_16le' : 'utf_16_le', - - # utf_32 codec - 'u32' : 'utf_32', - 'utf32' : 'utf_32', - - # utf_32_be codec - 'utf_32be' : 'utf_32_be', - - # utf_32_le codec - 'utf_32le' : 'utf_32_le', - - # utf_7 codec - 'u7' : 'utf_7', - 'utf7' : 'utf_7', - 'unicode_1_1_utf_7' : 'utf_7', - - # utf_8 codec - 'u8' : 'utf_8', - 'utf' : 'utf_8', - 'utf8' : 'utf_8', - 'utf8_ucs2' : 'utf_8', - 'utf8_ucs4' : 'utf_8', - - # uu_codec codec - 'uu' : 'uu_codec', - - # zlib_codec codec - 'zip' : 'zlib_codec', - 'zlib' : 'zlib_codec', - -} diff --git a/pythonjs/lib/python2.7/encodings/ascii.py b/pythonjs/lib/python2.7/encodings/ascii.py deleted file mode 100644 index 2033cde..0000000 --- a/pythonjs/lib/python2.7/encodings/ascii.py +++ /dev/null @@ -1,50 +0,0 @@ -""" Python 'ascii' Codec - - -Written by Marc-Andre Lemburg (mal@lemburg.com). - -(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. - -""" -import codecs - -### Codec APIs - -class Codec(codecs.Codec): - - # Note: Binding these as C functions will result in the class not - # converting them to methods. This is intended. - encode = codecs.ascii_encode - decode = codecs.ascii_decode - -class IncrementalEncoder(codecs.IncrementalEncoder): - def encode(self, input, final=False): - return codecs.ascii_encode(input, self.errors)[0] - -class IncrementalDecoder(codecs.IncrementalDecoder): - def decode(self, input, final=False): - return codecs.ascii_decode(input, self.errors)[0] - -class StreamWriter(Codec,codecs.StreamWriter): - pass - -class StreamReader(Codec,codecs.StreamReader): - pass - -class StreamConverter(StreamWriter,StreamReader): - - encode = codecs.ascii_decode - decode = codecs.ascii_encode - -### encodings module API - -def getregentry(): - return codecs.CodecInfo( - name='ascii', - encode=Codec.encode, - decode=Codec.decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamwriter=StreamWriter, - streamreader=StreamReader, - ) diff --git a/pythonjs/lib/python2.7/encodings/utf_8.py b/pythonjs/lib/python2.7/encodings/utf_8.py deleted file mode 100644 index 1bf6336..0000000 --- a/pythonjs/lib/python2.7/encodings/utf_8.py +++ /dev/null @@ -1,42 +0,0 @@ -""" Python 'utf-8' Codec - - -Written by Marc-Andre Lemburg (mal@lemburg.com). - -(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. - -""" -import codecs - -### Codec APIs - -encode = codecs.utf_8_encode - -def decode(input, errors='strict'): - return codecs.utf_8_decode(input, errors, True) - -class IncrementalEncoder(codecs.IncrementalEncoder): - def encode(self, input, final=False): - return codecs.utf_8_encode(input, self.errors)[0] - -class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - _buffer_decode = codecs.utf_8_decode - -class StreamWriter(codecs.StreamWriter): - encode = codecs.utf_8_encode - -class StreamReader(codecs.StreamReader): - decode = codecs.utf_8_decode - -### encodings module API - -def getregentry(): - return codecs.CodecInfo( - name='utf-8', - encode=encode, - decode=decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamreader=StreamReader, - streamwriter=StreamWriter, - ) diff --git a/pythonjs/lib/python2.7/genericpath.py b/pythonjs/lib/python2.7/genericpath.py deleted file mode 100644 index a0bf601..0000000 --- a/pythonjs/lib/python2.7/genericpath.py +++ /dev/null @@ -1,105 +0,0 @@ -""" -Path operations common to more than one OS -Do not use directly. The OS specific modules import the appropriate -functions from this module themselves. -""" -import os -import stat - -__all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime', - 'getsize', 'isdir', 'isfile'] - - -# Does a path exist? -# This is false for dangling symbolic links on systems that support them. -def exists(path): - """Test whether a path exists. Returns False for broken symbolic links""" - try: - os.stat(path) - except os.error: - return False - return True - - -# This follows symbolic links, so both islink() and isdir() can be true -# for the same path ono systems that support symlinks -def isfile(path): - """Test whether a path is a regular file""" - try: - st = os.stat(path) - except os.error: - return False - return stat.S_ISREG(st.st_mode) - - -# Is a path a directory? -# This follows symbolic links, so both islink() and isdir() -# can be true for the same path on systems that support symlinks -def isdir(s): - """Return true if the pathname refers to an existing directory.""" - try: - st = os.stat(s) - except os.error: - return False - return stat.S_ISDIR(st.st_mode) - - -def getsize(filename): - """Return the size of a file, reported by os.stat().""" - return os.stat(filename).st_size - - -def getmtime(filename): - """Return the last modification time of a file, reported by os.stat().""" - return os.stat(filename).st_mtime - - -def getatime(filename): - """Return the last access time of a file, reported by os.stat().""" - return os.stat(filename).st_atime - - -def getctime(filename): - """Return the metadata change time of a file, reported by os.stat().""" - return os.stat(filename).st_ctime - - -# Return the longest prefix of all list elements. -def commonprefix(m): - "Given a list of pathnames, returns the longest common leading component" - if not m: return '' - s1 = min(m) - s2 = max(m) - for i, c in enumerate(s1): - if c != s2[i]: - return s1[:i] - return s1 - -# Split a path in root and extension. -# The extension is everything starting at the last dot in the last -# pathname component; the root is everything before that. -# It is always true that root + ext == p. - -# Generic implementation of splitext, to be parametrized with -# the separators -def _splitext(p, sep, altsep, extsep): - """Split the extension from a pathname. - - Extension is everything from the last dot to the end, ignoring - leading dots. Returns "(root, ext)"; ext may be empty.""" - - sepIndex = p.rfind(sep) - if altsep: - altsepIndex = p.rfind(altsep) - sepIndex = max(sepIndex, altsepIndex) - - dotIndex = p.rfind(extsep) - if dotIndex > sepIndex: - # skip all leading dots - filenameIndex = sepIndex + 1 - while filenameIndex < dotIndex: - if p[filenameIndex] != extsep: - return p[:dotIndex], p[dotIndex:] - filenameIndex += 1 - - return p, '' diff --git a/pythonjs/lib/python2.7/linecache.py b/pythonjs/lib/python2.7/linecache.py deleted file mode 100644 index 811f27f..0000000 --- a/pythonjs/lib/python2.7/linecache.py +++ /dev/null @@ -1,135 +0,0 @@ -"""Cache lines from files. - -This is intended to read lines from modules imported -- hence if a filename -is not found, it will look down the module search path for a file by -that name. -""" - -import sys -import os - -__all__ = ["getline", "clearcache", "checkcache"] - -def getline(filename, lineno, module_globals=None): - lines = getlines(filename, module_globals) - if 1 <= lineno <= len(lines): - return lines[lineno-1] - else: - return '' - - -# The cache - -cache = {} # The cache - - -def clearcache(): - """Clear the cache entirely.""" - - global cache - cache = {} - - -def getlines(filename, module_globals=None): - """Get the lines for a file from the cache. - Update the cache if it doesn't contain an entry for this file already.""" - - if filename in cache: - return cache[filename][2] - else: - return updatecache(filename, module_globals) - - -def checkcache(filename=None): - """Discard cache entries that are out of date. - (This is not checked upon each call!)""" - - if filename is None: - filenames = cache.keys() - else: - if filename in cache: - filenames = [filename] - else: - return - - for filename in filenames: - size, mtime, lines, fullname = cache[filename] - if mtime is None: - continue # no-op for files loaded via a __loader__ - try: - stat = os.stat(fullname) - except os.error: - del cache[filename] - continue - if size != stat.st_size or mtime != stat.st_mtime: - del cache[filename] - - -def updatecache(filename, module_globals=None): - """Update a cache entry and return its list of lines. - If something's wrong, print a message, discard the cache entry, - and return an empty list.""" - - if filename in cache: - del cache[filename] - if not filename or (filename.startswith('<') and filename.endswith('>')): - return [] - - fullname = filename - try: - stat = os.stat(fullname) - except OSError: - basename = filename - - # Try for a __loader__, if available - if module_globals and '__loader__' in module_globals: - name = module_globals.get('__name__') - loader = module_globals['__loader__'] - get_source = getattr(loader, 'get_source', None) - - if name and get_source: - try: - data = get_source(name) - except (ImportError, IOError): - pass - else: - if data is None: - # No luck, the PEP302 loader cannot find the source - # for this module. - return [] - cache[filename] = ( - len(data), None, - [line+'\n' for line in data.splitlines()], fullname - ) - return cache[filename][2] - - # Try looking through the module search path, which is only useful - # when handling a relative filename. - if os.path.isabs(filename): - return [] - - for dirname in sys.path: - # When using imputil, sys.path may contain things other than - # strings; ignore them when it happens. - try: - fullname = os.path.join(dirname, basename) - except (TypeError, AttributeError): - # Not sufficiently string-like to do anything useful with. - continue - try: - stat = os.stat(fullname) - break - except os.error: - pass - else: - return [] - try: - with open(fullname, 'rU') as fp: - lines = fp.readlines() - except IOError: - return [] - if lines and not lines[-1].endswith('\n'): - lines[-1] += '\n' - size, mtime = stat.st_size, stat.st_mtime - cache[filename] = size, mtime, lines, fullname - return lines diff --git a/pythonjs/lib/python2.7/os.py b/pythonjs/lib/python2.7/os.py deleted file mode 100644 index c612e17..0000000 --- a/pythonjs/lib/python2.7/os.py +++ /dev/null @@ -1,759 +0,0 @@ -r"""OS routines for Mac, NT, or Posix depending on what system we're on. - -This exports: - - all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc. - - os.path is one of the modules posixpath, or ntpath - - os.name is 'posix', 'nt', 'os2', 'ce' or 'riscos' - - os.curdir is a string representing the current directory ('.' or ':') - - os.pardir is a string representing the parent directory ('..' or '::') - - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\') - - os.extsep is the extension separator ('.' or '/') - - os.altsep is the alternate pathname separator (None or '/') - - os.pathsep is the component separator used in $PATH etc - - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n') - - os.defpath is the default search path for executables - - os.devnull is the file path of the null device ('/dev/null', etc.) - -Programs that import and use 'os' stand a better chance of being -portable between different platforms. Of course, they must then -only use functions that are defined by all platforms (e.g., unlink -and opendir), and leave all pathname manipulation to os.path -(e.g., split and join). -""" - -#' - -import sys, errno - -_names = sys.builtin_module_names - -# Note: more names are added to __all__ later. -__all__ = ["altsep", "curdir", "pardir", "sep", "extsep", "pathsep", "linesep", - "defpath", "name", "path", "devnull", - "SEEK_SET", "SEEK_CUR", "SEEK_END"] - -def _get_exports_list(module): - try: - return list(module.__all__) - except AttributeError: - return [n for n in dir(module) if n[0] != '_'] - -if 'posix' in _names: - name = 'posix' - linesep = '\n' - from posix import * - try: - from posix import _exit - except ImportError: - pass - import posixpath as path - - import posix - __all__.extend(_get_exports_list(posix)) - del posix - -elif 'nt' in _names: - name = 'nt' - linesep = '\r\n' - from nt import * - try: - from nt import _exit - except ImportError: - pass - import ntpath as path - - import nt - __all__.extend(_get_exports_list(nt)) - del nt - -elif 'os2' in _names: - name = 'os2' - linesep = '\r\n' - from os2 import * - try: - from os2 import _exit - except ImportError: - pass - if sys.version.find('EMX GCC') == -1: - import ntpath as path - else: - import os2emxpath as path - from _emx_link import link - - import os2 - __all__.extend(_get_exports_list(os2)) - del os2 - -elif 'ce' in _names: - name = 'ce' - linesep = '\r\n' - from ce import * - try: - from ce import _exit - except ImportError: - pass - # We can use the standard Windows path. - import ntpath as path - - import ce - __all__.extend(_get_exports_list(ce)) - del ce - -elif 'riscos' in _names: - name = 'riscos' - linesep = '\n' - from riscos import * - try: - from riscos import _exit - except ImportError: - pass - import riscospath as path - - import riscos - __all__.extend(_get_exports_list(riscos)) - del riscos - -else: - raise ImportError, 'no os specific module found' - -sys.modules['os.path'] = path -from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep, - devnull) - -del _names - -# Python uses fixed values for the SEEK_ constants; they are mapped -# to native constants if necessary in posixmodule.c -SEEK_SET = 0 -SEEK_CUR = 1 -SEEK_END = 2 - -#' - -# Super directory utilities. -# (Inspired by Eric Raymond; the doc strings are mostly his) - -def makedirs(name, mode=0777): - """makedirs(path [, mode=0777]) - - Super-mkdir; create a leaf directory and all intermediate ones. - Works like mkdir, except that any intermediate path segment (not - just the rightmost) will be created if it does not exist. This is - recursive. - - """ - head, tail = path.split(name) - if not tail: - head, tail = path.split(head) - if head and tail and not path.exists(head): - try: - makedirs(head, mode) - except OSError, e: - # be happy if someone already created the path - if e.errno != errno.EEXIST: - raise - if tail == curdir: # xxx/newdir/. exists if xxx/newdir exists - return - mkdir(name, mode) - -def removedirs(name): - """removedirs(path) - - Super-rmdir; remove a leaf directory and all empty intermediate - ones. Works like rmdir except that, if the leaf directory is - successfully removed, directories corresponding to rightmost path - segments will be pruned away until either the whole path is - consumed or an error occurs. Errors during this latter phase are - ignored -- they generally mean that a directory was not empty. - - """ - rmdir(name) - head, tail = path.split(name) - if not tail: - head, tail = path.split(head) - while head and tail: - try: - rmdir(head) - except error: - break - head, tail = path.split(head) - -def renames(old, new): - """renames(old, new) - - Super-rename; create directories as necessary and delete any left - empty. Works like rename, except creation of any intermediate - directories needed to make the new pathname good is attempted - first. After the rename, directories corresponding to rightmost - path segments of the old name will be pruned way until either the - whole path is consumed or a nonempty directory is found. - - Note: this function can fail with the new directory structure made - if you lack permissions needed to unlink the leaf directory or - file. - - """ - head, tail = path.split(new) - if head and tail and not path.exists(head): - makedirs(head) - rename(old, new) - head, tail = path.split(old) - if head and tail: - try: - removedirs(head) - except error: - pass - -__all__.extend(["makedirs", "removedirs", "renames"]) - -def walk(top, topdown=True, onerror=None, followlinks=False): - """Directory tree generator. - - For each directory in the directory tree rooted at top (including top - itself, but excluding '.' and '..'), yields a 3-tuple - - dirpath, dirnames, filenames - - dirpath is a string, the path to the directory. dirnames is a list of - the names of the subdirectories in dirpath (excluding '.' and '..'). - filenames is a list of the names of the non-directory files in dirpath. - Note that the names in the lists are just names, with no path components. - To get a full path (which begins with top) to a file or directory in - dirpath, do os.path.join(dirpath, name). - - If optional arg 'topdown' is true or not specified, the triple for a - directory is generated before the triples for any of its subdirectories - (directories are generated top down). If topdown is false, the triple - for a directory is generated after the triples for all of its - subdirectories (directories are generated bottom up). - - When topdown is true, the caller can modify the dirnames list in-place - (e.g., via del or slice assignment), and walk will only recurse into the - subdirectories whose names remain in dirnames; this can be used to prune - the search, or to impose a specific order of visiting. Modifying - dirnames when topdown is false is ineffective, since the directories in - dirnames have already been generated by the time dirnames itself is - generated. - - By default errors from the os.listdir() call are ignored. If - optional arg 'onerror' is specified, it should be a function; it - will be called with one argument, an os.error instance. It can - report the error to continue with the walk, or raise the exception - to abort the walk. Note that the filename is available as the - filename attribute of the exception object. - - By default, os.walk does not follow symbolic links to subdirectories on - systems that support them. In order to get this functionality, set the - optional argument 'followlinks' to true. - - Caution: if you pass a relative pathname for top, don't change the - current working directory between resumptions of walk. walk never - changes the current directory, and assumes that the client doesn't - either. - - Example: - - import os - from os.path import join, getsize - for root, dirs, files in os.walk('python/Lib/email'): - print root, "consumes", - print sum([getsize(join(root, name)) for name in files]), - print "bytes in", len(files), "non-directory files" - if 'CVS' in dirs: - dirs.remove('CVS') # don't visit CVS directories - """ - - islink, join, isdir = path.islink, path.join, path.isdir - - # We may not have read permission for top, in which case we can't - # get a list of the files the directory contains. os.path.walk - # always suppressed the exception then, rather than blow up for a - # minor reason when (say) a thousand readable directories are still - # left to visit. That logic is copied here. - try: - # Note that listdir and error are globals in this module due - # to earlier import-*. - names = listdir(top) - except error, err: - if onerror is not None: - onerror(err) - return - - dirs, nondirs = [], [] - for name in names: - if isdir(join(top, name)): - dirs.append(name) - else: - nondirs.append(name) - - if topdown: - yield top, dirs, nondirs - for name in dirs: - new_path = join(top, name) - if followlinks or not islink(new_path): - for x in walk(new_path, topdown, onerror, followlinks): - yield x - if not topdown: - yield top, dirs, nondirs - -__all__.append("walk") - -# Make sure os.environ exists, at least -try: - environ -except NameError: - environ = {} - -def execl(file, *args): - """execl(file, *args) - - Execute the executable file with argument list args, replacing the - current process. """ - execv(file, args) - -def execle(file, *args): - """execle(file, *args, env) - - Execute the executable file with argument list args and - environment env, replacing the current process. """ - env = args[-1] - execve(file, args[:-1], env) - -def execlp(file, *args): - """execlp(file, *args) - - Execute the executable file (which is searched for along $PATH) - with argument list args, replacing the current process. """ - execvp(file, args) - -def execlpe(file, *args): - """execlpe(file, *args, env) - - Execute the executable file (which is searched for along $PATH) - with argument list args and environment env, replacing the current - process. """ - env = args[-1] - execvpe(file, args[:-1], env) - -def execvp(file, args): - """execvp(file, args) - - Execute the executable file (which is searched for along $PATH) - with argument list args, replacing the current process. - args may be a list or tuple of strings. """ - _execvpe(file, args) - -def execvpe(file, args, env): - """execvpe(file, args, env) - - Execute the executable file (which is searched for along $PATH) - with argument list args and environment env , replacing the - current process. - args may be a list or tuple of strings. """ - _execvpe(file, args, env) - -__all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"]) - -def _execvpe(file, args, env=None): - if env is not None: - func = execve - argrest = (args, env) - else: - func = execv - argrest = (args,) - env = environ - - head, tail = path.split(file) - if head: - func(file, *argrest) - return - if 'PATH' in env: - envpath = env['PATH'] - else: - envpath = defpath - PATH = envpath.split(pathsep) - saved_exc = None - saved_tb = None - for dir in PATH: - fullname = path.join(dir, file) - try: - func(fullname, *argrest) - except error, e: - tb = sys.exc_info()[2] - if (e.errno != errno.ENOENT and e.errno != errno.ENOTDIR - and saved_exc is None): - saved_exc = e - saved_tb = tb - if saved_exc: - raise error, saved_exc, saved_tb - raise error, e, tb - -# Change environ to automatically call putenv() if it exists -try: - # This will fail if there's no putenv - putenv -except NameError: - pass -else: - import UserDict - - # Fake unsetenv() for Windows - # not sure about os2 here but - # I'm guessing they are the same. - - if name in ('os2', 'nt'): - def unsetenv(key): - putenv(key, "") - - if name == "riscos": - # On RISC OS, all env access goes through getenv and putenv - from riscosenviron import _Environ - elif name in ('os2', 'nt'): # Where Env Var Names Must Be UPPERCASE - # But we store them as upper case - class _Environ(UserDict.IterableUserDict): - def __init__(self, environ): - UserDict.UserDict.__init__(self) - data = self.data - for k, v in environ.items(): - data[k.upper()] = v - def __setitem__(self, key, item): - putenv(key, item) - self.data[key.upper()] = item - def __getitem__(self, key): - return self.data[key.upper()] - try: - unsetenv - except NameError: - def __delitem__(self, key): - del self.data[key.upper()] - else: - def __delitem__(self, key): - unsetenv(key) - del self.data[key.upper()] - def clear(self): - for key in self.data.keys(): - unsetenv(key) - del self.data[key] - def pop(self, key, *args): - unsetenv(key) - return self.data.pop(key.upper(), *args) - def has_key(self, key): - return key.upper() in self.data - def __contains__(self, key): - return key.upper() in self.data - def get(self, key, failobj=None): - return self.data.get(key.upper(), failobj) - def update(self, dict=None, **kwargs): - if dict: - try: - keys = dict.keys() - except AttributeError: - # List of (key, value) - for k, v in dict: - self[k] = v - else: - # got keys - # cannot use items(), since mappings - # may not have them. - for k in keys: - self[k] = dict[k] - if kwargs: - self.update(kwargs) - def copy(self): - return dict(self) - - else: # Where Env Var Names Can Be Mixed Case - class _Environ(UserDict.IterableUserDict): - def __init__(self, environ): - UserDict.UserDict.__init__(self) - self.data = environ - def __setitem__(self, key, item): - putenv(key, item) - self.data[key] = item - def update(self, dict=None, **kwargs): - if dict: - try: - keys = dict.keys() - except AttributeError: - # List of (key, value) - for k, v in dict: - self[k] = v - else: - # got keys - # cannot use items(), since mappings - # may not have them. - for k in keys: - self[k] = dict[k] - if kwargs: - self.update(kwargs) - try: - unsetenv - except NameError: - pass - else: - def __delitem__(self, key): - unsetenv(key) - del self.data[key] - def clear(self): - for key in self.data.keys(): - unsetenv(key) - del self.data[key] - def pop(self, key, *args): - unsetenv(key) - return self.data.pop(key, *args) - def copy(self): - return dict(self) - - - environ = _Environ(environ) - -def getenv(key, default=None): - """Get an environment variable, return None if it doesn't exist. - The optional second argument can specify an alternate default.""" - return environ.get(key, default) -__all__.append("getenv") - -def _exists(name): - return name in globals() - -# Supply spawn*() (probably only for Unix) -if _exists("fork") and not _exists("spawnv") and _exists("execv"): - - P_WAIT = 0 - P_NOWAIT = P_NOWAITO = 1 - - # XXX Should we support P_DETACH? I suppose it could fork()**2 - # and close the std I/O streams. Also, P_OVERLAY is the same - # as execv*()? - - def _spawnvef(mode, file, args, env, func): - # Internal helper; func is the exec*() function to use - pid = fork() - if not pid: - # Child - try: - if env is None: - func(file, args) - else: - func(file, args, env) - except: - _exit(127) - else: - # Parent - if mode == P_NOWAIT: - return pid # Caller is responsible for waiting! - while 1: - wpid, sts = waitpid(pid, 0) - if WIFSTOPPED(sts): - continue - elif WIFSIGNALED(sts): - return -WTERMSIG(sts) - elif WIFEXITED(sts): - return WEXITSTATUS(sts) - else: - raise error, "Not stopped, signaled or exited???" - - def spawnv(mode, file, args): - """spawnv(mode, file, args) -> integer - -Execute file with arguments from args in a subprocess. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - return _spawnvef(mode, file, args, None, execv) - - def spawnve(mode, file, args, env): - """spawnve(mode, file, args, env) -> integer - -Execute file with arguments from args in a subprocess with the -specified environment. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - return _spawnvef(mode, file, args, env, execve) - - # Note: spawnvp[e] is't currently supported on Windows - - def spawnvp(mode, file, args): - """spawnvp(mode, file, args) -> integer - -Execute file (which is looked for along $PATH) with arguments from -args in a subprocess. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - return _spawnvef(mode, file, args, None, execvp) - - def spawnvpe(mode, file, args, env): - """spawnvpe(mode, file, args, env) -> integer - -Execute file (which is looked for along $PATH) with arguments from -args in a subprocess with the supplied environment. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - return _spawnvef(mode, file, args, env, execvpe) - -if _exists("spawnv"): - # These aren't supplied by the basic Windows code - # but can be easily implemented in Python - - def spawnl(mode, file, *args): - """spawnl(mode, file, *args) -> integer - -Execute file with arguments from args in a subprocess. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - return spawnv(mode, file, args) - - def spawnle(mode, file, *args): - """spawnle(mode, file, *args, env) -> integer - -Execute file with arguments from args in a subprocess with the -supplied environment. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - env = args[-1] - return spawnve(mode, file, args[:-1], env) - - - __all__.extend(["spawnv", "spawnve", "spawnl", "spawnle",]) - - -if _exists("spawnvp"): - # At the moment, Windows doesn't implement spawnvp[e], - # so it won't have spawnlp[e] either. - def spawnlp(mode, file, *args): - """spawnlp(mode, file, *args) -> integer - -Execute file (which is looked for along $PATH) with arguments from -args in a subprocess with the supplied environment. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - return spawnvp(mode, file, args) - - def spawnlpe(mode, file, *args): - """spawnlpe(mode, file, *args, env) -> integer - -Execute file (which is looked for along $PATH) with arguments from -args in a subprocess with the supplied environment. -If mode == P_NOWAIT return the pid of the process. -If mode == P_WAIT return the process's exit code if it exits normally; -otherwise return -SIG, where SIG is the signal that killed it. """ - env = args[-1] - return spawnvpe(mode, file, args[:-1], env) - - - __all__.extend(["spawnvp", "spawnvpe", "spawnlp", "spawnlpe",]) - - -# Supply popen2 etc. (for Unix) -if _exists("fork"): - if not _exists("popen2"): - def popen2(cmd, mode="t", bufsize=-1): - """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' - may be a sequence, in which case arguments will be passed directly to - the program without shell intervention (as with os.spawnv()). If 'cmd' - is a string it will be passed to the shell (as with os.system()). If - 'bufsize' is specified, it sets the buffer size for the I/O pipes. The - file objects (child_stdin, child_stdout) are returned.""" - import warnings - msg = "os.popen2 is deprecated. Use the subprocess module." - warnings.warn(msg, DeprecationWarning, stacklevel=2) - - import subprocess - PIPE = subprocess.PIPE - p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring), - bufsize=bufsize, stdin=PIPE, stdout=PIPE, - close_fds=True) - return p.stdin, p.stdout - __all__.append("popen2") - - if not _exists("popen3"): - def popen3(cmd, mode="t", bufsize=-1): - """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' - may be a sequence, in which case arguments will be passed directly to - the program without shell intervention (as with os.spawnv()). If 'cmd' - is a string it will be passed to the shell (as with os.system()). If - 'bufsize' is specified, it sets the buffer size for the I/O pipes. The - file objects (child_stdin, child_stdout, child_stderr) are returned.""" - import warnings - msg = "os.popen3 is deprecated. Use the subprocess module." - warnings.warn(msg, DeprecationWarning, stacklevel=2) - - import subprocess - PIPE = subprocess.PIPE - p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring), - bufsize=bufsize, stdin=PIPE, stdout=PIPE, - stderr=PIPE, close_fds=True) - return p.stdin, p.stdout, p.stderr - __all__.append("popen3") - - if not _exists("popen4"): - def popen4(cmd, mode="t", bufsize=-1): - """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' - may be a sequence, in which case arguments will be passed directly to - the program without shell intervention (as with os.spawnv()). If 'cmd' - is a string it will be passed to the shell (as with os.system()). If - 'bufsize' is specified, it sets the buffer size for the I/O pipes. The - file objects (child_stdin, child_stdout_stderr) are returned.""" - import warnings - msg = "os.popen4 is deprecated. Use the subprocess module." - warnings.warn(msg, DeprecationWarning, stacklevel=2) - - import subprocess - PIPE = subprocess.PIPE - p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring), - bufsize=bufsize, stdin=PIPE, stdout=PIPE, - stderr=subprocess.STDOUT, close_fds=True) - return p.stdin, p.stdout - __all__.append("popen4") - -import copy_reg as _copy_reg - -def _make_stat_result(tup, dict): - return stat_result(tup, dict) - -def _pickle_stat_result(sr): - (type, args) = sr.__reduce__() - return (_make_stat_result, args) - -try: - _copy_reg.pickle(stat_result, _pickle_stat_result, _make_stat_result) -except NameError: # stat_result may not exist - pass - -def _make_statvfs_result(tup, dict): - return statvfs_result(tup, dict) - -def _pickle_statvfs_result(sr): - (type, args) = sr.__reduce__() - return (_make_statvfs_result, args) - -try: - _copy_reg.pickle(statvfs_result, _pickle_statvfs_result, - _make_statvfs_result) -except NameError: # statvfs_result may not exist - pass - -if not _exists("urandom"): - def urandom(n): - """urandom(n) -> str - - Return a string of n random bytes suitable for cryptographic use. - - """ - try: - _urandomfd = open("/dev/urandom", O_RDONLY) - except (OSError, IOError): - raise NotImplementedError("/dev/urandom (or equivalent) not found") - try: - bs = b"" - while n > len(bs): - bs += read(_urandomfd, n - len(bs)) - finally: - close(_urandomfd) - return bs diff --git a/pythonjs/lib/python2.7/posixpath.py b/pythonjs/lib/python2.7/posixpath.py deleted file mode 100644 index aae38d5..0000000 --- a/pythonjs/lib/python2.7/posixpath.py +++ /dev/null @@ -1,415 +0,0 @@ -"""Common operations on Posix pathnames. - -Instead of importing this module directly, import os and refer to -this module as os.path. The "os.path" name is an alias for this -module on Posix systems; on other systems (e.g. Mac, Windows), -os.path provides the same operations in a manner specific to that -platform, and is an alias to another module (e.g. macpath, ntpath). - -Some of this can actually be useful on non-Posix systems too, e.g. -for manipulation of the pathname component of URLs. -""" - -import os -import sys -import stat -import genericpath -import warnings -from genericpath import * - -__all__ = ["normcase","isabs","join","splitdrive","split","splitext", - "basename","dirname","commonprefix","getsize","getmtime", - "getatime","getctime","islink","exists","lexists","isdir","isfile", - "ismount","walk","expanduser","expandvars","normpath","abspath", - "samefile","sameopenfile","samestat", - "curdir","pardir","sep","pathsep","defpath","altsep","extsep", - "devnull","realpath","supports_unicode_filenames","relpath"] - -# strings representing various path-related bits and pieces -curdir = '.' -pardir = '..' -extsep = '.' -sep = '/' -pathsep = ':' -defpath = ':/bin:/usr/bin' -altsep = None -devnull = '/dev/null' - -# Normalize the case of a pathname. Trivial in Posix, string.lower on Mac. -# On MS-DOS this may also turn slashes into backslashes; however, other -# normalizations (such as optimizing '../' away) are not allowed -# (another function should be defined to do that). - -def normcase(s): - """Normalize case of pathname. Has no effect under Posix""" - return s - - -# Return whether a path is absolute. -# Trivial in Posix, harder on the Mac or MS-DOS. - -def isabs(s): - """Test whether a path is absolute""" - return s.startswith('/') - - -# Join pathnames. -# Ignore the previous parts if a part is absolute. -# Insert a '/' unless the first part is empty or already ends in '/'. - -def join(a, *p): - """Join two or more pathname components, inserting '/' as needed. - If any component is an absolute path, all previous path components - will be discarded.""" - path = a - for b in p: - if b.startswith('/'): - path = b - elif path == '' or path.endswith('/'): - path += b - else: - path += '/' + b - return path - - -# Split a path in head (everything up to the last '/') and tail (the -# rest). If the path ends in '/', tail will be empty. If there is no -# '/' in the path, head will be empty. -# Trailing '/'es are stripped from head unless it is the root. - -def split(p): - """Split a pathname. Returns tuple "(head, tail)" where "tail" is - everything after the final slash. Either part may be empty.""" - i = p.rfind('/') + 1 - head, tail = p[:i], p[i:] - if head and head != '/'*len(head): - head = head.rstrip('/') - return head, tail - - -# Split a path in root and extension. -# The extension is everything starting at the last dot in the last -# pathname component; the root is everything before that. -# It is always true that root + ext == p. - -def splitext(p): - return genericpath._splitext(p, sep, altsep, extsep) -splitext.__doc__ = genericpath._splitext.__doc__ - -# Split a pathname into a drive specification and the rest of the -# path. Useful on DOS/Windows/NT; on Unix, the drive is always empty. - -def splitdrive(p): - """Split a pathname into drive and path. On Posix, drive is always - empty.""" - return '', p - - -# Return the tail (basename) part of a path, same as split(path)[1]. - -def basename(p): - """Returns the final component of a pathname""" - i = p.rfind('/') + 1 - return p[i:] - - -# Return the head (dirname) part of a path, same as split(path)[0]. - -def dirname(p): - """Returns the directory component of a pathname""" - i = p.rfind('/') + 1 - head = p[:i] - if head and head != '/'*len(head): - head = head.rstrip('/') - return head - - -# Is a path a symbolic link? -# This will always return false on systems where os.lstat doesn't exist. - -def islink(path): - """Test whether a path is a symbolic link""" - try: - st = os.lstat(path) - except (os.error, AttributeError): - return False - return stat.S_ISLNK(st.st_mode) - -# Being true for dangling symbolic links is also useful. - -def lexists(path): - """Test whether a path exists. Returns True for broken symbolic links""" - try: - os.lstat(path) - except os.error: - return False - return True - - -# Are two filenames really pointing to the same file? - -def samefile(f1, f2): - """Test whether two pathnames reference the same actual file""" - s1 = os.stat(f1) - s2 = os.stat(f2) - return samestat(s1, s2) - - -# Are two open files really referencing the same file? -# (Not necessarily the same file descriptor!) - -def sameopenfile(fp1, fp2): - """Test whether two open file objects reference the same file""" - s1 = os.fstat(fp1) - s2 = os.fstat(fp2) - return samestat(s1, s2) - - -# Are two stat buffers (obtained from stat, fstat or lstat) -# describing the same file? - -def samestat(s1, s2): - """Test whether two stat buffers reference the same file""" - return s1.st_ino == s2.st_ino and \ - s1.st_dev == s2.st_dev - - -# Is a path a mount point? -# (Does this work for all UNIXes? Is it even guaranteed to work by Posix?) - -def ismount(path): - """Test whether a path is a mount point""" - if islink(path): - # A symlink can never be a mount point - return False - try: - s1 = os.lstat(path) - s2 = os.lstat(join(path, '..')) - except os.error: - return False # It doesn't exist -- so not a mount point :-) - dev1 = s1.st_dev - dev2 = s2.st_dev - if dev1 != dev2: - return True # path/.. on a different device as path - ino1 = s1.st_ino - ino2 = s2.st_ino - if ino1 == ino2: - return True # path/.. is the same i-node as path - return False - - -# Directory tree walk. -# For each directory under top (including top itself, but excluding -# '.' and '..'), func(arg, dirname, filenames) is called, where -# dirname is the name of the directory and filenames is the list -# of files (and subdirectories etc.) in the directory. -# The func may modify the filenames list, to implement a filter, -# or to impose a different order of visiting. - -def walk(top, func, arg): - """Directory tree walk with callback function. - - For each directory in the directory tree rooted at top (including top - itself, but excluding '.' and '..'), call func(arg, dirname, fnames). - dirname is the name of the directory, and fnames a list of the names of - the files and subdirectories in dirname (excluding '.' and '..'). func - may modify the fnames list in-place (e.g. via del or slice assignment), - and walk will only recurse into the subdirectories whose names remain in - fnames; this can be used to implement a filter, or to impose a specific - order of visiting. No semantics are defined for, or required of, arg, - beyond that arg is always passed to func. It can be used, e.g., to pass - a filename pattern, or a mutable object designed to accumulate - statistics. Passing None for arg is common.""" - warnings.warnpy3k("In 3.x, os.path.walk is removed in favor of os.walk.", - stacklevel=2) - try: - names = os.listdir(top) - except os.error: - return - func(arg, top, names) - for name in names: - name = join(top, name) - try: - st = os.lstat(name) - except os.error: - continue - if stat.S_ISDIR(st.st_mode): - walk(name, func, arg) - - -# Expand paths beginning with '~' or '~user'. -# '~' means $HOME; '~user' means that user's home directory. -# If the path doesn't begin with '~', or if the user or $HOME is unknown, -# the path is returned unchanged (leaving error reporting to whatever -# function is called with the expanded path as argument). -# See also module 'glob' for expansion of *, ? and [...] in pathnames. -# (A function should also be defined to do full *sh-style environment -# variable expansion.) - -def expanduser(path): - """Expand ~ and ~user constructions. If user or $HOME is unknown, - do nothing.""" - if not path.startswith('~'): - return path - i = path.find('/', 1) - if i < 0: - i = len(path) - if i == 1: - if 'HOME' not in os.environ: - import pwd - userhome = pwd.getpwuid(os.getuid()).pw_dir - else: - userhome = os.environ['HOME'] - else: - import pwd - try: - pwent = pwd.getpwnam(path[1:i]) - except KeyError: - return path - userhome = pwent.pw_dir - userhome = userhome.rstrip('/') or userhome - return userhome + path[i:] - - -# Expand paths containing shell variable substitutions. -# This expands the forms $variable and ${variable} only. -# Non-existent variables are left unchanged. - -_varprog = None - -def expandvars(path): - """Expand shell variables of form $var and ${var}. Unknown variables - are left unchanged.""" - global _varprog - if '$' not in path: - return path - if not _varprog: - import re - _varprog = re.compile(r'\$(\w+|\{[^}]*\})') - i = 0 - while True: - m = _varprog.search(path, i) - if not m: - break - i, j = m.span(0) - name = m.group(1) - if name.startswith('{') and name.endswith('}'): - name = name[1:-1] - if name in os.environ: - tail = path[j:] - path = path[:i] + os.environ[name] - i = len(path) - path += tail - else: - i = j - return path - - -# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B. -# It should be understood that this may change the meaning of the path -# if it contains symbolic links! - -def normpath(path): - """Normalize path, eliminating double slashes, etc.""" - # Preserve unicode (if path is unicode) - slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.') - if path == '': - return dot - initial_slashes = path.startswith('/') - # POSIX allows one or two initial slashes, but treats three or more - # as single slash. - if (initial_slashes and - path.startswith('//') and not path.startswith('///')): - initial_slashes = 2 - comps = path.split('/') - new_comps = [] - for comp in comps: - if comp in ('', '.'): - continue - if (comp != '..' or (not initial_slashes and not new_comps) or - (new_comps and new_comps[-1] == '..')): - new_comps.append(comp) - elif new_comps: - new_comps.pop() - comps = new_comps - path = slash.join(comps) - if initial_slashes: - path = slash*initial_slashes + path - return path or dot - - -def abspath(path): - """Return an absolute path.""" - if not isabs(path): - if isinstance(path, unicode): - cwd = os.getcwdu() - else: - cwd = os.getcwd() - path = join(cwd, path) - return normpath(path) - - -# Return a canonical path (i.e. the absolute location of a file on the -# filesystem). - -def realpath(filename): - """Return the canonical path of the specified filename, eliminating any -symbolic links encountered in the path.""" - if isabs(filename): - bits = ['/'] + filename.split('/')[1:] - else: - bits = [''] + filename.split('/') - - for i in range(2, len(bits)+1): - component = join(*bits[0:i]) - # Resolve symbolic links. - if islink(component): - resolved = _resolve_link(component) - if resolved is None: - # Infinite loop -- return original component + rest of the path - return abspath(join(*([component] + bits[i:]))) - else: - newpath = join(*([resolved] + bits[i:])) - return realpath(newpath) - - return abspath(filename) - - -def _resolve_link(path): - """Internal helper function. Takes a path and follows symlinks - until we either arrive at something that isn't a symlink, or - encounter a path we've seen before (meaning that there's a loop). - """ - paths_seen = set() - while islink(path): - if path in paths_seen: - # Already seen this path, so we must have a symlink loop - return None - paths_seen.add(path) - # Resolve where the link points to - resolved = os.readlink(path) - if not isabs(resolved): - dir = dirname(path) - path = normpath(join(dir, resolved)) - else: - path = normpath(resolved) - return path - -supports_unicode_filenames = (sys.platform == 'darwin') - -def relpath(path, start=curdir): - """Return a relative version of a path""" - - if not path: - raise ValueError("no path specified") - - start_list = [x for x in abspath(start).split(sep) if x] - path_list = [x for x in abspath(path).split(sep) if x] - - # Work out how much of the filepath is shared by start and path. - i = len(commonprefix([start_list, path_list])) - - rel_list = [pardir] * (len(start_list)-i) + path_list[i:] - if not rel_list: - return curdir - return join(*rel_list) diff --git a/pythonjs/lib/python2.7/stat.py b/pythonjs/lib/python2.7/stat.py deleted file mode 100644 index 4a9d30c..0000000 --- a/pythonjs/lib/python2.7/stat.py +++ /dev/null @@ -1,94 +0,0 @@ -"""Constants/functions for interpreting results of os.stat() and os.lstat(). - -Suggested usage: from stat import * -""" - -# Indices for stat struct members in the tuple returned by os.stat() - -ST_MODE = 0 -ST_INO = 1 -ST_DEV = 2 -ST_NLINK = 3 -ST_UID = 4 -ST_GID = 5 -ST_SIZE = 6 -ST_ATIME = 7 -ST_MTIME = 8 -ST_CTIME = 9 - -# Extract bits from the mode - -def S_IMODE(mode): - return mode & 07777 - -def S_IFMT(mode): - return mode & 0170000 - -# Constants used as S_IFMT() for various file types -# (not all are implemented on all systems) - -S_IFDIR = 0040000 -S_IFCHR = 0020000 -S_IFBLK = 0060000 -S_IFREG = 0100000 -S_IFIFO = 0010000 -S_IFLNK = 0120000 -S_IFSOCK = 0140000 - -# Functions to test for each file type - -def S_ISDIR(mode): - return S_IFMT(mode) == S_IFDIR - -def S_ISCHR(mode): - return S_IFMT(mode) == S_IFCHR - -def S_ISBLK(mode): - return S_IFMT(mode) == S_IFBLK - -def S_ISREG(mode): - return S_IFMT(mode) == S_IFREG - -def S_ISFIFO(mode): - return S_IFMT(mode) == S_IFIFO - -def S_ISLNK(mode): - return S_IFMT(mode) == S_IFLNK - -def S_ISSOCK(mode): - return S_IFMT(mode) == S_IFSOCK - -# Names for permission bits - -S_ISUID = 04000 -S_ISGID = 02000 -S_ENFMT = S_ISGID -S_ISVTX = 01000 -S_IREAD = 00400 -S_IWRITE = 00200 -S_IEXEC = 00100 -S_IRWXU = 00700 -S_IRUSR = 00400 -S_IWUSR = 00200 -S_IXUSR = 00100 -S_IRWXG = 00070 -S_IRGRP = 00040 -S_IWGRP = 00020 -S_IXGRP = 00010 -S_IRWXO = 00007 -S_IROTH = 00004 -S_IWOTH = 00002 -S_IXOTH = 00001 - -# Names for file flags - -UF_NODUMP = 0x00000001 -UF_IMMUTABLE = 0x00000002 -UF_APPEND = 0x00000004 -UF_OPAQUE = 0x00000008 -UF_NOUNLINK = 0x00000010 -SF_ARCHIVED = 0x00010000 -SF_IMMUTABLE = 0x00020000 -SF_APPEND = 0x00040000 -SF_NOUNLINK = 0x00100000 -SF_SNAPSHOT = 0x00200000 diff --git a/pythonjs/lib/python2.7/types.py b/pythonjs/lib/python2.7/types.py deleted file mode 100644 index ff90e04..0000000 --- a/pythonjs/lib/python2.7/types.py +++ /dev/null @@ -1,84 +0,0 @@ -"""Define names for all type symbols known in the standard interpreter. - -Types that are part of optional modules (e.g. array) are not listed. -""" -import sys - -# Iterators in Python aren't a matter of type but of protocol. A large -# and changing number of builtin types implement *some* flavor of -# iterator. Don't check the type! Use hasattr to check for both -# "__iter__" and "next" attributes instead. - -NoneType = type(None) -TypeType = type -ObjectType = object - -IntType = int -LongType = long -FloatType = float -BooleanType = bool -try: - ComplexType = complex -except NameError: - pass - -StringType = str - -# StringTypes is already outdated. Instead of writing "type(x) in -# types.StringTypes", you should use "isinstance(x, basestring)". But -# we keep around for compatibility with Python 2.2. -try: - UnicodeType = unicode - StringTypes = (StringType, UnicodeType) -except NameError: - StringTypes = (StringType,) - -BufferType = buffer - -TupleType = tuple -ListType = list -DictType = DictionaryType = dict - -def _f(): pass -FunctionType = type(_f) -LambdaType = type(lambda: None) # Same as FunctionType -CodeType = type(_f.func_code) - -def _g(): - yield 1 -GeneratorType = type(_g()) - -class _C: - def _m(self): pass -ClassType = type(_C) -UnboundMethodType = type(_C._m) # Same as MethodType -_x = _C() -InstanceType = type(_x) -MethodType = type(_x._m) - -BuiltinFunctionType = type(len) -BuiltinMethodType = type([].append) # Same as BuiltinFunctionType - -ModuleType = type(sys) -FileType = file -XRangeType = xrange - -try: - raise TypeError -except TypeError: - tb = sys.exc_info()[2] - TracebackType = type(tb) - FrameType = type(tb.tb_frame) - del tb - -SliceType = slice -EllipsisType = type(Ellipsis) - -DictProxyType = type(TypeType.__dict__) -NotImplementedType = type(NotImplemented) - -# For Jython, the following two types are identical -GetSetDescriptorType = type(FunctionType.func_code) -MemberDescriptorType = type(FunctionType.func_globals) - -del sys, _f, _g, _C, _x # Not for export diff --git a/pythonjs/lib/python2.7/warnings.py b/pythonjs/lib/python2.7/warnings.py deleted file mode 100644 index 08b70af..0000000 --- a/pythonjs/lib/python2.7/warnings.py +++ /dev/null @@ -1,400 +0,0 @@ -"""Python part of the warnings subsystem.""" - -# Note: function level imports should *not* be used -# in this module as it may cause import lock deadlock. -# See bug 683658. -import linecache -import sys -import types - -__all__ = ["warn", "showwarning", "formatwarning", "filterwarnings", - "resetwarnings", "catch_warnings"] - - -def warnpy3k(message, category=None, stacklevel=1): - """Issue a deprecation warning for Python 3.x related changes. - - Warnings are omitted unless Python is started with the -3 option. - """ - if sys.py3kwarning: - if category is None: - category = DeprecationWarning - warn(message, category, stacklevel+1) - -def _show_warning(message, category, filename, lineno, file=None, line=None): - """Hook to write a warning to a file; replace if you like.""" - if file is None: - file = sys.stderr - try: - file.write(formatwarning(message, category, filename, lineno, line)) - except IOError: - pass # the file (probably stderr) is invalid - this warning gets lost. -# Keep a working version around in case the deprecation of the old API is -# triggered. -showwarning = _show_warning - -def formatwarning(message, category, filename, lineno, line=None): - """Function to format a warning the standard way.""" - s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message) - line = linecache.getline(filename, lineno) if line is None else line - if line: - line = line.strip() - s += " %s\n" % line - return s - -def filterwarnings(action, message="", category=Warning, module="", lineno=0, - append=0): - """Insert an entry into the list of warnings filters (at the front). - - 'action' -- one of "error", "ignore", "always", "default", "module", - or "once" - 'message' -- a regex that the warning message must match - 'category' -- a class that the warning must be a subclass of - 'module' -- a regex that the module name must match - 'lineno' -- an integer line number, 0 matches all warnings - 'append' -- if true, append to the list of filters - """ - import re - assert action in ("error", "ignore", "always", "default", "module", - "once"), "invalid action: %r" % (action,) - assert isinstance(message, basestring), "message must be a string" - assert isinstance(category, (type, types.ClassType)), \ - "category must be a class" - assert issubclass(category, Warning), "category must be a Warning subclass" - assert isinstance(module, basestring), "module must be a string" - assert isinstance(lineno, int) and lineno >= 0, \ - "lineno must be an int >= 0" - item = (action, re.compile(message, re.I), category, - re.compile(module), lineno) - if append: - filters.append(item) - else: - filters.insert(0, item) - -def simplefilter(action, category=Warning, lineno=0, append=0): - """Insert a simple entry into the list of warnings filters (at the front). - - A simple filter matches all modules and messages. - 'action' -- one of "error", "ignore", "always", "default", "module", - or "once" - 'category' -- a class that the warning must be a subclass of - 'lineno' -- an integer line number, 0 matches all warnings - 'append' -- if true, append to the list of filters - """ - assert action in ("error", "ignore", "always", "default", "module", - "once"), "invalid action: %r" % (action,) - assert isinstance(lineno, int) and lineno >= 0, \ - "lineno must be an int >= 0" - item = (action, None, category, None, lineno) - if append: - filters.append(item) - else: - filters.insert(0, item) - -def resetwarnings(): - """Clear the list of warning filters, so that no filters are active.""" - filters[:] = [] - -class _OptionError(Exception): - """Exception used by option processing helpers.""" - pass - -# Helper to process -W options passed via sys.warnoptions -def _processoptions(args): - for arg in args: - try: - _setoption(arg) - except _OptionError, msg: - print >>sys.stderr, "Invalid -W option ignored:", msg - -# Helper for _processoptions() -def _setoption(arg): - import re - parts = arg.split(':') - if len(parts) > 5: - raise _OptionError("too many fields (max 5): %r" % (arg,)) - while len(parts) < 5: - parts.append('') - action, message, category, module, lineno = [s.strip() - for s in parts] - action = _getaction(action) - message = re.escape(message) - category = _getcategory(category) - module = re.escape(module) - if module: - module = module + '$' - if lineno: - try: - lineno = int(lineno) - if lineno < 0: - raise ValueError - except (ValueError, OverflowError): - raise _OptionError("invalid lineno %r" % (lineno,)) - else: - lineno = 0 - filterwarnings(action, message, category, module, lineno) - -# Helper for _setoption() -def _getaction(action): - if not action: - return "default" - if action == "all": return "always" # Alias - for a in ('default', 'always', 'ignore', 'module', 'once', 'error'): - if a.startswith(action): - return a - raise _OptionError("invalid action: %r" % (action,)) - -# Helper for _setoption() -def _getcategory(category): - import re - if not category: - return Warning - if re.match("^[a-zA-Z0-9_]+$", category): - try: - cat = eval(category) - except NameError: - raise _OptionError("unknown warning category: %r" % (category,)) - else: - i = category.rfind(".") - module = category[:i] - klass = category[i+1:] - try: - m = __import__(module, None, None, [klass]) - except ImportError: - raise _OptionError("invalid module name: %r" % (module,)) - try: - cat = getattr(m, klass) - except AttributeError: - raise _OptionError("unknown warning category: %r" % (category,)) - if not issubclass(cat, Warning): - raise _OptionError("invalid warning category: %r" % (category,)) - return cat - - -# Code typically replaced by _warnings -def warn(message, category=None, stacklevel=1): - """Issue a warning, or maybe ignore it or raise an exception.""" - # Check if message is already a Warning object - if isinstance(message, Warning): - category = message.__class__ - # Check category argument - if category is None: - category = UserWarning - assert issubclass(category, Warning) - # Get context information - try: - caller = sys._getframe(stacklevel) - except ValueError: - globals = sys.__dict__ - lineno = 1 - else: - globals = caller.f_globals - lineno = caller.f_lineno - if '__name__' in globals: - module = globals['__name__'] - else: - module = "" - filename = globals.get('__file__') - if filename: - fnl = filename.lower() - if fnl.endswith((".pyc", ".pyo")): - filename = filename[:-1] - else: - if module == "__main__": - try: - filename = sys.argv[0] - except AttributeError: - # embedded interpreters don't have sys.argv, see bug #839151 - filename = '__main__' - if not filename: - filename = module - registry = globals.setdefault("__warningregistry__", {}) - warn_explicit(message, category, filename, lineno, module, registry, - globals) - -def warn_explicit(message, category, filename, lineno, - module=None, registry=None, module_globals=None): - lineno = int(lineno) - if module is None: - module = filename or "" - if module[-3:].lower() == ".py": - module = module[:-3] # XXX What about leading pathname? - if registry is None: - registry = {} - if isinstance(message, Warning): - text = str(message) - category = message.__class__ - else: - text = message - message = category(message) - key = (text, category, lineno) - # Quick test for common case - if registry.get(key): - return - # Search the filters - for item in filters: - action, msg, cat, mod, ln = item - if ((msg is None or msg.match(text)) and - issubclass(category, cat) and - (mod is None or mod.match(module)) and - (ln == 0 or lineno == ln)): - break - else: - action = defaultaction - # Early exit actions - if action == "ignore": - registry[key] = 1 - return - - # Prime the linecache for formatting, in case the - # "file" is actually in a zipfile or something. - linecache.getlines(filename, module_globals) - - if action == "error": - raise message - # Other actions - if action == "once": - registry[key] = 1 - oncekey = (text, category) - if onceregistry.get(oncekey): - return - onceregistry[oncekey] = 1 - elif action == "always": - pass - elif action == "module": - registry[key] = 1 - altkey = (text, category, 0) - if registry.get(altkey): - return - registry[altkey] = 1 - elif action == "default": - registry[key] = 1 - else: - # Unrecognized actions are errors - raise RuntimeError( - "Unrecognized action (%r) in warnings.filters:\n %s" % - (action, item)) - # Print message and context - showwarning(message, category, filename, lineno) - - -class WarningMessage(object): - - """Holds the result of a single showwarning() call.""" - - _WARNING_DETAILS = ("message", "category", "filename", "lineno", "file", - "line") - - def __init__(self, message, category, filename, lineno, file=None, - line=None): - local_values = locals() - for attr in self._WARNING_DETAILS: - setattr(self, attr, local_values[attr]) - self._category_name = category.__name__ if category else None - - def __str__(self): - return ("{message : %r, category : %r, filename : %r, lineno : %s, " - "line : %r}" % (self.message, self._category_name, - self.filename, self.lineno, self.line)) - - -class catch_warnings(object): - - """A context manager that copies and restores the warnings filter upon - exiting the context. - - The 'record' argument specifies whether warnings should be captured by a - custom implementation of warnings.showwarning() and be appended to a list - returned by the context manager. Otherwise None is returned by the context - manager. The objects appended to the list are arguments whose attributes - mirror the arguments to showwarning(). - - The 'module' argument is to specify an alternative module to the module - named 'warnings' and imported under that name. This argument is only useful - when testing the warnings module itself. - - """ - - def __init__(self, record=False, module=None): - """Specify whether to record warnings and if an alternative module - should be used other than sys.modules['warnings']. - - For compatibility with Python 3.0, please consider all arguments to be - keyword-only. - - """ - self._record = record - self._module = sys.modules['warnings'] if module is None else module - self._entered = False - - def __repr__(self): - args = [] - if self._record: - args.append("record=True") - if self._module is not sys.modules['warnings']: - args.append("module=%r" % self._module) - name = type(self).__name__ - return "%s(%s)" % (name, ", ".join(args)) - - def __enter__(self): - if self._entered: - raise RuntimeError("Cannot enter %r twice" % self) - self._entered = True - self._filters = self._module.filters - self._module.filters = self._filters[:] - self._showwarning = self._module.showwarning - if self._record: - log = [] - def showwarning(*args, **kwargs): - log.append(WarningMessage(*args, **kwargs)) - self._module.showwarning = showwarning - return log - else: - return None - - def __exit__(self, *exc_info): - if not self._entered: - raise RuntimeError("Cannot exit %r without entering first" % self) - self._module.filters = self._filters - self._module.showwarning = self._showwarning - - -# filters contains a sequence of filter 5-tuples -# The components of the 5-tuple are: -# - an action: error, ignore, always, default, module, or once -# - a compiled regex that must match the warning message -# - a class representing the warning category -# - a compiled regex that must match the module that is being warned -# - a line number for the line being warning, or 0 to mean any line -# If either if the compiled regexs are None, match anything. -_warnings_defaults = False -try: - from _warnings import (filters, default_action, once_registry, - warn, warn_explicit) - defaultaction = default_action - onceregistry = once_registry - _warnings_defaults = True -except ImportError: - filters = [] - defaultaction = "default" - onceregistry = {} - - -# Module initialization -_processoptions(sys.warnoptions) -if not _warnings_defaults: - silence = [ImportWarning, PendingDeprecationWarning] - # Don't silence DeprecationWarning if -3 or -Q was used. - if not sys.py3kwarning and not sys.flags.division_warning: - silence.append(DeprecationWarning) - for cls in silence: - simplefilter("ignore", category=cls) - bytes_warning = sys.flags.bytes_warning - if bytes_warning > 1: - bytes_action = "error" - elif bytes_warning: - bytes_action = "default" - else: - bytes_action = "ignore" - simplefilter(bytes_action, category=BytesWarning, append=1) -del _warnings_defaults diff --git a/pythonjs/lib/python2.7/weakref.py b/pythonjs/lib/python2.7/weakref.py deleted file mode 100644 index 88c60e7..0000000 --- a/pythonjs/lib/python2.7/weakref.py +++ /dev/null @@ -1,379 +0,0 @@ -"""Weak reference support for Python. - -This module is an implementation of PEP 205: - -http://www.python.org/dev/peps/pep-0205/ -""" - -# Naming convention: Variables named "wr" are weak reference objects; -# they are called this instead of "ref" to avoid name collisions with -# the module-global ref() function imported from _weakref. - -import UserDict - -from _weakref import ( - getweakrefcount, - getweakrefs, - ref, - proxy, - CallableProxyType, - ProxyType, - ReferenceType) - -from _weakrefset import WeakSet - -from exceptions import ReferenceError - - -ProxyTypes = (ProxyType, CallableProxyType) - -__all__ = ["ref", "proxy", "getweakrefcount", "getweakrefs", - "WeakKeyDictionary", "ReferenceError", "ReferenceType", "ProxyType", - "CallableProxyType", "ProxyTypes", "WeakValueDictionary", 'WeakSet'] - - -class WeakValueDictionary(UserDict.UserDict): - """Mapping class that references values weakly. - - Entries in the dictionary will be discarded when no strong - reference to the value exists anymore - """ - # We inherit the constructor without worrying about the input - # dictionary; since it uses our .update() method, we get the right - # checks (if the other dictionary is a WeakValueDictionary, - # objects are unwrapped on the way out, and we always wrap on the - # way in). - - def __init__(self, *args, **kw): - def remove(wr, selfref=ref(self)): - self = selfref() - if self is not None: - del self.data[wr.key] - self._remove = remove - UserDict.UserDict.__init__(self, *args, **kw) - - def __getitem__(self, key): - o = self.data[key]() - if o is None: - raise KeyError, key - else: - return o - - def __contains__(self, key): - try: - o = self.data[key]() - except KeyError: - return False - return o is not None - - def has_key(self, key): - try: - o = self.data[key]() - except KeyError: - return False - return o is not None - - def __repr__(self): - return "" % id(self) - - def __setitem__(self, key, value): - self.data[key] = KeyedRef(value, self._remove, key) - - def copy(self): - new = WeakValueDictionary() - for key, wr in self.data.items(): - o = wr() - if o is not None: - new[key] = o - return new - - __copy__ = copy - - def __deepcopy__(self, memo): - from copy import deepcopy - new = self.__class__() - for key, wr in self.data.items(): - o = wr() - if o is not None: - new[deepcopy(key, memo)] = o - return new - - def get(self, key, default=None): - try: - wr = self.data[key] - except KeyError: - return default - else: - o = wr() - if o is None: - # This should only happen - return default - else: - return o - - def items(self): - L = [] - for key, wr in self.data.items(): - o = wr() - if o is not None: - L.append((key, o)) - return L - - def iteritems(self): - for wr in self.data.itervalues(): - value = wr() - if value is not None: - yield wr.key, value - - def iterkeys(self): - return self.data.iterkeys() - - def __iter__(self): - return self.data.iterkeys() - - def itervaluerefs(self): - """Return an iterator that yields the weak references to the values. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the values around longer than needed. - - """ - return self.data.itervalues() - - def itervalues(self): - for wr in self.data.itervalues(): - obj = wr() - if obj is not None: - yield obj - - def popitem(self): - while 1: - key, wr = self.data.popitem() - o = wr() - if o is not None: - return key, o - - def pop(self, key, *args): - try: - o = self.data.pop(key)() - except KeyError: - if args: - return args[0] - raise - if o is None: - raise KeyError, key - else: - return o - - def setdefault(self, key, default=None): - try: - wr = self.data[key] - except KeyError: - self.data[key] = KeyedRef(default, self._remove, key) - return default - else: - return wr() - - def update(self, dict=None, **kwargs): - d = self.data - if dict is not None: - if not hasattr(dict, "items"): - dict = type({})(dict) - for key, o in dict.items(): - d[key] = KeyedRef(o, self._remove, key) - if len(kwargs): - self.update(kwargs) - - def valuerefs(self): - """Return a list of weak references to the values. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the values around longer than needed. - - """ - return self.data.values() - - def values(self): - L = [] - for wr in self.data.values(): - o = wr() - if o is not None: - L.append(o) - return L - - -class KeyedRef(ref): - """Specialized reference that includes a key corresponding to the value. - - This is used in the WeakValueDictionary to avoid having to create - a function object for each key stored in the mapping. A shared - callback object can use the 'key' attribute of a KeyedRef instead - of getting a reference to the key from an enclosing scope. - - """ - - __slots__ = "key", - - def __new__(type, ob, callback, key): - self = ref.__new__(type, ob, callback) - self.key = key - return self - - def __init__(self, ob, callback, key): - super(KeyedRef, self).__init__(ob, callback) - - -class WeakKeyDictionary(UserDict.UserDict): - """ Mapping class that references keys weakly. - - Entries in the dictionary will be discarded when there is no - longer a strong reference to the key. This can be used to - associate additional data with an object owned by other parts of - an application without adding attributes to those objects. This - can be especially useful with objects that override attribute - accesses. - """ - - def __init__(self, dict=None): - self.data = {} - def remove(k, selfref=ref(self)): - self = selfref() - if self is not None: - del self.data[k] - self._remove = remove - if dict is not None: self.update(dict) - - def __delitem__(self, key): - del self.data[ref(key)] - - def __getitem__(self, key): - return self.data[ref(key)] - - def __repr__(self): - return "" % id(self) - - def __setitem__(self, key, value): - self.data[ref(key, self._remove)] = value - - def copy(self): - new = WeakKeyDictionary() - for key, value in self.data.items(): - o = key() - if o is not None: - new[o] = value - return new - - __copy__ = copy - - def __deepcopy__(self, memo): - from copy import deepcopy - new = self.__class__() - for key, value in self.data.items(): - o = key() - if o is not None: - new[o] = deepcopy(value, memo) - return new - - def get(self, key, default=None): - return self.data.get(ref(key),default) - - def has_key(self, key): - try: - wr = ref(key) - except TypeError: - return 0 - return wr in self.data - - def __contains__(self, key): - try: - wr = ref(key) - except TypeError: - return 0 - return wr in self.data - - def items(self): - L = [] - for key, value in self.data.items(): - o = key() - if o is not None: - L.append((o, value)) - return L - - def iteritems(self): - for wr, value in self.data.iteritems(): - key = wr() - if key is not None: - yield key, value - - def iterkeyrefs(self): - """Return an iterator that yields the weak references to the keys. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the keys around longer than needed. - - """ - return self.data.iterkeys() - - def iterkeys(self): - for wr in self.data.iterkeys(): - obj = wr() - if obj is not None: - yield obj - - def __iter__(self): - return self.iterkeys() - - def itervalues(self): - return self.data.itervalues() - - def keyrefs(self): - """Return a list of weak references to the keys. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the keys around longer than needed. - - """ - return self.data.keys() - - def keys(self): - L = [] - for wr in self.data.keys(): - o = wr() - if o is not None: - L.append(o) - return L - - def popitem(self): - while 1: - key, value = self.data.popitem() - o = key() - if o is not None: - return o, value - - def pop(self, key, *args): - return self.data.pop(ref(key), *args) - - def setdefault(self, key, default=None): - return self.data.setdefault(ref(key, self._remove),default) - - def update(self, dict=None, **kwargs): - d = self.data - if dict is not None: - if not hasattr(dict, "items"): - dict = type({})(dict) - for key, value in dict.items(): - d[ref(key, self._remove)] = value - if len(kwargs): - self.update(kwargs) diff --git a/pythonjs/ministdlib.py b/pythonjs/ministdlib.py deleted file mode 100644 index e9a83d6..0000000 --- a/pythonjs/ministdlib.py +++ /dev/null @@ -1,58 +0,0 @@ -# Python to PythonJS Mini Standard Library -# by Brett Hartshorn - copyright 2013 -# You may destribute this file using the "New BSD" or MIT license - -REQUIRES = 1 - -LUA = { - 'time': { - ## requires socket module, install for luajit on ubuntu - `sudo-apt get install lua-socket` - ## for lua interpreter on ubuntu - `sudo apt-get install liblua5.1-socket` - REQUIRES : ['socket'], - 'time' : 'time = function() return socket.gettime() end', - 'clock' : 'clock = function() return socket.gettime() end' - }, - 'math': { - 'sin' : 'sin = function(a) return math.sin(a[1]) end', - 'cos' : 'cos = function(a) return math.cos(a[1]) end', - 'sqrt' : 'sqrt = function(a) return math.sqrt(a[1]) end', - } -} - - -DART = { - 'time': { - 'time' : 'time() { return new DateTime.now().millisecondsSinceEpoch / 1000.0; }', - 'clock' : 'clock() { return new DateTime.now().millisecondsSinceEpoch / 1000.0; }' - }, - 'math': { - 'sin' : 'var sin = math.sin', - 'cos' : 'var cos = math.cos', - 'sqrt' : 'var sqrt = math.sqrt', - }, - 'random' : { - 'random' : 'var random = __random__' - } - -} - -JS = { - 'time': { - 'time': 'function time() { return new Date().getTime() / 1000.0; }', - 'clock': 'function clock() { return new Date().getTime() / 1000.0; }' - }, - 'random': { - 'random': 'var random = Math.random' - }, - 'bisect' : { - 'bisect' : '/*bisect from fake bisect module*/' ## bisect is a builtin - }, - 'math' : { - 'sin' : 'var sin = Math.sin', - 'cos' : 'var cos = Math.cos', - 'sqrt': 'var sqrt = Math.sqrt' - }, - 'os.path' : { - 'dirname' : "function dirname(s) { return s.slice(0, s.lastIndexOf('/')+1)}; var os = {'path':{'dirname':dirname}}" - } -} \ No newline at end of file diff --git a/pythonjs/package.json b/pythonjs/package.json deleted file mode 100644 index 45aafae..0000000 --- a/pythonjs/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "author": "Brett Hartshorn ", - "name": "python-js", - "description": "python multi-translator: javascript, dart, coffee, lua, vis.js", - "version": "0.9.8", - "license": "BSD-3-Clause", - "repository": { - "type": "git", - "url": "git://github.com/PythonJS/PythonJS.git" - }, - "keywords": [ - "pythonjs", - "python", - "dart", - "lua", - "transpiler" - ], - "dependencies": { - "workerjs": "*", - "requirejs": "*", - "long" : "*" - }, - "engines": { - "node": "*" - }, - "preferGlobal":true, - - "main": "./python-js", - "bin" : {"python-js" : "./cli.js"}, - - "files": [ - "lib", - "fakelibs", - "empythoned.js", - "python-js", - "pythonjs.js", - "pythonjs.py", - "python_to_pythonjs.py", - "ministdlib.py", - "pythonjs_to_dart.py", - "pythonjs_to_coffee.py", - "pythonjs_to_lua.py", - "python_to_visjs.py", - "code_writer.py", - "inline_function.py", - "ast_utils.py", - "typedpython.py", - "cli.js", - "runtime" - ] -} diff --git a/pythonjs/python-js b/pythonjs/python-js deleted file mode 100644 index f3a2f81..0000000 --- a/pythonjs/python-js +++ /dev/null @@ -1,195 +0,0 @@ -// python-js module for nodejs // - -var fs = require('fs'); -var path = require('path'); -var requirejs = require('requirejs'); -var pyjs = require('./pythonjs.js'); -var empythoned = require('./empythoned.js'); - -var Python = empythoned.Python; -var buffer = []; -var _on_stderr = function(chr) { - if (chr == null || chr == 0 || chr == 10) { - console.log( buffer.join('') ); - buffer.length = 0; - } else { - buffer.push( String.fromCharCode(chr) ); - } -} - - - -// https://github.com/kripken/emscripten/wiki/Filesystem-API -empythoned.FS.createLazyFile(".", "python_to_pythonjs.py", "./python_to_pythonjs.py", - true,false -); -empythoned.FS.createLazyFile(".", "pythonjs.py", "./pythonjs.py", - true,false -); -empythoned.FS.createLazyFile(".", "ministdlib.py", "./ministdlib.py", - true,false -); - -empythoned.FS.createLazyFile(".", "typedpython.py", "./typedpython.py", - true,false -); - -empythoned.FS.createLazyFile(".", "pythonjs_to_dart.py", "./pythonjs_to_dart.py", - true,false -); - -empythoned.FS.createLazyFile(".", "pythonjs_to_coffee.py", "./pythonjs_to_coffee.py", - true,false -); - -empythoned.FS.createLazyFile(".", "pythonjs_to_lua.py", "./pythonjs_to_lua.py", - true,false -); - -empythoned.FS.createLazyFile(".", "python_to_visjs.py", "./python_to_visjs.py", - true,false -); - -empythoned.FS.createLazyFile(".", "code_writer.py", "./code_writer.py", - true,false -); - -empythoned.FS.createLazyFile(".", "inline_function.py", "./inline_function.py", - true,false -); - -empythoned.FS.createLazyFile(".", "ast_utils.py", "./ast_utils.py", - true,false -); - -empythoned.FS.createLazyFile(".", "pythonjs.js", "./pythonjs.js", - true,false -); - -empythoned.FS.createFolder(".","fakelibs",true,true); - -empythoned.FS.createLazyFile("./fakelibs", "tornado.py", "./fakelibs/tornado.py", - true,false -); -empythoned.FS.createLazyFile("./fakelibs", "os.py", "./fakelibs/os.py", - true,false -); -empythoned.FS.createLazyFile("./fakelibs", "sys.py", "./fakelibs/sys.py", - true,false -); -empythoned.FS.createLazyFile("./fakelibs", "tempfile.py", "./fakelibs/tempfile.py", - true,false -); -empythoned.FS.createLazyFile("./fakelibs", "subprocess.py", "./fakelibs/subprocess.py", - true,false -); - - -Python.initialize( - null, // stdin - null, // stdout - _on_stderr // stderr -); - - -Python.eval('from python_to_pythonjs import main as to_pythonjs'); -Python.eval('from pythonjs import main as _to_javascript'); -//Python.eval('from pythonjs_to_dart import main as _to_dart'); -//Python.eval('from pythonjs_to_coffee import main as _to_coffee'); -//Python.eval('from pythonjs_to_lua import main as _to_lua'); -Python.eval('from python_to_visjs import main as to_visjs'); - -Python.eval('def to_javascript_module(src, runtime=True): return _to_javascript(to_pythonjs(src), requirejs=True, insert_runtime=runtime)'); -Python.eval('def to_javascript(src, runtime=False): return _to_javascript(to_pythonjs(src), requirejs=False, insert_runtime=runtime)'); -Python.eval('def to_dart(src): from pythonjs_to_dart import main as _to_dart; return _to_dart(to_pythonjs(src, dart=True))'); -Python.eval('def to_coffee(src): from pythonjs_to_coffee import main as _to_coffee; return _to_coffee(to_pythonjs(src, coffee=True))'); -Python.eval('def to_lua(src): from pythonjs_to_lua import main as _to_lua; return _to_lua(to_pythonjs(src, lua=True))'); - -function clean_code( code ) { - code = code.substring(1, code.length-1); // strip quotes - code = code.split('\\n').join('\n'); - code = code.split('\\t').join('\t'); - code = code.split("\\'").join("\'"); - code = code.split('\\"').join('\"'); - return code; -} - -// data is written to a file to avoid any problems with escaping string quotes -// note: `FS.createDataFile` is part of the old Emscripten 1.0 API - -exports.translator = { - to_javascript_module : function(data, runtime) { - empythoned.FS.createDataFile( "/sandbox", "temp", data, true, true ); - if (runtime == true || runtime === undefined) { - var code = Python.eval('to_javascript_module(open("/sandbox/temp","r").read(), runtime=True)'); - - } else { - var code = Python.eval('to_javascript_module(open("/sandbox/temp","r").read(), runtime=False)'); - } - if (code !== null && code !== undefined) { - return clean_code( code ); - } - }, - to_javascript : function(data, runtime) { - empythoned.FS.createDataFile( "/sandbox", "temp", data, true, true ); - if (runtime == true) { - var code = Python.eval('to_javascript(open("/sandbox/temp","r").read(), runtime=True)'); - } else { - var code = Python.eval('to_javascript(open("/sandbox/temp","r").read(), runtime=False)'); - } - if (code !== null && code !== undefined) { - return clean_code( code ); - } - }, - to_dart : function(data) { - empythoned.FS.createDataFile( "/sandbox", "temp", data, true, true ); - var code = Python.eval('to_dart(open("/sandbox/temp","r").read())'); - if (code !== null && code !== undefined) { - return clean_code( code ); - } - }, - to_coffee : function(data) { - empythoned.FS.createDataFile( "/sandbox", "temp", data, true, true ); - var code = Python.eval('to_coffee(open("/sandbox/temp","r").read())'); - if (code !== null && code !== undefined) { - return clean_code( code ); - } - }, - to_lua : function(data) { - empythoned.FS.createDataFile( "/sandbox", "temp", data, true, true ); - var code = Python.eval('to_lua(open("/sandbox/temp","r").read())'); - if (code !== null && code !== undefined) { - return clean_code( code ); - } - }, - to_visjs : function(data) { - empythoned.FS.createDataFile( "/sandbox", "temp", data, true, true ); - var code = Python.eval('to_visjs(open("/sandbox/temp","r").read())'); - if (code !== null && code !== undefined) { - return clean_code( code ); - } - } -} - -var runtime = {}; -var basepath = path.dirname( __filename ); - -Object.defineProperty( - runtime, - 'javascript', - { enumerable:true, get : function() {return fs.readFileSync( basepath+'/pythonjs.js', {'encoding':'utf8'} )} } -); - -Object.defineProperty( - runtime, - 'dart', - { enumerable:true, get : function() {return fs.readFileSync( basepath+'/runtime/dart_builtins.py', {'encoding':'utf8'} )} } -); - -Object.defineProperty( - runtime, - 'lua', - { enumerable:true, get : function() {return fs.readFileSync( basepath+'/runtime/lua_builtins.py', {'encoding':'utf8'} )} } -); - -exports.runtime = runtime; diff --git a/pythonjs/python_to_pythonjs.py b/pythonjs/python_to_pythonjs.py deleted file mode 100755 index f05a92c..0000000 --- a/pythonjs/python_to_pythonjs.py +++ /dev/null @@ -1,4100 +0,0 @@ -#!/usr/bin/env python -# _*_ coding: utf-8 _*_ -# Python to PythonJS Translator -# by Amirouche Boubekki and Brett Hartshorn - copyright 2013 -# License: "New BSD" - -import os, sys, copy -from types import GeneratorType - -import ast -from ast import Str -from ast import Call -from ast import Name -from ast import Tuple -from ast import Assign -from ast import keyword -from ast import Subscript -from ast import Attribute -from ast import FunctionDef -from ast import BinOp -from ast import Pass -from ast import Global -from ast import With - -from ast import parse -from ast import NodeVisitor - -import typedpython -import ministdlib -import inline_function -import code_writer -from ast_utils import * - -## TODO -def log(txt): - pass - - -POWER_OF_TWO = [ 2**i for i in range(32) ] - -writer = writer_main = code_writer.Writer() - -__webworker_writers = dict() -def get_webworker_writer( jsfile ): - if jsfile not in __webworker_writers: - __webworker_writers[ jsfile ] = code_writer.Writer() - return __webworker_writers[ jsfile ] - - - -class Typedef(object): - # http://docs.python.org/2/reference/datamodel.html#emulating-numeric-types - _opmap = dict( - __add__ = '+', - __iadd__ = '+=', - __sub__ = '-', - __isub__ = '-=', - __mul__ = '*', - __imul__ = '*=', - __div__ = '/', - __idiv__ = '/=', - __mod__ = '%', - __imod__ = '%=', - __lshift__ = '<<', - __ilshift__ = '<<=', - __rshift__ = '>>', - __irshift__ = '>>=', - __and__ = '&', - __iand__ = '&=', - __xor__ = '^', - __ixor__ = '^=', - __or__ = '|', - __ior__ = '|=', - ) - - def __init__(self, **kwargs): - for name in kwargs.keys(): ## name, methods, properties, attributes, class_attributes, parents - setattr( self, name, kwargs[name] ) - - self.operators = dict() - for name in self.methods: - if name in self._opmap: - op = self._opmap[ name ] - self.operators[ op ] = self.get_pythonjs_function_name( name ) - - def get_pythonjs_function_name(self, name): - assert name in self.methods - return '__%s_%s' %(self.name, name) ## class name - - def check_for_parent_with(self, method=None, property=None, operator=None, class_attribute=None): - - for parent_name in self.parents: - if not self.compiler.is_known_class_name( parent_name ): - continue - - typedef = self.compiler.get_typedef( class_name=parent_name ) - if method and method in typedef.methods: - return typedef - elif property and property in typedef.properties: - return typedef - elif operator and typedef.operators: - return typedef - elif class_attribute in typedef.class_attributes: - return typedef - elif typedef.parents: - res = typedef.check_for_parent_with( - method=method, - property=property, - operator=operator, - class_attribute=class_attribute - ) - if res: - return res - -class PythonToPythonJS(NodeVisitor, inline_function.Inliner): - - identifier = 0 - _func_typedefs = () - - def format_error(self, node): - lines = [] - if self._line_number > 0: - lines.append( self._source[self._line_number-1] ) - lines.append( self._source[self._line_number] ) - if self._line_number+1 < len(self._source): - lines.append( self._source[self._line_number+1] ) - - msg = 'line %s\n%s\n%s\n' %(self._line_number, '\n'.join(lines), node) - msg += 'Depth Stack:\n' - for l, n in enumerate(self._stack): - #msg += str(dir(n)) - msg += '%s%s line:%s col:%s\n' % (' '*(l+1)*2, n.__class__.__name__, n.lineno, n.col_offset) - return msg - - def __init__(self, source=None, module=None, module_path=None, dart=False, coffee=False, lua=False, go=False): - super(PythonToPythonJS, self).__init__() - self._module_path = module_path ## used for user `from xxx import *` to load .py files in the same directory. - self._with_lua = lua - self._with_coffee = coffee - self._with_dart = dart - self._with_go = go - - self._html_tail = []; script = False - if source.strip().startswith('') - script = list() - elif 'src=' in line and '~/' in line: ## external javascripts installed in users home folder - x = line.split('src="')[-1].split('"')[0] - if os.path.isfile(os.path.expanduser(x)): - o = [] - o.append( '') - if script is True: - self._html_tail.extend( o ) - else: - for y in o: - writer.write(y) - - else: - writer.write(line) - - elif line.strip() == '': - if type(script) is list and len(script): - source = '\n'.join(script) - script = True - self._html_tail.append( '') - else: - writer.write( line ) - - elif isinstance( script, list ): - script.append( line ) - - elif script is True: - self._html_tail.append( line ) - - else: - writer.write( line ) - - source = typedpython.transform_source( source ) - - self.setup_inliner( writer ) - - self._in_catch_exception = False - - self._line = None - self._line_number = 0 - self._stack = [] ## current path to the root - - self._direct_operators = set() ## optimize "+" and "*" operator - self._with_ll = False ## lowlevel - self._with_js = True - self._in_lambda = False - self._in_while_test = False - self._use_threading = False - self._use_sleep = False - self._use_array = False - self._webworker_functions = dict() - self._with_webworker = False - self._with_rpc = None - self._with_rpc_name = None - self._with_direct_keys = False - - self._with_glsl = False - self._in_gpu_main = False - self._gpu_return_types = set() ## 'array' or float32, or array of 'vec4' float32's. - - self._source = source.splitlines() - self._classes = dict() ## class name : [method names] - self._class_parents = dict() ## class name : parents - self._instance_attributes = dict() ## class name : [attribute names] - self._class_attributes = dict() - self._catch_attributes = None - self._typedef_vars = dict() - - #self._names = set() ## not used? - ## inferred class instances, TODO regtests to confirm that this never breaks ## - self._instances = dict() ## instance name : class name - - self._decorator_properties = dict() - self._decorator_class_props = dict() - self._function_return_types = dict() - self._return_type = None - - - self._module = module ## DEPRECATED - self._typedefs = dict() ## class name : typedef (deprecated - part of the old static type finder) - - self._globals = dict() - self._global_nodes = dict() - self._with_static_type = None - self._global_typed_lists = dict() ## global name : set (if len(set)==1 then we know it is a typed list) - self._global_typed_dicts = dict() - self._global_typed_tuples = dict() - self._global_functions = dict() - - self._js_classes = dict() - self._in_js_class = False - self._in_assign_target = False - self._with_runtime_exceptions = True ## this is only used in full python mode. - - self._iter_ids = 0 - self._addop_ids = 0 - - self._cache_for_body_calls = False - self._cache_while_body_calls = False - self._comprehensions = [] - self._generator_functions = set() - - self._in_loop_with_else = False - self._introspective_functions = False - - self._custom_operators = {} - self._injector = [] ## advanced meta-programming hacks - self._in_class = None - self._with_fastdef = False - self.setup_builtins() - - source = self.preprocess_custom_operators( source ) - - ## check for special imports - TODO clean this up ## - for line in source.splitlines(): - if line.strip().startswith('import tornado'): - dirname = os.path.dirname(os.path.abspath(__file__)) - header = open( os.path.join(dirname, os.path.join('fakelibs', 'tornado.py')) ).read() - source = header + '\n' + source - self._source = source.splitlines() - elif line.strip().startswith('import os'): - dirname = os.path.dirname(os.path.abspath(__file__)) - header = open( os.path.join(dirname, os.path.join('fakelibs', 'os.py')) ).read() - source = header + '\n' + source - self._source = source.splitlines() - elif line.strip().startswith('import tempfile'): - dirname = os.path.dirname(os.path.abspath(__file__)) - header = open( os.path.join(dirname, os.path.join('fakelibs', 'tempfile.py')) ).read() - source = header + '\n' + source - self._source = source.splitlines() - elif line.strip().startswith('import sys'): - dirname = os.path.dirname(os.path.abspath(__file__)) - header = open( os.path.join(dirname, os.path.join('fakelibs', 'sys.py')) ).read() - source = header + '\n' + source - self._source = source.splitlines() - elif line.strip().startswith('import subprocess'): - dirname = os.path.dirname(os.path.abspath(__file__)) - header = open( os.path.join(dirname, os.path.join('fakelibs', 'subprocess.py')) ).read() - source = header + '\n' + source - self._source = source.splitlines() - - - if '--debug--' in sys.argv: - try: - tree = ast.parse( source ) - except SyntaxError: - raise SyntaxError(source) - else: - tree = ast.parse( source ) - - self._generator_function_nodes = collect_generator_functions( tree ) - - for node in tree.body: - ## skip module level doc strings ## - if isinstance(node, ast.Expr) and isinstance(node.value, ast.Str): - pass - else: - self.visit(node) - - if self._html_tail: - for line in self._html_tail: - writer.write(line) - - def visit(self, node): - """Visit a node.""" - ## modified code of visit() method from Python 2.7 stdlib - self._stack.append(node) - method = 'visit_' + node.__class__.__name__ - visitor = getattr(self, method, self.generic_visit) - res = visitor(node) - self._stack.pop() - return res - - def has_webworkers(self): - return len(self._webworker_functions.keys()) - - def get_webworker_file_names(self): - return set(self._webworker_functions.values()) - - def preprocess_custom_operators(self, data): - ''' - custom operators must be defined before they are used - ''' - code = [] - for line in data.splitlines(): - if line.strip().startswith('@custom_operator'): - l = line.replace('"', "'") - a,b,c = l.split("'") - op = b.decode('utf-8') - self._custom_operators[ op ] = None - else: - for op in self._custom_operators: - op = op.encode('utf-8') - line = line.replace(op, '|"%s"|'%op) - - code.append( line ) - - data = '\n'.join( code ) - return data - - def setup_builtins(self): - self._classes['dict'] = set(['__getitem__', '__setitem__']) - self._classes['list'] = set() #['__getitem__', '__setitem__']) - self._classes['tuple'] = set() #['__getitem__', '__setitem__']) - self._builtin_classes = set(['dict', 'list', 'tuple']) - self._builtin_functions = { - 'ord':'%s.charCodeAt(0)', - 'chr':'String.fromCharCode(%s)', - 'abs':'Math.abs(%s)', - 'cos':'Math.cos(%s)', - 'sin':'Math.sin(%s)', - 'sqrt':'Math.sqrt(%s)' - } - self._builtin_functions_dart = { - 'ord':'%s.codeUnitAt(0)', - 'chr':'new(String.fromCharCode(%s))', - } - - def is_known_class_name(self, name): - return name in self._classes - - def get_typedef(self, instance=None, class_name=None): - assert instance or class_name - if isinstance(instance, Name) and instance.id in self._instances: - class_name = self._instances[ instance.id ] - - if class_name: - #assert class_name in self._classes - if class_name not in self._classes: - #log('ERROR: class name not in self._classes: %s'%class_name) - #log('self._classes: %s'%self._classes) - #raise RuntimeError('class name: %s - not found in self._classes - node:%s '%(class_name, instance)) - return None ## TODO hook into self._typedef_vars - - if class_name not in self._typedefs: - self._typedefs[ class_name ] = Typedef( - name = class_name, - methods = self._classes[ class_name ], - #properties = self._decorator_class_props[ class_name ], - #attributes = self._instance_attributes[ class_name ], - #class_attributes = self._class_attributes[ class_name ], - #parents = self._class_parents[ class_name ], - properties = self._decorator_class_props.get( class_name, set()), - attributes = self._instance_attributes.get( class_name, set()), - class_attributes = self._class_attributes.get( class_name, set()), - parents = self._class_parents.get( class_name, set()), - - compiler = self, - ) - return self._typedefs[ class_name ] - - - def visit_Import(self, node): - ''' - fallback to requirejs or if in webworker importScripts. - some special modules from pythons stdlib can be faked here like: - . threading - - nodejs only: - . tornado - . os - - ''' - - tornado = ['tornado', 'tornado.web', 'tornado.ioloop'] - - for alias in node.names: - if self._with_go: - writer.write('import %s' %alias.name) - elif alias.name in tornado: - pass ## pythonjs/fakelibs/tornado.py - elif alias.name == 'tempfile': - pass ## pythonjs/fakelibs/tempfile.py - elif alias.name == 'sys': - pass ## pythonjs/fakelibs/sys.py - elif alias.name == 'subprocess': - pass ## pythonjs/fakelibs/subprocess.py - elif alias.name == 'numpy': - pass - - elif alias.name == 'json' or alias.name == 'os': - pass ## part of builtins.py - elif alias.name == 'threading': - self._use_threading = True - #writer.write( 'Worker = require("/usr/local/lib/node_modules/workerjs")') - - ## note: nodewebkit includes Worker, but only from the main script context, - ## there might be a bug in requirejs or nodewebkit where Worker gets lost - ## when code is loaded into main as a module using requirejs, as a workaround - ## allow "workerjs" to be loaded as a fallback, however this appears to not work in nodewebkit. - writer.write( 'if __NODEJS__==True and typeof(Worker)=="undefined": Worker = require("workerjs")') - - elif alias.asname: - #writer.write( '''inline("var %s = requirejs('%s')")''' %(alias.asname, alias.name) ) - writer.write( '''inline("var %s = require('%s')")''' %(alias.asname, alias.name.replace('__DASH__', '-')) ) - - elif '.' in alias.name: - raise NotImplementedError('import with dot not yet supported: line %s' % node.lineno) - else: - #writer.write( '''inline("var %s = requirejs('%s')")''' %(alias.name, alias.name) ) - writer.write( '''inline("var %s = require('%s')")''' %(alias.name, alias.name) ) - - def visit_ImportFrom(self, node): - if self._with_dart: - lib = ministdlib.DART - elif self._with_lua: - lib = ministdlib.LUA - else: - lib = ministdlib.JS - - path = os.path.join( self._module_path, node.module+'.py') - - if node.module == 'time' and node.names[0].name == 'sleep': - self._use_sleep = True - elif node.module == 'array' and node.names[0].name == 'array': - self._use_array = True ## this is just a hint that calls to array call the builtin array - - elif node.module == 'bisect' and node.names[0].name == 'bisect': - ## bisect library is part of the stdlib, - ## in pythonjs it is a builtin function defined in builtins.py - pass - - elif node.module in lib: - imported = False - for n in node.names: - if n.name in lib[ node.module ]: - if not imported: - imported = True - if ministdlib.REQUIRES in lib[node.module]: - writer.write('import %s' %','.join(lib[node.module][ministdlib.REQUIRES])) - - writer.write( 'JS("%s")' %lib[node.module][n.name] ) - if n.name not in self._builtin_functions: - self._builtin_functions[ n.name ] = n.name + '()' - - elif os.path.isfile(path): - ## user import `from mymodule import *` TODO support files from other folders - ## this creates a sub-translator, because they share the same `writer` object (a global), - ## there is no need to call `writer.write` here. - ## note: the current pythonjs.configure mode here maybe different from the subcontext. - data = open(path, 'rb').read() - subtrans = PythonToPythonJS( - data, - module_path=self._module_path - ) - self._js_classes.update( subtrans._js_classes ) ## TODO - what other typedef info needs to be copied here? - - else: - msg = 'invalid import - file not found: %s/%s.py'%(self._module_path,node.module) - raise SyntaxError( self.format_error(msg) ) - - def visit_Assert(self, node): - ## hijacking "assert isinstance(a,A)" as a type system ## - if isinstance( node.test, Call ) and isinstance(node.test.func, Name) and node.test.func.id == 'isinstance': - a,b = node.test.args - if b.id in self._classes: - self._instances[ a.id ] = b.id - - def visit_Dict(self, node): - node.returns_type = 'dict' - a = [] - for i in range( len(node.keys) ): - k = self.visit( node.keys[ i ] ) - v = node.values[i] - if isinstance(v, ast.Lambda): - v.keep_as_lambda = True - v = self.visit( v ) - if self._with_dart or self._with_ll or self._with_go: - a.append( '%s:%s'%(k,v) ) - #if isinstance(node.keys[i], ast.Str): - # a.append( '%s:%s'%(k,v) ) - #else: - # a.append( '"%s":%s'%(k,v) ) - elif self._with_js: - a.append( '[%s,%s]'%(k,v) ) - else: - a.append( 'JSObject(key=%s, value=%s)'%(k,v) ) ## this allows non-string keys - - if self._with_dart or self._with_ll or self._with_go: - b = ','.join( a ) - return '{%s}' %b - elif self._with_js: - b = ','.join( a ) - return '__jsdict( [%s] )' %b - else: - b = '[%s]' %', '.join(a) - return '__get__(dict, "__call__")([], {"js_object":%s})' %b - - def visit_Tuple(self, node): - node.returns_type = 'tuple' - #a = '[%s]' % ', '.join(map(self.visit, node.elts)) - a = [] - for e in node.elts: - if isinstance(e, ast.Lambda): - e.keep_as_lambda = True - v = self.visit(e) - assert v is not None - a.append( v ) - a = '[%s]' % ', '.join(a) - - if self._with_dart: - return 'tuple(%s)' %a - else: - return a - - def visit_List(self, node): - node.returns_type = 'list' - - a = [] - for e in node.elts: - if isinstance(e, ast.Lambda): ## inlined and called lambda "(lambda x: x)(y)" - e.keep_as_lambda = True - v = self.visit(e) - assert v is not None - a.append( v ) - - a = '[%s]' % ', '.join(a) - if self._with_ll: - pass - elif self._with_lua: - a = '__get__(list, "__call__")({}, {pointer:%s, length:%s})'%(a, len(node.elts)) - return a - - def visit_GeneratorExp(self, node): - return self.visit_ListComp(node) - - _comp_id = 0 - def visit_ListComp(self, node): - node.returns_type = 'list' - - if len(self._comprehensions) == 0: - comps = collect_comprehensions( node ) - for i,cnode in enumerate(comps): - cname = '__comp__%s' % self._comp_id - self._comp_id += 1 - cnode._comp_name = cname - self._comprehensions.append( cnode ) - - cname = node._comp_name - writer.write('var(%s)'%cname) - - length = len( node.generators ) - a = ['idx%s'%i for i in range(length)] - writer.write('var( %s )' %','.join(a) ) - a = ['iter%s'%i for i in range(length)] - writer.write('var( %s )' %','.join(a) ) - a = ['get%s'%i for i in range(length)] - writer.write('var( %s )' %','.join(a) ) - - if self._with_go: - assert node.go_listcomp_type - writer.write('%s = __go__array__(%s)' %(cname, node.go_listcomp_type)) - else: - writer.write('%s = JSArray()'%cname) - - generators = list( node.generators ) - generators.reverse() - self._gen_comp( generators, node ) - - self._comprehensions.remove( node ) - #return '__get__(list, "__call__")([], {pointer:%s})' %cname - return cname - - - def _gen_comp(self, generators, node): - gen = generators.pop() - #if len(gen.ifs): raise NotImplementedError ## TODO - id = len(generators) + self._comprehensions.index( node ) - assert isinstance(gen.target, Name) - writer.write('idx%s = 0'%id) - - is_range = False - if isinstance(gen.iter, ast.Call) and isinstance(gen.iter.func, ast.Name) and gen.iter.func.id in ('range', 'xrange'): - is_range = True - - #writer.write('iter%s = __get__(len, "__call__")([%s], JSObject())' %(id, self.visit(gen.iter.args[0])) ) - writer.write('iter%s = %s' %(id, self.visit(gen.iter.args[0])) ) - writer.write('while idx%s < iter%s:' %(id,id) ) - writer.push() - - writer.write('var(%s)'%gen.target.id) - writer.write('%s=idx%s' %(gen.target.id, id) ) - - else: - writer.write('iter%s = %s' %(id, self.visit(gen.iter)) ) - writer.write('get%s = __get__(iter%s, "__getitem__")'%(id,id) ) - - - writer.write('while idx%s < __get__(len, "__call__")([iter%s], JSObject()):' %(id,id) ) ## TODO optimize - writer.push() - - writer.write('var(%s)'%gen.target.id) - writer.write('%s=get%s( [idx%s], JSObject() )' %(gen.target.id, id,id) ) - - if generators: - self._gen_comp( generators, node ) - else: - cname = node._comp_name #self._comprehensions[-1] - if len(gen.ifs): - test = [] - for compare in gen.ifs: - test.append( self.visit(compare) ) - - writer.write('if %s:' %' and '.join(test)) - - writer.push() - if self._with_dart: - writer.write('%s.add( %s )' %(cname,self.visit(node.elt)) ) - elif self._with_lua: - writer.write('table.insert(%s, %s )' %(cname,self.visit(node.elt)) ) - elif self._with_go: - writer.write('%s = append(%s, %s )' %(cname, cname,self.visit(node.elt)) ) - else: - writer.write('%s.push( %s )' %(cname,self.visit(node.elt)) ) - writer.pull() - else: - - if self._with_dart: - writer.write('%s.add( %s )' %(cname,self.visit(node.elt)) ) - elif self._with_lua: - writer.write('table.insert(%s, %s )' %(cname,self.visit(node.elt)) ) - elif self._with_go: - writer.write('%s = append(%s, %s )' %(cname, cname,self.visit(node.elt)) ) - else: - writer.write('%s.push( %s )' %(cname,self.visit(node.elt)) ) - if self._with_lua: - writer.write('idx%s = idx%s + 1' %(id,id) ) - else: - writer.write('idx%s+=1' %id ) - writer.pull() - - if self._with_lua: ## convert to list - writer.write('%s = list.__call__({},{pointer:%s, length:idx%s})' %(cname, cname, id)) - - - - def visit_In(self, node): - return ' in ' - - def visit_NotIn(self, node): - #return ' not in ' - raise RuntimeError('"not in" is only allowed in if-test: see method - visit_Compare') - - ## TODO check if the default visit_Compare always works ## - #def visit_Compare(self, node): - # raise NotImplementedError( node ) - - - def visit_AugAssign(self, node): - self._in_assign_target = True - target = self.visit( node.target ) - self._in_assign_target = False - - op = '%s=' %self.visit( node.op ) - - typedef = self.get_typedef( node.target ) - - if self._with_lua: - - if isinstance(node.target, ast.Subscript): - name = self.visit(node.target.value) - slice = self.visit(node.target.slice) - op = self.visit(node.op) - a = '__get__(%s, "__setitem__")( [%s, __get__(%s, "__getitem__")([%s], {}) %s (%s)], {} )' - a = a %(name, slice, name, slice, op, self.visit(node.value)) - writer.write( a ) - return - - elif op == '+=': - a = '__add_op(%s,%s)' %(target, self.visit(node.value)) - elif op == '-=': - a = '(%s - %s)' %(target, self.visit(node.value)) - elif op == '*=': - a = '(%s * %s)' %(target, self.visit(node.value)) - elif op == '/=' or op == '//=': - a = '(%s / %s)' %(target, self.visit(node.value)) - elif op == '%=': - a = '__mod__(%s,%s)' %(target, self.visit(node.value)) - elif op == '&=': - a = '__and__(%s,%s)' %(target, self.visit(node.value)) - elif op == '|=': - a = '__or__(%s,%s)' %(target, self.visit(node.value)) - elif op == '^=': - a = '__xor__(%s,%s)' %(target, self.visit(node.value)) - elif op == '<<=': - a = '__lshift__(%s,%s)' %(target, self.visit(node.value)) - elif op == '>>=': - a = '__rshift__(%s,%s)' %(target, self.visit(node.value)) - else: - raise NotImplementedError(op) - - writer.write('%s=%s' %(target,a)) - - - elif typedef and op in typedef.operators: - func = typedef.operators[ op ] - a = '%s( [%s, %s] )' %(func, target, self.visit(node.value)) - writer.write( a ) - - elif op == '//=': - if isinstance(node.target, ast.Attribute): - name = self.visit(node.target.value) - attr = node.target.attr - target = '%s.%s' %(name, attr) - - if self._with_dart: - a = '%s = (%s/%s).floor()' %(target, target, self.visit(node.value)) - else: - a = '%s = Math.floor(%s/%s)' %(target, target, self.visit(node.value)) - writer.write(a) - - elif self._with_dart: - if op == '+=': - a = '%s.__iadd__(%s)' %(target, self.visit(node.value)) - elif op == '-=': - a = '%s.__isub__(%s)' %(target, self.visit(node.value)) - elif op == '*=': - a = '%s.__imul__(%s)' %(target, self.visit(node.value)) - elif op == '/=': - a = '%s.__idiv__(%s)' %(target, self.visit(node.value)) - elif op == '%=': - a = '%s.__imod__(%s)' %(target, self.visit(node.value)) - elif op == '&=': - a = '%s.__iand__(%s)' %(target, self.visit(node.value)) - elif op == '|=': - a = '%s.__ior__(%s)' %(target, self.visit(node.value)) - elif op == '^=': - a = '%s.__ixor__(%s)' %(target, self.visit(node.value)) - elif op == '<<=': - a = '%s.__ilshift__(%s)' %(target, self.visit(node.value)) - elif op == '>>=': - a = '%s.__irshift__(%s)' %(target, self.visit(node.value)) - else: - raise NotImplementedError - - b = '%s %s %s' %(target, op, self.visit(node.value)) - if isinstance( node.target, ast.Name ) and node.target.id in self._typedef_vars and self._typedef_vars[node.target.id] in typedpython.native_number_types+typedpython.vector_types: - writer.write(b) - - else: - ## dart2js is smart enough to optimize this if/else away ## - writer.write('if instanceof(%s, Number) or instanceof(%s, String): %s' %(target,target,b) ) - writer.write('else: %s' %a) - - elif self._with_js: ## no operator overloading in with-js mode - a = '%s %s %s' %(target, op, self.visit(node.value)) - writer.write(a) - - elif isinstance(node.target, ast.Attribute): - name = self.visit(node.target.value) - attr = node.target.attr - a = '%s.%s %s %s' %(name, attr, op, self.visit(node.value)) - writer.write(a) - - elif isinstance(node.target, ast.Subscript): - name = self.visit(node.target.value) - slice = self.visit(node.target.slice) - #if self._with_js: - # a = '%s[ %s ] %s %s' - # writer.write(a %(name, slice, op, self.visit(node.value))) - #else: - op = self.visit(node.op) - value = self.visit(node.value) - #a = '__get__(%s, "__setitem__")( [%s, __get__(%s, "__getitem__")([%s], {}) %s (%s)], {} )' - fallback = '__get__(%s, "__setitem__")( [%s, __get__(%s, "__getitem__")([%s], {}) %s (%s)], {} )'%(name, slice, name, slice, op, value) - if isinstance(node.target.value, ast.Name): - ## TODO also check for arr.remote (RPC) if defined then __setitem__ can not be bypassed - - ## the overhead of checking if target is an array, - ## and calling __setitem__ directly bypassing a single __get__, - ## is greather than simply calling the fallback - #writer.write('if instanceof(%s, Array): %s.__setitem__([%s, %s[%s] %s (%s) ], __NULL_OBJECT__)' %(name, name, slice, name,slice, op, value)) - - writer.write('if instanceof(%s, Array): %s[%s] %s= %s' %(name, name,slice, op, value)) - writer.write('else: %s' %fallback) - else: - writer.write(fallback) - - else: - ## TODO extra checks to make sure the operator type is valid in this context - a = '%s %s %s' %(target, op, self.visit(node.value)) - writer.write(a) - - def visit_Yield(self, node): - return 'yield %s' % self.visit(node.value) - - def _get_js_class_base_init(self, node ): - for base in node.bases: - if base.id == 'object': - continue - n = self._js_classes[ base.id ] - if hasattr(n, '_cached_init'): - return n._cached_init - else: - return self._get_js_class_base_init( n ) ## TODO fixme - - def _visit_dart_classdef(self, node): - name = node.name - log('Dart-ClassDef: %s'%name) - self._js_classes[ name ] = node - - methods = {} - method_list = [] ## getter/setters can have the same name - props = set() - struct_types = dict() - - for item in node.body: - if isinstance(item, FunctionDef): - methods[ item.name ] = item - finfo = inspect_method( item ) - props.update( finfo['properties'] ) - - if item.name != '__init__': - method_list.append( item ) - - #if item.name == '__init__': continue - continue - - item.args.args = item.args.args[1:] ## remove self - for n in finfo['name_nodes']: - if n.id == 'self': - n.id = 'this' - - elif isinstance(item, ast.Expr) and isinstance(item.value, ast.Dict): - sdef = [] - for i in range( len(item.value.keys) ): - k = self.visit( item.value.keys[ i ] ) - v = self.visit( item.value.values[i] ) - sdef.append( '%s=%s'%(k,v) ) - - writer.write('@__struct__(%s)' %','.join(sdef)) - - if self._with_go: - pass - elif props: - writer.write('@properties(%s)'%','.join(props)) - for dec in node.decorator_list: - writer.write('@%s'%self.visit(dec)) - - bases = [] - for base in node.bases: - bases.append( self.visit(base) ) - if bases: - writer.write('class %s( %s ):'%(node.name, ','.join(bases))) - - else: - writer.write('class %s:' %node.name) - - init = methods.get( '__init__', None) - - writer.push() - ## declare vars here - #for attr in props: - # writer.write('JS("var %s")'%attr) - ## constructor - if init: - methods.pop( '__init__' ) - if not self._with_go: - init.name = node.name - self.visit(init) - - ## methods - for method in method_list: - self.visit(method) - - for item in node.body: - if isinstance(item, ast.With): - s = self.visit(item) - if s: writer.write( s ) - - - if not init and not method_list: - writer.write( 'pass' ) - - writer.pull() - - def is_gpu_method(self, n): - for dec in n.decorator_list: - if isinstance(dec, Attribute) and isinstance(dec.value, Name) and dec.value.id == 'gpu': - if dec.attr == 'method': - return True - - - def _visit_js_classdef(self, node): - name = node.name - self._js_classes[ name ] = node - self._in_js_class = True - class_decorators = [] - gpu_object = False - - for decorator in node.decorator_list: ## class decorators - if isinstance(decorator, Attribute) and isinstance(decorator.value, Name) and decorator.value.id == 'gpu': - if decorator.attr == 'object': - gpu_object = True - else: - raise SyntaxError( self.format_error('invalid gpu class decorator') ) - else: - class_decorators.append( decorator ) - - method_names = [] ## write back in order (required by GLSL) - methods = {} - class_vars = [] - - for item in node.body: - if isinstance(item, FunctionDef): - method_names.append(item.name) - methods[ item.name ] = item - if self.is_gpu_method( item ): - item.args.args[0].id = name ## change self to the class name, pythonjs.py changes it to 'ClassName self' - else: - item.args.args = item.args.args[1:] ## remove self - finfo = inspect_function( item ) - for n in finfo['name_nodes']: - if n.id == 'self': - n.id = 'this' - elif isinstance(item, ast.Expr) and isinstance(item.value, Str): ## skip doc strings - pass - else: - class_vars.append( item ) - - - #init = methods.pop('__init__') - init = methods.get( '__init__', None) - if init: - args = [self.visit(arg) for arg in init.args.args] - node._cached_init = init - if init.args.kwarg: - args.append( init.args.kwarg ) - - else: - args = [] - init = self._get_js_class_base_init( node ) - if init: - args = [self.visit(arg) for arg in init.args.args] - node._cached_init = init - - writer.write('def %s(%s):' %(name,','.join(args))) - writer.push() - if init: - tail = '' - if gpu_object: - tail = 'this.__struct_name__="%s"' %name - - - #for b in init.body: - # line = self.visit(b) - # if line: writer.write( line ) - - if hasattr(init, '_code'): ## cached ## - code = init._code - elif args: - code = '%s.__init__(this, %s); %s'%(name, ','.join(args), tail) - init._code = code - else: - code = '%s.__init__(this); %s'%(name, tail) - init._code = code - - writer.write(code) - - else: - writer.write('pass') - - ## `self.__class__` pointer ## - writer.write('this.__class__ = %s' %name) - - ## instance UID ## - writer.write('this.__uid__ = "" + _PythonJS_UID') - writer.write('_PythonJS_UID += 1') - - writer.pull() - ## class UID ## - writer.write('%s.__uid__ = "" + _PythonJS_UID' %name) - writer.write('_PythonJS_UID += 1') - - #keys = methods.keys() - #keys.sort() - for mname in method_names: - method = methods[mname] - gpu_method = False - for dec in method.decorator_list: - if isinstance(dec, Attribute) and isinstance(dec.value, Name) and dec.value.id == 'gpu': - if dec.attr == 'method': - gpu_method = True - - if gpu_method: - method.name = '%s_%s' %(name, method.name) - self._in_gpu_method = name ## name of class - line = self.visit(method) - if line: writer.write( line ) - self._in_gpu_method = None - - else: - - writer.write('@%s.prototype'%name) - line = self.visit(method) - if line: writer.write( line ) - #writer.write('%s.prototype.%s = %s'%(name,mname,mname)) - f = 'function () { return %s.prototype.%s.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }' %(name, mname) - writer.write('%s.%s = JS("%s")'%(name,mname,f)) - - for base in node.bases: - base = self.visit(base) - if base == 'object': continue - a = [ - 'for (var n in %s.prototype) {'%base, - ' if (!(n in %s.prototype)) {'%name, - ' %s.prototype[n] = %s.prototype[n]'%(name,base), - ' }', - '}' - ] - a = ''.join(a) - writer.write( "JS('%s')" %a ) - - for item in class_vars: - if isinstance(item, Assign) and isinstance(item.targets[0], Name): - item_name = item.targets[0].id - item.targets[0].id = '__%s_%s' % (name, item_name) - self.visit(item) # this will output the code for the assign - writer.write('%s.prototype.%s = %s' % (name, item_name, item.targets[0].id)) - - if gpu_object: - ## TODO check class variables ## - writer.write('%s.prototype.__struct_name__ = "%s"' %(name,name)) - - ## TODO support property decorators in javascript-mode ## - writer.write('%s.prototype.__properties__ = {}' %name) - writer.write('%s.prototype.__unbound_methods__ = {}' %name) - - - self._in_js_class = False - - def visit_ClassDef(self, node): - if self._with_dart or self._with_go: - self._visit_dart_classdef(node) - return - elif self._with_js: - self._visit_js_classdef(node) - return - - name = node.name - self._in_class = name - self._classes[ name ] = list() ## method names - self._class_parents[ name ] = set() - self._class_attributes[ name ] = set() - self._catch_attributes = None - self._decorator_properties = dict() ## property names : {'get':func, 'set':func} - self._decorator_class_props[ name ] = self._decorator_properties - self._instances[ 'self' ] = name - - self._injector = [] ## DEPRECATED - class_decorators = [] - gpu_object = False - - for decorator in node.decorator_list: ## class decorators - if isinstance(decorator, Attribute) and isinstance(decorator.value, Name) and decorator.value.id == 'gpu': - if decorator.attr == 'object': - gpu_object = True - else: - raise SyntaxError( self.format_error('invalid gpu class decorator') ) - else: - class_decorators.append( decorator ) - - ## always catch attributes ## - self._catch_attributes = set() - self._instance_attributes[ name ] = self._catch_attributes - - if not self._with_coffee: - writer.write('var(%s, __%s_attrs, __%s_parents)' % (name, name, name)) - writer.write('__%s_attrs = JSObject()' % name) - writer.write('__%s_parents = JSArray()' % name) - writer.write('__%s_properties = JSObject()' % name) - - for base in node.bases: - base = self.visit(base) - if base == 'object': continue - self._class_parents[ name ].add( base ) - if self._with_lua: - writer.write('table.insert( __%s_parents, %s)' % (name, base)) - else: - writer.write('__%s_parents.push(%s)' % (name, base)) - - for item in node.body: - if isinstance(item, FunctionDef): - log(' method: %s'%item.name) - - self._classes[ name ].append( item.name ) - item_name = item.name - item.original_name = item.name - - if self.is_gpu_method( item ): - item.name = '%s_%s' % (name, item_name) - else: - item.name = '__%s_%s' % (name, item_name) - - self.visit(item) # this will output the code for the function - - if item_name in self._decorator_properties or self.is_gpu_method( item ): - pass - else: - writer.write('__%s_attrs.%s = %s' % (name, item_name, item.name)) - - elif isinstance(item, Assign) and isinstance(item.targets[0], Name): - item_name = item.targets[0].id - item.targets[0].id = '__%s_%s' % (name, item_name) - self.visit(item) # this will output the code for the assign - writer.write('__%s_attrs.%s = %s' % (name, item_name, item.targets[0].id)) - self._class_attributes[ name ].add( item_name ) ## should this come before self.visit(item) ?? - elif isinstance(item, Pass): - pass - elif isinstance(item, ast.Expr) and isinstance(item.value, Str): ## skip doc strings - pass - elif isinstance(item, ast.With) and isinstance( item.context_expr, Name ) and item.context_expr.id == 'javascript': - self._with_js = True - writer.with_javascript = True - for sub in item.body: - if isinstance(sub, Assign) and isinstance(sub.targets[0], Name): - item_name = sub.targets[0].id - sub.targets[0].id = '__%s_%s' % (name, item_name) - self.visit(sub) # this will output the code for the assign - writer.write('__%s_attrs.%s = %s' % (name, item_name, sub.targets[0].id)) - self._class_attributes[ name ].add( item_name ) ## should this come before self.visit(item) ?? - else: - raise NotImplementedError( sub ) - writer.with_javascript = False - self._with_js = False - - else: - raise NotImplementedError( item ) - - for prop_name in self._decorator_properties: - getter = self._decorator_properties[prop_name]['get'] - writer.write('__%s_properties["%s"] = JSObject()' %(name, prop_name)) - writer.write('__%s_properties["%s"]["get"] = %s' %(name, prop_name, getter)) - if self._decorator_properties[prop_name]['set']: - setter = self._decorator_properties[prop_name]['set'] - writer.write('__%s_properties["%s"]["set"] = %s' %(name, prop_name, setter)) - - self._catch_attributes = None - self._decorator_properties = None - self._instances.pop('self') - self._in_class = False - - writer.write('%s = __create_class__("%s", __%s_parents, __%s_attrs, __%s_properties)' % (name, name, name, name, name)) - - ## DEPRECATED - #if 'init' in self._injector: - # writer.write('%s.init_callbacks = JSArray()' %name) - #self._injector = [] - - for dec in class_decorators: - writer.write('%s = __get__(%s,"__call__")( [%s], JSObject() )' % (name, self.visit(dec), name)) - - def visit_And(self, node): - return ' and ' - - def visit_Or(self, node): - return ' or ' - - def visit_BoolOp(self, node): - op = self.visit(node.op) - #raise SyntaxError(op) - return '('+ op.join( [self.visit(v) for v in node.values] ) + ')' - - def visit_If(self, node): - if self._with_dart and writer.is_at_global_level(): - raise SyntaxError( self.format_error('if statements can not be used at module level in dart') ) - elif self._with_lua: - writer.write('if __test_if_true__(%s):' % self.visit(node.test)) - - elif isinstance(node.test, ast.Dict): - if self._with_js: - writer.write('if Object.keys(%s).length:' % self.visit(node.test)) - else: - writer.write('if %s.keys().length:' % self.visit(node.test)) - - elif isinstance(node.test, ast.List): - writer.write('if %s.length:' % self.visit(node.test)) - - elif self._with_ll or self._with_glsl: - writer.write('if %s:' % self.visit(node.test)) - elif isinstance(node.test, ast.Compare): - writer.write('if %s:' % self.visit(node.test)) - else: - writer.write('if __test_if_true__(%s):' % self.visit(node.test)) - - writer.push() - map(self.visit, node.body) - writer.pull() - if node.orelse: - writer.write('else:') - writer.push() - map(self.visit, node.orelse) - writer.pull() - - def visit_TryExcept(self, node): - if len(node.handlers)==0: - raise SyntaxError(self.format_error('no except handlers')) - - ## by default in js-mode some expections will not be raised, - ## this allows those cases to throw proper errors. - if node.handlers[0].type: - self._in_catch_exception = self.visit(node.handlers[0].type) - else: - self._in_catch_exception = None - - writer.write('try:') - writer.push() - map(self.visit, node.body) - writer.pull() - map(self.visit, node.handlers) - - def visit_Raise(self, node): - #if self._with_js or self._with_dart: - # writer.write('throw Error') - #else: - #writer.write('raise %s' % self.visit(node.type)) - if isinstance(node.type, ast.Name): - writer.write('raise %s' % node.type.id) - - elif isinstance(node.type, ast.Call): - if len(node.type.args) > 1: - raise SyntaxError( self.format_error('raise Error(x) can only have a single argument') ) - if node.type.args: - writer.write( 'raise %s(%s)' %(self.visit(node.type.func), self.visit(node.type.args[0])) ) - else: - writer.write( 'raise %s()' %self.visit(node.type.func) ) - - def visit_ExceptHandler(self, node): - if node.type and node.name: - writer.write('except %s, %s:' % (self.visit(node.type), self.visit(node.name))) - elif node.type and not node.name: - writer.write('except %s:' % self.visit(node.type)) - else: - writer.write('except:') - writer.push() - map(self.visit, node.body) - writer.pull() - - def visit_Pass(self, node): - writer.write('pass') - - def visit_Name(self, node): - if self._with_js or self._with_dart: - if node.id == 'True': - return 'true' - elif node.id == 'False': - return 'false' - elif node.id == 'None': - if self._with_dart: - return 'null' - else: - return 'null' - - return node.id - - def visit_Num(self, node): - return str(node.n) - - def visit_Return(self, node): - if node.value: - if isinstance(node.value, Call) and isinstance(node.value.func, Name) and node.value.func.id in self._classes: - self._return_type = node.value.func.id - elif isinstance(node.value, Name) and node.value.id == 'self' and 'self' in self._instances: - self._return_type = self._instances['self'] - - - if self._with_glsl and self._in_gpu_main: - ## _id_ is inserted into all function headers by pythonjs.py for glsl functions. - if not self._gpu_return_types: - raise SyntaxError( self.format_error('function return type unknown - required decorator `@returns(array/vec4=[w,h])`') ) - - ## only one return type is allowed ## - if 'array' in self._gpu_return_types: - writer.write('out_float = %s' %self.visit(node.value)) - elif 'vec4' in self._gpu_return_types: - writer.write('out_float4 = %s' %self.visit(node.value)) - elif 'mat4' in self._gpu_return_types: - nv = self.visit(node.value) - writer.write('inline("mat4 _res_ = %s; int _row = matrix_row();")' %nv) - - r0 = 'vec4(_res_[0][0],_res_[0][1],_res_[0][2],_res_[0][3])' - r1 = 'vec4(_res_[1][0],_res_[1][1],_res_[1][2],_res_[1][3])' - r2 = 'vec4(_res_[2][0],_res_[2][1],_res_[2][2],_res_[2][3])' - r3 = 'vec4(_res_[3][0],_res_[3][1],_res_[3][2],_res_[3][3])' - - writer.write('if _row==0: out_float4 = %s' % r0) - writer.write('elif _row==1: out_float4 = %s'%r1) - writer.write('elif _row==2: out_float4 = %s'%r2) - writer.write('else: out_float4 = %s'%r3) - - else: - raise SyntaxError( self.format_error('invalid GPU return type: %s' %self._gpu_return_types) ) - - elif self._inline: - writer.write('__returns__%s = %s' %(self._inline[-1], self.visit(node.value)) ) - if self._inline_breakout: - writer.write('break') - - elif isinstance(node.value, ast.Lambda): - self.visit( node.value ) - writer.write( 'return __lambda__' ) - - elif isinstance(node.value, ast.Tuple): - writer.write( 'return %s;' % ','.join([self.visit(e) for e in node.value.elts]) ) - - else: - writer.write('return %s' % self.visit(node.value)) - - else: - if self._inline: - if self._inline_breakout: - writer.write('break') - else: - writer.write('return') ## empty return - - def visit_BinOp(self, node): - left = self.visit(node.left) - op = self.visit(node.op) - - is_go_listcomp = False - if self._with_go: - if op == '<<': - if isinstance(node.left, ast.Call) and isinstance(node.left.func, ast.Name) and node.left.func.id=='__go__array__': - if isinstance(node.right, ast.GeneratorExp): - is_go_listcomp = True - node.right.go_listcomp_type = node.left.args[0].id - - - right = self.visit(node.right) - - if self._with_glsl: - return '(%s %s %s)' % (left, op, right) - elif self._with_go: - if is_go_listcomp: - return right - else: - return '(%s %s %s)' % (left, op, right) - - elif op == '|': - if isinstance(node.right, Str): - self._custom_op_hack = (node.right.s, left) - return '' - elif hasattr(self, '_custom_op_hack') and isinstance(node.left, BinOp): - op,left_operand = self._custom_op_hack - right_operand = self.visit(node.right) - #return '%s( %s, %s )' %(op, left_operand, right_operand) - if op.decode('utf-8') in self._custom_operators: ## swap name to python function - op = self._custom_operators[ op.decode('utf-8') ] - return '%s( [%s, %s], JSObject() )' %(op, left_operand, right_operand) - - elif op == '%' and isinstance(node.left, ast.Str): - if self._with_js: - return '__sprintf( %s, %s )' %(left, right) ## assumes that right is a tuple, or list. - else: - return '__sprintf( %s, %s )' %(left, right) ## assumes that right is a tuple, or list. - - elif op == '*' and isinstance(node.left, ast.List): - if len(node.left.elts) == 1 and isinstance(node.left.elts[0], ast.Name) and node.left.elts[0].id == 'None': - if self._with_dart: - return 'JS("__create_list(%s)")' %self.visit(node.right) - elif self._with_lua: - return 'JS("__create_list(%s)")' %self.visit(node.right) - else: - return 'JS("new Array(%s)")' %self.visit(node.right) - elif isinstance(node.right,ast.Num): - n = node.right.n - elif isinstance(node.right, Name): - if node.right.id in self._global_nodes: - n = self._global_nodes[ node.right.id ].n - else: - raise SyntaxError( self.format_error(node) ) - else: - #raise SyntaxError( self.format_error(node) ) - return '__mul_op(%s,%s)'%(left, right) - - elts = [ self.visit(e) for e in node.left.elts ] - expanded = [] - for i in range( n ): expanded.extend( elts ) - - if self._with_lua: - return 'list.__call__([], {pointer:[%s], length:%s})' %(','.join(expanded), n) - else: - return '[%s]' %','.join(expanded) - - elif not self._with_dart and left in self._typedef_vars and self._typedef_vars[left]=='long': - if op == '*': - return '%s.multiply(%s)'%(left, right) - elif op == '+': - return '%s.add(%s)'%(left, right) - elif op == '-': - return '%s.subtract(%s)'%(left, right) - elif op == '/' or op == '//': - return '%s.div(%s)'%(left, right) - elif op == '%': - return '%s.modulo(%s)'%(left, right) - else: - raise NotImplementedError('long operator: %s'%op) - - elif not self._with_dart and op == '*' and left in self._typedef_vars and self._typedef_vars[left]=='int' and isinstance(node.right, ast.Num) and node.right.n in POWER_OF_TWO: - power = POWER_OF_TWO.index( node.right.n ) - return '%s << %s'%(left, power) - - elif not self._with_dart and op == '//' and left in self._typedef_vars and self._typedef_vars[left]=='int' and isinstance(node.right, ast.Num) and node.right.n in POWER_OF_TWO: - power = POWER_OF_TWO.index( node.right.n ) - return '%s >> %s'%(left, power) - - elif not self._with_dart and op == '*' and '*' in self._direct_operators: - return '(%s * %s)'%(left, right) - - elif not self._with_dart and not self._with_js and op == '*': - if left in self._typedef_vars and self._typedef_vars[left] in typedpython.native_number_types: - return '(%s * %s)'%(left, right) - else: - return '__mul_op(%s,%s)'%(left, right) - - elif op == '//': - if self._with_dart: - return '(%s/%s).floor()' %(left, right) - else: - return 'Math.floor(%s/%s)' %(left, right) - - elif op == '**': - return 'Math.pow(%s,%s)' %(left, right) - - elif op == '+' and not self._with_dart: - if '+' in self._direct_operators: - return '%s+%s'%(left, right) - elif left in self._typedef_vars and self._typedef_vars[left] in typedpython.native_number_types: - return '%s+%s'%(left, right) - - elif self._with_lua or self._in_lambda or self._in_while_test: - ## this is also required when in an inlined lambda like "(lambda a,b: a+b)(1,2)" - return '__add_op(%s, %s)'%(left, right) - else: - ## the ternary operator in javascript is fast, the add op needs to be fast for adding numbers, so here typeof is - ## used to check if the first variable is a number, and if so add the numbers, otherwise fallback to using the - ## __add_op function, the __add_op function checks if the first variable is an Array, and if so then concatenate; - ## else __add_op will call the "__add__" method of the left operand, passing right as the first argument. - l = '__left%s' %self._addop_ids - self._addop_ids += 1 - r = '__right%s' %self._addop_ids - writer.write('var(%s,%s)' %(l,r)) - self._addop_ids += 1 - writer.write('%s = %s' %(l,left)) - writer.write('%s = %s' %(r,right)) - return '__ternary_operator__( typeof(%s)=="number", %s + %s, __add_op(%s, %s))'%(l, l, r, l, r) - - elif isinstance(node.left, Name): - typedef = self.get_typedef( node.left ) - if typedef and op in typedef.operators: - func = typedef.operators[ op ] - node.operator_overloading = func - return '%s( [%s, %s], JSObject() )' %(func, left, right) - - - return '(%s %s %s)' % (left, op, right) - - def visit_Eq(self, node): - return '==' - - def visit_NotEq(self, node): - return '!=' - - def visit_Is(self, node): - return 'is' - - def visit_Pow(self, node): - return '**' - - def visit_Mult(self, node): - return '*' - - def visit_Add(self, node): - return '+' - - def visit_Sub(self, node): - return '-' - - def visit_FloorDiv(self, node): - return '//' - def visit_Div(self, node): - return '/' - def visit_Mod(self, node): - return '%' - def visit_LShift(self, node): - return '<<' - def visit_RShift(self, node): - return '>>' - def visit_BitXor(self, node): - return '^' - def visit_BitOr(self, node): - return '|' - def visit_BitAnd(self, node): - return '&' - - def visit_Lt(self, node): - return '<' - - def visit_Gt(self, node): - return '>' - - def visit_GtE(self, node): - return '>=' - - def visit_LtE(self, node): - return '<=' - - def visit_Compare(self, node): - left = self.visit(node.left) - comp = [ left ] - for i in range( len(node.ops) ): - if i==0 and isinstance(node.left, ast.Name) and node.left.id in self._typedef_vars and self._typedef_vars[node.left.id] == 'long': - if isinstance(node.ops[i], ast.Eq): - comp = ['%s.equals(%s)' %(left, self.visit(node.comparators[i]))] - elif isinstance(node.ops[i], ast.Lt): - comp = ['%s.lessThan(%s)' %(left, self.visit(node.comparators[i]))] - elif isinstance(node.ops[i], ast.Gt): - comp = ['%s.greaterThan(%s)' %(left, self.visit(node.comparators[i]))] - - elif isinstance(node.ops[i], ast.LtE): - comp = ['%s.lessThanOrEqual(%s)' %(left, self.visit(node.comparators[i]))] - elif isinstance(node.ops[i], ast.GtE): - comp = ['%s.greaterThanOrEqual(%s)' %(left, self.visit(node.comparators[i]))] - - else: - raise NotImplementedError( node.ops[i] ) - - elif isinstance(node.ops[i], ast.In) or isinstance(node.ops[i], ast.NotIn): - if comp[-1] == left: - comp.pop() - else: - comp.append( ' and ' ) - - if isinstance(node.ops[i], ast.NotIn): - comp.append( ' not (') - - a = ( self.visit(node.comparators[i]), left ) - - if self._with_dart: - ## indexOf works with lists and strings in Dart - comp.append( '%s.contains(%s)' %(a[0], a[1]) ) - - elif self._with_js: - ## this makes "if 'x' in Array" work like Python: "if 'x' in list" - TODO fix this for js-objects - ## note javascript rules are confusing: "1 in [1,2]" is true, this is because a "in test" in javascript tests for an index - ## TODO double check this code - #comp.append( '%s in %s or' %(a[1], a[0]) ) ## this is ugly, will break with Arrays - #comp.append( '( Object.hasOwnProperty.call(%s, "__contains__") and' %a[0]) - #comp.append( "%s['__contains__'](%s) )" %a ) - ##comp.append( ' or (instanceof(%s,Object) and %s in %s) ') - #comp.append( ' or Object.hasOwnProperty.call(%s, %s)' %(a[0],a[1])) - ## fixes 'o' in 'helloworld' in javascript mode ## - #comp.append( ' or typeof(%s)=="string" and %s.__contains__(%s)' %(a[0],a[0],a[1])) - comp.append( '__contains__(%s, %s)' %(a[0],a[1])) - else: - comp.append( "__get__(__get__(%s, '__contains__'), '__call__')([%s], JSObject())" %a ) - - if isinstance(node.ops[i], ast.NotIn): - comp.append( ' )') ## it is not required to enclose NotIn - - else: - comp.append( self.visit(node.ops[i]) ) - comp.append( self.visit(node.comparators[i]) ) - return ' '.join( comp ) - - def visit_Not(self, node): - return ' not ' - - def visit_IsNot(self, node): - return ' is not ' - - def visit_UnaryOp(self, node): - op = self.visit(node.op) - if op is None: raise RuntimeError( node.op ) - operand = self.visit(node.operand) - if operand is None: raise RuntimeError( node.operand ) - return op + operand - - def visit_USub(self, node): - return '-' - - - def visit_Attribute(self, node): - - ## TODO check if this is always safe. - if isinstance(node.value, Name): - typedef = self.get_typedef( instance=node.value ) - elif hasattr(node.value, 'returns_type'): - typedef = self.get_typedef( class_name=node.value.returns_type ) - else: - typedef = None - - - node_value = self.visit(node.value) - if self._with_glsl: - #if node_value not in self._typedef_vars: ## dynamic var DEPRECATED - # return 'glsl_inline(%s.%s)' %(node_value, node.attr) - #else: - return '%s.%s' %(node_value, node.attr) - elif self._with_dart or self._with_ll or self._with_go: - return '%s.%s' %(node_value, node.attr) - - elif self._with_js: - if self._in_catch_exception == 'AttributeError': - return '__getfast__(%s, "%s")' % (node_value, node.attr) - else: - return '%s.%s' %(node_value, node.attr) - - elif self._with_lua and self._in_assign_target: ## this is required because lua has no support for inplace assignment ops like "+=" - return '%s.%s' %(node_value, node.attr) - - elif typedef and node.attr in typedef.attributes: ## optimize away `__get__` - return '%s.%s' %(node_value, node.attr) - - elif hasattr(node, 'lineno'): - src = self._source[ node.lineno-1 ] - src = src.replace('"', '\\"') - err = 'missing attribute `%s` - line %s: %s' %(node.attr, node.lineno, src.strip()) - return '__get__(%s, "%s", "%s")' % (node_value, node.attr, err) - else: - return '__get__(%s, "%s")' % (node_value, node.attr) - - - def visit_Index(self, node): - return self.visit(node.value) - - def visit_Subscript(self, node): - name = self.visit(node.value) - - if isinstance(node.slice, ast.Ellipsis): - #return '%s["$wrapped"]' %name - return '%s[...]' %name - - elif self._with_ll or self._with_glsl or self._with_go: - return '%s[%s]' %(name, self.visit(node.slice)) - - elif self._with_js or self._with_dart: - if isinstance(node.slice, ast.Slice): ## allow slice on Array - if self._with_dart: - ## this is required because we need to support slices on String ## - return '__getslice__(%s, %s)'%(name, self.visit(node.slice)) - else: - if not node.slice.lower and not node.slice.upper and not node.slice.step: - return '%s.copy()' %name - else: - return '%s.__getslice__(%s)'%(name, self.visit(node.slice)) - - - elif isinstance(node.slice, ast.Index) and isinstance(node.slice.value, ast.Num): - if node.slice.value.n < 0: - ## the problem with this is it could be a dict with negative numbered keys - return '%s[ %s.length+%s ]' %(name, name, self.visit(node.slice)) - else: - return '%s[ %s ]' %(name, self.visit(node.slice)) - - elif self._with_dart: ## --------- dart mode ------- - return '%s[ %s ]' %(name, self.visit(node.slice)) - - - else: ## ------------------ javascript mode ------------------------ - if self._in_catch_exception == 'KeyError': - value = self.visit(node.value) - slice = self.visit(node.slice) - return '__get__(%s, "__getitem__")([%s], __NULL_OBJECT__)' % (value, slice) - - elif isinstance(node.slice, ast.Index) and isinstance(node.slice.value, ast.BinOp): - ## TODO keep this optimization? in js mode `a[x+y]` is assumed to a direct key, - ## it would be safer to check if one of the operands is a number literal, - ## in that case it is safe to assume that this is a direct key. - return '%s[ %s ]' %(name, self.visit(node.slice)) - - elif self._with_direct_keys: - return '%s[ %s ]' %(name, self.visit(node.slice)) - - else: - s = self.visit(node.slice) - #return '%s[ __ternary_operator__(%s.__uid__, %s) ]' %(name, s, s) - check_array = '__ternary_operator__( instanceof(%s,Array), JSON.stringify(%s), %s )' %(s, s, s) - return '%s[ __ternary_operator__(%s.__uid__, %s) ]' %(name, s, check_array) - - elif isinstance(node.slice, ast.Slice): - return '__get__(%s, "__getslice__")([%s], __NULL_OBJECT__)' % ( - self.visit(node.value), - self.visit(node.slice) - ) - - elif name in self._func_typedefs and self._func_typedefs[name] == 'list': - #return '%s[...][%s]'%(name, self.visit(node.slice)) - return '%s[%s]'%(name, self.visit(node.slice)) - - elif name in self._instances: ## support x[y] operator overloading - klass = self._instances[ name ] - if '__getitem__' in self._classes[ klass ]: - return '__%s___getitem__([%s, %s], JSObject())' % (klass, name, self.visit(node.slice)) - else: - return '__get__(%s, "__getitem__")([%s], __NULL_OBJECT__)' % ( - self.visit(node.value), - self.visit(node.slice) - ) - else: - err = "" - if hasattr(node, 'lineno'): - src = self._source[ node.lineno-1 ] - src = src.replace('"', '\\"') - err = 'line %s: %s' %(node.lineno, src.strip()) - - value = self.visit(node.value) - slice = self.visit(node.slice) - fallback = '__get__(%s, "__getitem__", "%s")([%s], __NULL_OBJECT__)' % (value, err, slice) - if not self._with_lua and isinstance(node.value, ast.Name): - return '__ternary_operator__(instanceof(%s, Array), %s[%s], %s)' %(value, value,slice, fallback) - else: - return fallback - - def visit_Slice(self, node): - if self._with_go: - lower = upper = step = None - elif self._with_dart: - lower = upper = step = 'null' - elif self._with_js: - lower = upper = step = 'undefined' - else: - lower = upper = step = 'undefined' - if node.lower: - lower = self.visit(node.lower) - if node.upper: - upper = self.visit(node.upper) - if node.step: - step = self.visit(node.step) - - if self._with_go: - if lower and upper: - return '%s:%s' %(lower,upper) - elif upper: - return ':%s' %upper - elif lower: - return '%s:'%lower - else: - return "%s, %s, %s" % (lower, upper, step) - - def visit_Assign(self, node): - use_runtime_errors = not (self._with_js or self._with_ll or self._with_dart or self._with_coffee or self._with_lua or self._with_go) - use_runtime_errors = use_runtime_errors and self._with_runtime_exceptions - - lineno = node.lineno - if node.lineno < len(self._source): - src = self._source[ node.lineno ] - self._line_number = node.lineno - self._line = src - - - if use_runtime_errors: - writer.write('try:') - writer.push() - - targets = list( node.targets ) - target = targets[0] - if isinstance(target, ast.Name) and target.id in typedpython.types: - if len(targets)==2 and isinstance(targets[1], ast.Name): - self._typedef_vars[ targets[1].id ] = target.id - if target.id == 'long' and isinstance(node.value, ast.Num): - ## requires long library ## - writer.write('%s = long.fromString("%s")' %(targets[1].id, self.visit(node.value))) - return None - else: - targets = targets[1:] - elif len(targets)==1 and isinstance(node.value, ast.Name) and target.id in typedpython.types: - self._typedef_vars[ node.value.id ] = target.id - return None - else: - raise SyntaxError( self.format_error(targets) ) - - elif self._with_rpc_name and isinstance(target, Attribute) and isinstance(target.value, Name) and target.value.id == self._with_rpc_name: - writer.write('__rpc_set__(%s, "%s", %s)' %(self._with_rpc, target.attr, self.visit(node.value))) - return None - elif self._with_rpc_name and isinstance(node.value, Attribute) and isinstance(node.value.value, Name) and node.value.value.id == self._with_rpc_name: - writer.write('%s = __rpc_get__(%s, "%s")' %(self.visit(target), self._with_rpc, node.value.attr)) - return None - - ############################################# - for target in targets: - self._visit_assign_helper( node, target ) - node = ast.Expr( value=target ) - - if use_runtime_errors: - writer.pull() - writer.write('except:') - writer.push() - if lineno-1 < len(self._source): - src = self._source[ lineno-1 ] - src = src.replace('"', '\\"') - src = 'line %s: %s' %(lineno, src.strip()) - writer.write('console.trace()') - writer.write('console.error(__exception__, __exception__.message)') - writer.write('console.error("""%s""")' %src) - writer.write('raise RuntimeError("""%s""")' %src) - else: - writer.write('raise RuntimeError("no source code")') - - writer.pull() - - - - def _visit_assign_helper(self, node, target): - if isinstance(node.value, ast.Lambda): - self.visit(node.value) ## writes function def - writer.write('%s = __lambda__' %self.visit(target)) - - elif isinstance(node.value, ast.Dict) and self._with_go: - key_type = None - val_type = None - - for i in range( len(node.value.keys) ): - k = node.value.keys[ i ] - v = node.value.values[i] - if isinstance(k, ast.Str): - key_type = 'string' - elif isinstance(k, ast.Num): - key_type = 'int' - - if isinstance(v, ast.Str): - val_type = 'string' - elif isinstance(v, ast.Num): - if isinstance(v.n, int): - val_type = 'int' - else: - val_type = 'float64' - - if not key_type: - raise SyntaxError( self.format_error('can not determine dict key type') ) - if not val_type: - raise SyntaxError( self.format_error('can not determine dict value type') ) - - t = self.visit(target) - v = self.visit(node.value) - writer.write('%s = __go__map__(%s, %s) << %s' %(t, key_type, val_type, v)) - - - elif isinstance(node.value, ast.List) and self._with_go: - guess_type = None - for elt in node.value.elts: - if isinstance(elt, ast.Num): - if isinstance(elt.n, int): - guess_type = 'int' - else: - guess_type = 'float64' - elif isinstance(elt, ast.Str): - guess_type = 'string' - - if guess_type: - t = self.visit(target) - v = self.visit(node.value) - writer.write('%s = __go__array__(%s) << %s' %(t, guess_type, v)) - else: - raise SyntaxError(self.format_error('can not determine type of array')) - - elif isinstance(target, Subscript): - name = self.visit(target.value) ## target.value may have "returns_type" after being visited - - if isinstance(target.slice, ast.Ellipsis): - #code = '%s["$wrapped"] = %s' %(self.visit(target.value), self.visit(node.value)) - code = '%s[...] = %s' %(self.visit(target.value), self.visit(node.value)) - - elif isinstance(target.slice, ast.Slice): - code = '%s.__setslice__(%s, %s)' %(self.visit(target.value), self.visit(target.slice), self.visit(node.value)) - - elif self._with_dart or self._with_ll or self._with_glsl or self._with_go: - code = '%s[ %s ] = %s' - code = code % (self.visit(target.value), self.visit(target.slice.value), self.visit(node.value)) - - elif self._with_js: - s = self.visit(target.slice.value) - if isinstance(target.slice.value, ast.Num) or isinstance(target.slice.value, ast.BinOp): - code = '%s[ %s ] = %s' % (self.visit(target.value), s, self.visit(node.value)) - elif self._with_direct_keys: - code = '%s[ %s ] = %s' % (self.visit(target.value), s, self.visit(node.value)) - else: - check_array = '__ternary_operator__( instanceof(%s,Array), JSON.stringify(%s), %s )' %(s, s, s) - code = '%s[ __ternary_operator__(%s.__uid__, %s) ] = %s' %(self.visit(target.value), s, check_array, self.visit(node.value)) - - elif name in self._func_typedefs and self._func_typedefs[name] == 'list': - code = '%s[%s] = %s'%(name, self.visit(target.slice.value), self.visit(node.value)) - - else: - code = "__get__(__get__(%s, '__setitem__'), '__call__')([%s, %s], JSObject())" - code = code % (self.visit(target.value), self.visit(target.slice.value), self.visit(node.value)) - - writer.write(code) - - elif isinstance(target, Attribute): - self._in_assign_target = True - target_value = self.visit(target.value) ## target.value may have "returns_type" after being visited - self._in_assign_target = False - typedef = None - if isinstance(target.value, Name): - if target.value.id == 'self' and isinstance(self._catch_attributes, set): - self._catch_attributes.add( target.attr ) - typedef = self.get_typedef( instance=target.value ) - elif hasattr(target.value, 'returns_type'): - typedef = self.get_typedef( class_name=target.value.returns_type ) - - ##################################### - - if self._with_js or self._with_dart or self._with_go: - writer.write( '%s.%s=%s' %(target_value, target.attr, self.visit(node.value)) ) - elif typedef and target.attr in typedef.properties and 'set' in typedef.properties[ target.attr ]: - setter = typedef.properties[ target.attr ]['set'] - writer.write( '%s( [%s, %s], JSObject() )' %(setter, target_value, self.visit(node.value)) ) - - #elif typedef and target.attr in typedef.class_attributes: - # writer.write( '''%s['__class__']['%s'] = %s''' %(target_value, target.attr, self.visit(node.value))) - - elif typedef and target.attr in typedef.attributes: - writer.write( '%s.%s = %s' %(target_value, target.attr, self.visit(node.value))) - - elif typedef and typedef.parents: - parent_prop = typedef.check_for_parent_with( property=target.attr ) - #parent_classattr = typedef.check_for_parent_with( class_attribute=target.attr ) - parent_setattr = typedef.check_for_parent_with( method='__setattr__' ) - if parent_prop and 'set' in parent_prop.properties[target.attr]: - setter = parent_prop.properties[target.attr]['set'] - writer.write( '%s( [%s, %s], JSObject() )' %(setter, target_value, self.visit(node.value)) ) - - #elif parent_classattr: - # writer.write( "__%s_attrs.%s = %s" %(parent_classattr.name, target.attr, self.visit(node.value)) ) - - elif parent_setattr: - func = parent_setattr.get_pythonjs_function_name( '__setattr__' ) - writer.write( '%s([%s, "%s", %s], JSObject() )' %(func, target_value, target.attr, self.visit(node.value)) ) - - elif '__setattr__' in typedef.methods: - func = typedef.get_pythonjs_function_name( '__setattr__' ) - writer.write( '%s([%s, "%s", %s], JSObject() )' %(func, target_value, target.attr, self.visit(node.value)) ) - - else: - code = '__set__(%s, "%s", %s)' % ( - target_value, - target.attr, - self.visit(node.value) - ) - writer.write(code) - - elif typedef and '__setattr__' in typedef.methods: - func = typedef.get_pythonjs_function_name( '__setattr__' ) - log('__setattr__ in instance typedef.methods - func:%s target_value:%s target_attr:%s' %(func, target_value, target_attr)) - writer.write( '%s([%s, "%s", %s], JSObject() )' %(func, target_value, target.attr, self.visit(node.value)) ) - - - else: - code = '__set__(%s, "%s", %s)' % ( - target_value, - target.attr, - self.visit(node.value) - ) - writer.write(code) - - elif isinstance(target, Name) and self._with_glsl: ## assignment to variable - if target.id not in self._typedef_vars: - raise SyntaxError(self.format_error('untyped variable')) - node_value = self.visit( node.value ) ## node.value may have extra attributes after being visited - - if node_value in self._typedef_vars: - writer.write('%s = %s' % (self.visit(target), self.visit(node.value))) - - elif isinstance(node.value, ast.Subscript) and isinstance(node.value.slice, ast.Ellipsis): - writer.write('glsl_inline_assign_from_iterable("%s", "%s", %s)'%(self._typedef_vars[target.id], target.id, self.visit(node.value.value)) ) - - else: - - ## also assign variable in current javascript scope ## - if not isinstance(node.value, (ast.BinOp, ast.Call)): - if isinstance(node.value, ast.Subscript) and isinstance(node.value.slice, ast.Slice): - x = node_value.split('(')[-1].split(')')[0].split('[')[0] - writer.write('glsl_inline_push_js_assign("%s", %s.__getslice__(%s))'%(target.id, x, self.visit(node.value.slice)) ) - else: - writer.write('glsl_inline_push_js_assign("%s", %s)'%(target.id, self.visit(node.value)) ) - else: - writer.write('%s = %s' % (target.id, self.visit(node.value))) - - return None - - - elif isinstance(target, Name): ## assignment to variable - node_value = self.visit( node.value ) ## node.value may have extra attributes after being visited - - if writer.is_at_global_level(): - log('GLOBAL: %s : %s'%(target.id, node_value)) - self._globals[ target.id ] = None - self._global_nodes[ target.id ] = node.value - - if isinstance(node.value, Call) and hasattr(node.value.func, 'id') and node.value.func.id in self._classes: - self._instances[ target.id ] = node.value.func.id ## keep track of instances - elif isinstance(node.value, Call) and isinstance(node.value.func, Name) and node.value.func.id in self._function_return_types: - self._instances[ target.id ] = self._function_return_types[ node.value.func.id ] - elif isinstance(node.value, Call) and isinstance(node.value.func, Attribute) and isinstance(node.value.func.value, Name) and node.value.func.value.id in self._instances: - typedef = self.get_typedef( node.value.func.value ) - method = node.value.func.attr - if method in typedef.methods: - func = typedef.get_pythonjs_function_name( method ) - if func in self._function_return_types: - self._instances[ target.id ] = self._function_return_types[ func ] - else: - writer.write('## %s - unknown return type for: %s' % (typedef.name, func)) - else: - writer.write('## %s - not a method: %s' %(typedef.name, method)) - - elif isinstance(node.value, Name) and node_value in self._instances: ## if this is a simple copy: "a = b" and "b" is known to be of some class - self._instances[ target.id ] = self._instances[ node_value ] - elif isinstance(node.value, BinOp) and hasattr(node.value, 'operator_overloading') and node.value.operator_overloading in self._function_return_types: - self._instances[ target.id ] = self._function_return_types[ node.value.operator_overloading ] - elif hasattr(node.value, 'returns_type'): - self._instances[ target.id ] = node.value.returns_type - elif target.id in self._instances: - if target.id in self._globals: - pass - else: - log('--forget: %s'%target.id) - type = self._instances.pop( target.id ) - log('----%s'%type) - - if target.id in self._instances: - type = self._instances[ target.id ] - log('typed assignment: %s is-type %s' %(target.id,type)) - if writer.is_at_global_level(): - self._globals[ target.id ] = type - log('known global:%s - %s'%(target.id,type)) - - if self._with_static_type: - if type == 'list': - self._global_typed_lists[ target.id ] = set() - elif type == 'tuple': - self._global_typed_tuples[ target.id ] = set() - elif type == 'dict': - self._global_typed_dicts[ target.id ] = set() - - writer.write('%s = %s' % (self.visit(target), node_value)) - else: - if target.id in self._globals and self._globals[target.id] is None: - self._globals[target.id] = type - self._instances[ target.id ] = type - log('set global type: %s'%type) - - writer.write('%s = %s' % (self.visit(target), node_value)) - - #elif self._with_dart and writer.is_at_global_level(): - # writer.write('JS("var %s = %s")' % (self.visit(target), node_value)) - else: - writer.write('%s = %s' % (self.visit(target), node_value)) - - elif self._with_lua: ## Tuple - lua supports destructured assignment - elts = [self.visit(e) for e in target.elts] - writer.write('%s = %s' % (','.join(elts), self.visit(node.value))) - - else: # it's a Tuple - id = self.identifier - self.identifier += 1 - r = '__r_%s' % id - writer.write('var(%s)' % r) - writer.write('%s = %s' % (r, self.visit(node.value))) - for i, target in enumerate(target.elts): - if isinstance(target, Attribute): - code = '__set__(%s, "%s", %s[%s])' % ( - self.visit(target.value), - target.attr, - r, - i - ) - writer.write(code) - elif self._with_js or self._with_dart: - writer.write("%s = %s[%s]" % (self.visit(target), r, i)) - else: - fallback = "__get__(__get__(%s, '__getitem__'), '__call__')([%s], __NULL_OBJECT__)" %(r, i) - writer.write("%s = __ternary_operator__(instanceof(%s,Array), %s[%s], %s)" % (self.visit(target), r, r,i, fallback )) - - def visit_Print(self, node): - writer.write('print(%s)' % ', '.join(map(self.visit, node.values))) - - def visit_Str(self, node): - s = node.s.replace('\\','\\\\').replace('\n', '\\n').replace('\r', '\\r').replace('\0', '\\0') - s = s.replace('\"', '\\"') - - if self._with_dart and s == '\\0': ## TODO other numbers - return 'new(String.fromCharCode(0))' - - elif self._with_js or self._with_dart: - return '"%s"' %s.encode('utf-8') - else: - if len(s) == 0: - return '""' - elif s.startswith('"') or s.endswith('"'): - return "'''%s'''" %s.encode('utf-8') - else: - return '"""%s"""' %s.encode('utf-8') - - def visit_Expr(self, node): - if node.lineno < len(self._source): - src = self._source[ node.lineno ] - ## TODO raise SyntaxErrors with the line number and line source - self._line_number = node.lineno - self._line = src - - use_runtime_errors = not (self._with_js or self._with_ll or self._with_dart or self._with_coffee or self._with_lua or self._with_go) - use_runtime_errors = use_runtime_errors and self._with_runtime_exceptions - - if use_runtime_errors: - writer.write('try:') - writer.push() - - line = self.visit(node.value) - if line: - #writer.write('('+line+')') - writer.write( line ) - elif use_runtime_errors: - writer.write('pass') - - if use_runtime_errors: - writer.pull() - writer.write('except:') - writer.push() - if node.lineno-1 < len(self._source): - src = self._source[ node.lineno-1 ] - src = src.replace('"', '\\"') - src = 'line %s: %s' %(node.lineno, src.strip()) - writer.write('console.trace()') - writer.write('console.error(__exception__, __exception__.message)') - writer.write('console.error("""%s""")' %src) - writer.write('raise RuntimeError("""%s""")' %src) - else: - writer.write('raise RuntimeError("no source code")') - - writer.pull() - - - def visit_Call(self, node): - if isinstance(node.func, ast.Lambda): ## inlined and called lambda "(lambda x: x)(y)" - node.func.keep_as_lambda = True - - for a in node.args: - if isinstance(a, ast.Lambda): - a.keep_as_lambda = True - - for kw in node.keywords: - if isinstance(kw.value, ast.Lambda): - kw.value.keep_as_lambda = True - - - name = self.visit(node.func) - if name in typedpython.GO_SPECIAL_CALLS: - name = typedpython.GO_SPECIAL_CALLS[ name ] - args = [self.visit(e) for e in node.args ] - return '%s( %s )' %(name, ','.join(args)) - - if self._with_rpc: - if not self._with_rpc_name: - return '__rpc__( %s, "%s", [%s] )' %(self._with_rpc, name, ','.join([self.visit(a) for a in node.args])) - elif self._with_rpc_name: - if isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id == self._with_rpc_name: - name = name[ len(self._with_rpc_name)+1 : ] - return '__rpc__( %s, "%s", [%s] )' %(self._with_rpc, name, ','.join([self.visit(a) for a in node.args])) - - ############################################### - - if name == 'open': ## do not overwrite window.open ## - name = '__open__' - node.func.id = '__open__' - - ############################################### - if not self._with_dart and isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id in self._typedef_vars and self._typedef_vars[node.func.value.id]=='list': - if node.func.attr == 'append': - #return '%s.append( [%s], __NULL_OBJECT__)' %(node.func.value.id, self.visit(node.args[0]) ) - return '%s.push( %s )' %(node.func.value.id, self.visit(node.args[0]) ) - else: - raise SyntaxError( self.format_error(node) ) - - - elif self._with_webworker and isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id == 'self' and node.func.attr == 'terminate': - return 'self.postMessage({"type":"terminate"})' - - elif self._use_threading and isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id == 'threading': - if node.func.attr == 'start_new_thread' or node.func.attr == '_start_new_thread': - return '__start_new_thread( %s, %s )' %(self.visit(node.args[0]), self.visit(node.args[1])) - elif node.func.attr == 'start_webworker': - return '__start_new_thread( %s, %s )' %(self.visit(node.args[0]), self.visit(node.args[1])) - else: - raise SyntaxError( self.format_error(node.func.attr) ) - - elif self._with_webworker and name in self._global_functions: - node.calling_from_worker = True - args = [self.visit(arg) for arg in node.args] - return 'self.postMessage({"type":"call", "function":"%s", "args":[%s]})' %(name, ','.join(args)) - - elif self._with_js and self._use_array and name == 'array': - args = [self.visit(arg) for arg in node.args] - #return 'array.__call__([%s], __NULL_OBJECT__)' %','.join(args) ## this breaks `arr[ INDEX ]` - return '__js_typed_array(%s)' %','.join(args) - - ######################################### - if isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id == 'numpy' and node.func.attr == 'array': - args = [self.visit(arg) for arg in node.args] - if node.keywords: - kwargs = [ '%s=%s' %(x.arg, self.visit(x.value)) for x in node.keywords] - return 'numpy.array(%s, %s)' %( ','.join(args), ','.join(kwargs) ) - else: - return 'numpy.array(%s)' %','.join(args) - - elif isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id == 'pythonjs' and node.func.attr == 'configure': - for kw in node.keywords: - if kw.arg == 'javascript': - if kw.value.id == 'True': - self._with_js = True - writer.with_javascript = True - elif kw.value.id == 'False': - self._with_js = False - writer.with_javascript = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'dart': - if kw.value.id == 'True': - self._with_dart = True - elif kw.value.id == 'False': - self._with_dart = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'coffee': - if kw.value.id == 'True': - self._with_coffee = True - elif kw.value.id == 'False': - self._with_coffee = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'lua': - if kw.value.id == 'True': - self._with_lua = True - elif kw.value.id == 'False': - self._with_lua = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'inline_functions': - if kw.value.id == 'True': - self._with_inline = True - elif kw.value.id == 'False': - self._with_inline = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'runtime_exceptions': - if kw.value.id == 'True': - self._with_runtime_exceptions = True - elif kw.value.id == 'False': - self._with_runtime_exceptions = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'direct_keys': - if kw.value.id == 'True': - self._with_direct_keys = True - elif kw.value.id == 'False': - self._with_direct_keys = False - else: - raise SyntaxError( self.format_error(node) ) - - elif kw.arg == 'direct_operator': - if kw.value.s.lower() == 'none': - self._direct_operators = set() - else: - self._direct_operators.add( kw.value.s ) - - else: - raise SyntaxError( self.format_error('invalid keyword option') ) - - elif self._with_ll or name == 'inline' or self._with_glsl: - F = self.visit(node.func) - args = [self.visit(arg) for arg in node.args] - if hasattr(self, '_in_gpu_method') and self._in_gpu_method and isinstance(node.func, ast.Attribute): - fv = self.visit(node.func.value) - if fv == 'self': - clsname = self._in_gpu_method - args.insert(0, 'self') - else: - fvt = fv.split('.')[-1] - clsname = self._typedef_vars[ fvt ] - args.insert(0, fv) - - F = '%s_%s' %(clsname, node.func.attr) - - elif isinstance(node.func, ast.Attribute) and isinstance(node.func.value, ast.Name) and node.func.value.id in self._typedef_vars: - #raise RuntimeError(node.func.value.id) - clsname = self._typedef_vars[ node.func.value.id ] - F = '%s_%s' %(clsname, node.func.attr) - args.insert(0, node.func.value.id) - - - if node.keywords: - args.extend( [self.visit(x.value) for x in node.keywords] ) - return '%s(%s)' %( F, ','.join(args) ) - - else: - return '%s(%s)' %( F, ','.join(args) ) - - elif self._with_go: - args = list( map(self.visit, node.args) ) - if node.keywords: - args.extend( ['%s=%s'%(x.arg,self.visit(x.value)) for x in node.keywords] ) - if node.starargs: - args.append('*%s' %self.visit(node.starargs)) - - if isinstance(node.func, Name) and node.func.id in self._js_classes: - return '__new__%s(%s)' %( self.visit(node.func), ','.join(args) ) - else: - return '%s(%s)' %( self.visit(node.func), ','.join(args) ) - - elif self._with_js or self._with_dart: - args = list( map(self.visit, node.args) ) - - if name in self._generator_functions: - return ' new(%s(%s))' %(name, ','.join(args)) - - elif self._with_dart and name in self._builtin_functions_dart: - if args: - return self._builtin_functions_dart[name] % ','.join(args) - else: - return self._builtin_functions_dart[name] - - elif name in self._builtin_functions and self._builtin_functions[name]: ## inlined js - if args: - return self._builtin_functions[name] % ','.join(args) - else: - return self._builtin_functions[name] - - elif name == 'new': - assert len(args) == 1 - return 'new(%s)' %args[0] - - elif name == 'isinstance': - assert len(args) == 2 - if args[1] == 'dict': - args[1] = 'Object' ## this fails when testing "isinstance(a, dict)==False" when a is an instance of some class. - elif args[1] == 'list': - args[1] = 'Array' - return 'instanceof(%s, %s)' %(args[0], args[1]) - - elif isinstance(node.func, ast.Attribute) and not self._with_dart: ## special method calls - anode = node.func - self._in_assign_target = True - method = self.visit( node.func ) - self._in_assign_target = False - if anode.attr == 'get' and len(args) > 0 and len(args) <= 2: - return '__jsdict_get(%s, %s)' %(self.visit(anode.value), ','.join(args) ) - - elif anode.attr == 'set' and len(args)==2: - return '__jsdict_set(%s, %s)' %(self.visit(anode.value), ','.join(args)) - - elif anode.attr == 'keys' and not args: - return '__jsdict_keys(%s)' %self.visit(anode.value) - - elif anode.attr == 'values' and not args: - return '__jsdict_values(%s)' %self.visit(anode.value) - - elif anode.attr == 'items' and not args: - return '__jsdict_items(%s)' %self.visit(anode.value) - - elif anode.attr == 'pop': - if args: - return '__jsdict_pop(%s, %s)' %(self.visit(anode.value), ','.join(args) ) - else: - return '__jsdict_pop(%s)' %self.visit(anode.value) - - elif anode.attr == 'split' and not args: - return '__split_method(%s)' %self.visit(anode.value) - - elif anode.attr == 'sort' and not args: - return '__sort_method(%s)' %self.visit(anode.value) - - elif anode.attr == 'replace' and len(node.args)==2: - return '__replace_method(%s, %s)' %(self.visit(anode.value), ','.join(args) ) - - else: - ctx = '.'.join( self.visit(node.func).split('.')[:-1] ) - if node.keywords: - kwargs = [ '%s:%s'%(x.arg, self.visit(x.value)) for x in node.keywords ] - - if args: - if node.starargs: - a = ( method, ctx, ','.join(args), self.visit(node.starargs), ','.join(kwargs) ) - ## note: this depends on the fact that [].extend in PythonJS returns self (this), - ## which is different from regular python where list.extend returns None - return '%s.apply( %s, [].extend([%s]).extend(%s).append({%s}) )' %a - else: - return '%s(%s, {%s})' %( method, ','.join(args), ','.join(kwargs) ) - - else: - if node.starargs: - a = ( self.visit(node.func),ctx, self.visit(node.starargs), ','.join(kwargs) ) - return '%s.apply(%s, [].extend(%s).append({%s}) )' %a - - else: - return '%s({%s})' %( method, ','.join(kwargs) ) - - else: - if node.starargs: - a = ( self.visit(node.func), ctx, ','.join(args), self.visit(node.starargs) ) - return '%s.apply(%s, [].extend([%s]).extend(%s))' %a - - else: - return '%s(%s)' %( method, ','.join(args) ) - - - elif isinstance(node.func, Name) and node.func.id in self._js_classes: - if node.keywords: - kwargs = [ '%s:%s'%(x.arg, self.visit(x.value)) for x in node.keywords ] - if args: - a = ','.join(args) - return 'new( %s(%s, {%s}) )' %( self.visit(node.func), a, ','.join(kwargs) ) - else: - return 'new( %s({%s}) )' %( self.visit(node.func), ','.join(kwargs) ) - else: - if node.kwargs: - args.append( self.visit(node.kwargs) ) - - a = ','.join(args) - return 'new( %s(%s) )' %( self.visit(node.func), a ) - - elif name in self._global_functions and self._with_inline and not self._with_lua: - return self.inline_function( node ) - - elif self._with_dart: ## ------------------ DART -------------------------------------- - - if isinstance(node.func, ast.Attribute): ## special method calls - anode = node.func - self._in_assign_target = True - method = self.visit( node.func ) - self._in_assign_target = False - - if anode.attr == 'replace' and len(node.args)==2: - return '__replace_method(%s, %s)' %(self.visit(anode.value), ','.join(args) ) - elif anode.attr == 'split' and len(node.args)==0: - return '__split_method(%s)' %self.visit(anode.value) - elif anode.attr == 'upper' and len(node.args)==0: - return '__upper_method(%s)' %self.visit(anode.value) - elif anode.attr == 'lower' and len(node.args)==0: - return '__lower_method(%s)' %self.visit(anode.value) - - ## default ## - if node.keywords: - kwargs = ','.join( ['%s=%s'%(x.arg, self.visit(x.value)) for x in node.keywords] ) - if args: - return '%s(%s, %s)' %( self.visit(node.func), ','.join(args), kwargs ) - else: - return '%s( %s )' %( self.visit(node.func), kwargs ) - - else: - a = ','.join(args) - return '%s(%s)' %( self.visit(node.func), a ) - - else: ## ----------------------------- javascript mode ------------------------ - if node.keywords: - kwargs = [ '%s:%s'%(x.arg, self.visit(x.value)) for x in node.keywords ] - if args: - if node.starargs: - a = ( self.visit(node.func), self.visit(node.func), ','.join(args), self.visit(node.starargs), ','.join(kwargs) ) - return '%s.apply( %s, [].extend([%s]).extend(%s).append({%s}) )' %a - else: - return '%s(%s, {%s})' %( self.visit(node.func), ','.join(args), ','.join(kwargs) ) - else: - if node.starargs: - a = ( self.visit(node.func),self.visit(node.func), self.visit(node.starargs), ','.join(kwargs) ) - return '%s.apply(%s, [].extend(%s).append({%s}) )' %a - else: - func_name = self.visit(node.func) - if func_name == 'dict': - return '{%s}' %','.join(kwargs) - else: - return '%s({%s})' %( func_name, ','.join(kwargs) ) - - else: - if node.starargs: - a = ( self.visit(node.func), self.visit(node.func), ','.join(args), self.visit(node.starargs) ) - return '%s.apply(%s, [].extend([%s]).extend(%s))' %a - else: - return '%s(%s)' %( self.visit(node.func), ','.join(args) ) - - - elif isinstance(node.func, Name) and node.func.id in self._generator_functions: - args = list( map(self.visit, node.args) ) - if name in self._generator_functions: - return 'JS("new %s(%s)")' %(name, ','.join(args)) - - elif name == 'new': - tmp = self._with_js - self._with_js = True - args = list( map(self.visit, node.args) ) - self._with_js = tmp - assert len(args) == 1 - return 'new(%s)' %args[0] - - elif isinstance(node.func, Name) and node.func.id in ('JS', 'toString', 'JSObject', 'JSArray', 'var', 'instanceof', 'typeof'): - args = list( map(self.visit, node.args) ) ## map in py3 returns an iterator not a list - if node.func.id == 'var': - for k in node.keywords: - self._instances[ k.arg ] = k.value.id - args.append( k.arg ) - else: - kwargs = map(lambda x: '%s=%s' % (x.arg, self.visit(x.value)), node.keywords) - args.extend(kwargs) - args = ', '.join(args) - return '%s(%s)' % (node.func.id, args) - else: - - ## check if pushing to a global typed list ## - if isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id in self._global_typed_lists and node.func.attr == 'append': - gtype = self._globals[ node.func.value.id ] - if gtype == 'list' and node.func.attr == 'append': - if isinstance(node.args[0], Name): - if node.args[0].id in self._instances: - gset = self._global_typed_lists[ node.func.value.id ] - gset.add( self._instances[node.args[0].id]) - if len(gset) != 1: - raise SyntaxError('global lists can only contain one type: instance "%s" is different' %node.args[0].id) - else: - raise SyntaxError('global lists can only contain one type: instance "%s" is unknown' %node.args[0].id) - - call_has_args_only = len(node.args) and not (len(node.keywords) or node.starargs or node.kwargs) - call_has_args_kwargs_only = len(node.args) and len(node.keywords) and not (node.starargs or node.kwargs) - call_has_args = len(node.args) or len(node.keywords) or node.starargs or node.kwargs - name = self.visit(node.func) - args = None - kwargs = None - - if call_has_args_only: ## lambda only supports simple args for now. - args = ', '.join(map(self.visit, node.args)) - - elif call_has_args_kwargs_only: - args = ', '.join(map(self.visit, node.args)) - kwargs = ', '.join(map(lambda x: '%s:%s' % (x.arg, self.visit(x.value)), node.keywords)) - - elif call_has_args: - args = ', '.join(map(self.visit, node.args)) - kwargs = ', '.join(map(lambda x: '%s=%s' % (x.arg, self.visit(x.value)), node.keywords)) - args_name = '__args_%s' % self.identifier - kwargs_name = '__kwargs_%s' % self.identifier - - writer.append('var(%s, %s)' % (args_name, kwargs_name)) - self.identifier += 1 - - writer.append('%s = [%s]' % (args_name, args)) - - if node.starargs: - writer.append('%s.push.apply(%s, %s)' % (args_name, args_name, self.visit(node.starargs))) - - writer.append('%s = JSObject(%s)' % (kwargs_name, kwargs)) - - if node.kwargs: - kwargs = self.visit(node.kwargs) - writer.write('var(__kwargs_temp)') - writer.write('__kwargs_temp = %s[...]' %kwargs) - #code = "JS('for (var name in %s) { %s[name] = %s[...][name]; }')" % (kwargs, kwargs_name, kwargs) - #code = "for __name in %s: %s[__name] = %s[__name]" % (kwargs, kwargs_name, kwargs) - code = "JS('for (var name in __kwargs_temp) { %s[name] = __kwargs_temp[name]; }')" %kwargs_name - writer.append(code) - - ####################################### - - ## special method calls ## - if isinstance(node.func, ast.Attribute) and node.func.attr in ('get', 'keys', 'values', 'pop', 'items', 'split', 'replace', 'sort') and not self._with_lua: - anode = node.func - if anode.attr == 'get' and len(node.args) > 0 and len(node.args) <= 2: - return '__jsdict_get(%s, %s)' %(self.visit(anode.value), args ) - - elif anode.attr == 'keys' and not args: - return '__jsdict_keys(%s)' %self.visit(anode.value) - - elif anode.attr == 'values' and not args: - return '__jsdict_values(%s)' %self.visit(anode.value) - - elif anode.attr == 'items' and not args: - return '__jsdict_items(%s)' %self.visit(anode.value) - - elif anode.attr == 'pop': - if args: - return '__jsdict_pop(%s, %s)' %(self.visit(anode.value), args ) - else: - return '__jsdict_pop(%s)' %self.visit(anode.value) - - elif anode.attr == 'sort' and not args: - return '__sort_method(%s)' %self.visit(anode.value) - - elif anode.attr == 'split' and len(node.args) <= 1: - if not args: - return '__split_method(%s)' %self.visit(anode.value) - else: - return '__split_method(%s, %s)' %(self.visit(anode.value), args) - - elif anode.attr == 'replace' and len(node.args)==2: - return '__replace_method(%s, %s)' %(self.visit(anode.value), args ) - - else: - return '%s(%s)' %( self.visit(node.func), args ) - - elif not self._with_lua and not self._with_dart and isinstance(node.func, ast.Attribute) and isinstance(node.func.value, Name) and node.func.value.id in self._func_typedefs: - type = self._func_typedefs[ node.func.value.id ] - if type == 'list' and node.func.attr == 'append': - return '%s.push(%s)' %(node.func.value.id, self.visit(node.args[0])) - else: - raise RuntimeError - - elif hasattr(node,'constant') or name in self._builtin_functions: - if args and kwargs: - return '%s([%s], {%s})' %(name, args, kwargs) - elif args: - return '%s([%s], __NULL_OBJECT__)' %(name,args) - elif kwargs: - return '%s([], {%s})' %(name,kwargs) - else: - return '%s()' %name - - elif name in self._global_functions and self._with_inline and not self._with_lua: - return self.inline_function( node ) - - elif call_has_args_only: - if name in self._global_functions: - return '%s( [%s], __NULL_OBJECT__)' %(name,args) - else: - return '__get__(%s, "__call__")([%s], __NULL_OBJECT__)' % (name, args) - - elif call_has_args_kwargs_only: - if name in self._global_functions: - return '%s( [%s], {%s} )' %(name,args, kwargs) - else: - return '__get__(%s, "__call__")([%s], {%s} )' % (name, args, kwargs) - - - elif call_has_args: - if name == 'dict': - return '__get__(%s, "__call__")(%s, JSObject(pointer=%s))' % (name, args_name, kwargs_name) - else: - return '__get__(%s, "__call__")(%s, %s)' % (name, args_name, kwargs_name) - - elif name in self._classes: - return '__get__(%s, "__call__")( )' %name - - elif name in self._builtin_classes: - return '__get__(%s, "__call__")( )' %name - - elif name in self._global_functions: - #return '__get__(%s, "__call__")( JSArray(), JSObject() )' %name ## SLOW ## - return '%s( )' %name ## this is much FASTER ## - - else: - ## if the user is trying to create an instance of some class - ## and that class is define in an external binding, - ## and they forgot to put "from mylibrary import *" in their script (an easy mistake to make) - ## then this fails to call __call__ to initalize the instance, - ## or a factory function was used that was passed the class to make, - ## it will throw this confusing error: - ## Uncaught TypeError: Property 'SomeClass' of object [object Object] is not a function - ## TODO - remove this optimization, or provide the user with a better error message. - - ## So to be safe we still wrap with __get__ and "__call__" - return '__get__(%s, "__call__")( )' %name - - def visit_Lambda(self, node): - args = [self.visit(a) for a in node.args.args] - - ##'__INLINE_FUNCTION__' from typedpython.py - - if hasattr(node, 'keep_as_lambda') or args and args[0]=='__INLINE_FUNCTION__': - ## TODO lambda keyword args - self._in_lambda = True - a = '(lambda %s: %s)' %(','.join(args), self.visit(node.body)) - self._in_lambda = False - return a - else: - node.name = '__lambda__' - node.decorator_list = [] - node.body = [node.body] - b = node.body[-1] - node.body[-1] = ast.Return( b ) - return self.visit_FunctionDef(node) - - def visit_FunctionDef(self, node): - global writer - - if node in self._generator_function_nodes: - log('generator function: %s'%node.name) - self._generator_functions.add( node.name ) - if '--native-yield' in sys.argv: - raise NotImplementedError ## TODO - else: - GeneratorFunctionTransformer( node, compiler=self ) - return - - writer.functions.append(node.name) - - is_worker_entry = False - property_decorator = None - decorators = [] - with_js_decorators = [] - with_dart_decorators = [] - setter = False - return_type = None - return_type_keywords = {} - fastdef = False - javascript = False - inline = False - threaded = self._with_webworker - jsfile = None - - self._typedef_vars = dict() ## clear typed variables: filled in below by @typedef or in visit_Assign - self._gpu_return_types = set() - gpu = False - gpu_main = False - gpu_vectorize = False - gpu_method = False - local_typedefs = [] - typedef_chans = [] - func_expr = None - - ## deprecated? - self._cached_property = None - self._func_typedefs = {} - - if writer.is_at_global_level() and not self._with_webworker and not self._with_glsl: - self._global_functions[ node.name ] = node ## save ast-node - - for decorator in reversed(node.decorator_list): - log('@decorator: %s' %decorator) - if isinstance(decorator, Name) and decorator.id == 'gpu': - gpu = True - - elif isinstance(decorator, Call) and decorator.func.id == 'expression': - assert len(decorator.args)==1 - func_expr = self.visit(decorator.args[0]) - - elif isinstance(decorator, Call) and decorator.func.id in ('typedef', 'typedef_chan'): - c = decorator - assert len(c.args) == 0 and len(c.keywords) - for kw in c.keywords: - #assert isinstance( kw.value, Name) - kwval = self.visit(kw.value) - self._typedef_vars[ kw.arg ] = kwval - self._instances[ kw.arg ] = kwval - self._func_typedefs[ kw.arg ] = kwval - local_typedefs.append( '%s=%s' %(kw.arg, kwval)) - if decorator.func.id=='typedef_chan': - typedef_chans.append( kw.arg ) - writer.write('@__typedef_chan__(%s=%s)' %(kw.arg, kwval)) - else: - writer.write('@__typedef__(%s=%s)' %(kw.arg, kwval)) - - - elif isinstance(decorator, Name) and decorator.id == 'inline': - inline = True - self._with_inline = True - - elif isinstance(decorator, ast.Call) and isinstance(decorator.func, ast.Name) and decorator.func.id == 'webworker': - if not self._with_dart: - threaded = True - assert len(decorator.args) == 1 - jsfile = decorator.args[0].s - - elif isinstance(decorator, Call) and isinstance(decorator.func, ast.Name) and decorator.func.id == 'returns': - if decorator.keywords: - for k in decorator.keywords: - key = k.arg - assert key == 'array' or key == 'vec4' - self._gpu_return_types.add(key) ## used in visit_Return ## - return_type_keywords[ key ] = self.visit(k.value) - - else: - assert len(decorator.args) == 1 - assert isinstance( decorator.args[0], Name) - return_type = decorator.args[0].id - if return_type in typedpython.glsl_types: - self._gpu_return_types.add( return_type ) - - elif isinstance(decorator, Attribute) and isinstance(decorator.value, Name) and decorator.value.id == 'gpu': - gpu = True - if decorator.attr == 'vectorize': - gpu_vectorize = True - elif decorator.attr == 'main': - gpu_main = True - elif decorator.attr == 'method': - gpu_method = True - else: - raise NotImplementedError(decorator) - - elif self._with_dart: - with_dart_decorators.append( self.visit(decorator) ) - - elif self._with_js: ## decorators are special in with-js mode - self._in_assign_target = True - with_js_decorators.append( self.visit( decorator ) ) - self._in_assign_target = False - - elif isinstance(decorator, Name) and decorator.id == 'fastdef': - fastdef = True - - elif isinstance(decorator, Name) and decorator.id == 'javascript': - javascript = True - - elif isinstance(decorator, Name) and decorator.id == 'property': - property_decorator = decorator - n = node.name + '__getprop__' - self._decorator_properties[ node.original_name ] = dict( get=n, set=None ) - node.name = n - #if decorator.id == 'cached_property': ## TODO DEPRECATE - # self._cached_property = node.original_name - - elif isinstance(decorator, Attribute) and isinstance(decorator.value, Name) and decorator.value.id in self._decorator_properties: - if decorator.attr == 'setter': - if self._decorator_properties[ decorator.value.id ]['set']: - raise SyntaxError( self.format_error("decorator.setter is used more than once") ) - n = node.name + '__setprop__' - self._decorator_properties[ decorator.value.id ]['set'] = n - node.name = n - setter = True - prop_name = node.original_name - - elif decorator.attr == 'deleter': - raise NotImplementedError - else: - raise RuntimeError - - elif isinstance(decorator, Call) and decorator.func.id == 'custom_operator': - assert len(decorator.args) == 1 - assert isinstance( decorator.args[0], Str ) - op = decorator.args[0].s.decode('utf-8') - if op not in self._custom_operators: - raise RuntimeError( op, self._custom_operators ) - self._custom_operators[ op ] = node.name - - - else: - decorators.append( decorator ) - - - if gpu: - restore_with_glsl = self._with_glsl - self._with_glsl = True - if gpu_main: ## sets float - self._in_gpu_main = True - writer.write('@gpu.main') - - - - if threaded: - if not jsfile: jsfile = 'worker.js' - writer_main.write('%s = "%s"' %(node.name, jsfile)) - self._webworker_functions[ node.name ] = jsfile - - writer = get_webworker_writer( jsfile ) - if len(writer.functions) <= 1: - is_worker_entry = True - ## TODO: two-way list and dict sync - writer.write('__wargs__ = []') - writer.write('def onmessage(e):') - writer.push() - ## need a better way to quit the worker after work is done, check if threading._blocking_callback is waiting, else terminate - writer.write( 'if e.data.type=="execute":' ) - writer.push() - writer.write( '%s.apply(self, e.data.args)'%node.name ) - writer.write( 'if not threading._blocking_callback: self.postMessage({"type":"terminate"})') - writer.pull() - writer.write( 'elif e.data.type=="append": __wargs__[ e.data.argindex ].push( e.data.value )' ) - writer.write( 'elif e.data.type=="__setitem__": __wargs__[ e.data.argindex ][e.data.key] = e.data.value' ) - writer.write( 'elif e.data.type=="return_to_blocking_callback": threading._blocking_callback( e.data.result )' ) - #writer.push() - #writer.write( 'if instanceof(__wargs__[e.data.argindex], Array): __wargs__[ e.data.argindex ][e.data.key] = e.data.value') - #writer.write( 'else: __wargs__[ e.data.argindex ][e.data.key] = e.data.value') - #writer.pull() - - writer.pull() - writer.write('self.onmessage = onmessage' ) - - - - ## force python variable scope, and pass user type information to second stage of translation. - ## the dart backend can use this extra type information for speed and debugging. - ## the Go and GLSL backends require this extra type information. - vars = [] - local_typedef_names = set() - if not self._with_coffee: - try: - local_vars, global_vars = retrieve_vars(node.body) - except SyntaxError as err: - raise SyntaxError( self.format_error(err) ) - - local_vars = local_vars-global_vars - inlined_long = False - if local_vars: - args_typedefs = [] - args = [ a.id for a in node.args.args ] - - for v in local_vars: - usertype = None - if '=' in v: - t,n = v.split('=') ## unpack type and name - if self._with_dart and t in typedpython.simd_types: - t = t[0].upper() + t[1:] - v = '%s=%s' %(n,t) ## reverse - local_typedef_names.add( n ) - if t == 'long' and inlined_long == False: - inlined_long = True - writer.write('''inline("if (__NODEJS__==true) var long = require('long')")''') ## this is ugly - - if n in args: - args_typedefs.append( v ) - else: - local_typedefs.append( v ) - elif v in args or v in local_typedef_names: pass - else: vars.append( v ) - - if args_typedefs: - writer.write('@__typedef__(%s)' %','.join(args_typedefs)) - - if func_expr: - writer.write('@expression(%s)' %func_expr) - - - if not self._with_dart and not self._with_lua and not self._with_js and not javascript and not self._with_glsl: - writer.write('@__pyfunction__') - - if return_type or return_type_keywords: - if return_type_keywords and return_type: - kw = ['%s=%s' %(k,v) for k,v in return_type_keywords.items()] - writer.write('@returns(%s, %s)' %(return_type,','.join(kw)) ) - elif return_type_keywords: - writer.write('@returns(%s)' %','.join( ['%s=%s' %(k,v) for k,v in return_type_keywords.items()] )) - else: - writer.write('@returns(%s)' %return_type) - - if gpu_vectorize: - writer.write('@gpu.vectorize') - if gpu_method: - writer.write('@gpu.method') - - - if self._with_dart: - ## dart supports optional positional params [x=1, y=2], or optional named {x:1, y:2} - ## but not both at the same time. - if node.args.kwarg: - raise SyntaxError( self.format_error('dart functions can not take variable keyword arguments (**kwargs)' ) ) - - for dec in with_dart_decorators: writer.write('@%s'%dec) - - args = [] - offset = len(node.args.args) - len(node.args.defaults) - for i, arg in enumerate(node.args.args): - a = arg.id - dindex = i - offset - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - args.append( '%s=%s' %(a, default_value) ) - else: - args.append( a ) - - if node.args.vararg: - if node.args.defaults: - raise SyntaxError( self.format_error('dart functions can not use variable arguments (*args) and have keyword arguments' ) ) - - args.append('__variable_args__%s' %node.args.vararg) - - writer.write( 'def %s( %s ):' % (node.name, ','.join(args)) ) - - elif self._with_go: - - args = [] - offset = len(node.args.args) - len(node.args.defaults) - for i, arg in enumerate(node.args.args): - a = arg.id - dindex = i - offset - if dindex >= 0 and node.args.defaults: - default = self.visit(node.args.defaults[dindex]) - args.append( '%s=%s' %(a, default)) - else: - args.append( a ) - - if node.args.vararg: - args.append( '*%s' %node.args.vararg ) - - writer.write( 'def %s( %s ):' % (node.name, ','.join(args)) ) - - - elif self._with_js or javascript or self._with_ll or self._with_glsl or self._with_go: - - if self._with_glsl: - writer.write('@__glsl__') - - if node.args.vararg: - #raise SyntaxError( 'pure javascript functions can not take variable arguments (*args)' ) - writer.write('#WARNING - NOT IMPLEMENTED: javascript-mode functions with (*args)') - kwargs_name = node.args.kwarg or '_kwargs_' - - args = [] - offset = len(node.args.args) - len(node.args.defaults) - for i, arg in enumerate(node.args.args): - a = arg.id - dindex = i - offset - if dindex >= 0 and node.args.defaults: - pass - else: - args.append( a ) - - if len(node.args.defaults) or node.args.kwarg: - if args: - writer.write( 'def %s( %s, %s ):' % (node.name, ','.join(args), kwargs_name ) ) - else: - writer.write( 'def %s( %s ):' % (node.name, kwargs_name) ) - else: - writer.write( 'def %s( %s ):' % (node.name, ','.join(args)) ) - - else: - if len(node.args.defaults) or node.args.kwarg or len(node.args.args) or node.args.vararg: - writer.write('def %s(args, kwargs):' % node.name) - else: - writer.write('def %s():' % node.name) - - writer.push() - - ## write local typedefs and var scope ## - a = ','.join( vars ) - if local_typedefs: - if a: a += ',' - a += ','.join(local_typedefs) - writer.write('var(%s)' %a) - - ##################################################################### - if self._with_dart or self._with_glsl or self._with_go: - pass - - elif self._with_js or javascript or self._with_ll: - if node.args.defaults: - kwargs_name = node.args.kwarg or '_kwargs_' - lines = [ 'if (!( %s instanceof Object )) {' %kwargs_name ] - a = ','.join( ['%s: arguments[%s]' %(arg.id, i) for i,arg in enumerate(node.args.args)] ) - lines.append( 'var %s = {%s}' %(kwargs_name, a)) - lines.append( '}') - for a in lines: - writer.write("JS('''%s''')" %a) - - offset = len(node.args.args) - len(node.args.defaults) - for i, arg in enumerate(node.args.args): - dindex = i - offset - if dindex >= 0: - default_value = self.visit( node.args.defaults[dindex] ) - a = (kwargs_name, kwargs_name, arg.id, arg.id, default_value, arg.id, kwargs_name, arg.id) - b = "if (%s === undefined || %s.%s === undefined) {var %s = %s} else {var %s=%s.%s}" %a - c = "JS('''%s''')" %b - writer.write( c ) - - elif self._with_fastdef or fastdef: - offset = len(node.args.args) - len(node.args.defaults) - for i, arg in enumerate(node.args.args): - dindex = i - offset - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - writer.write('''JS("var %s = kwargs[ '%s' ]")''' % (arg.id, arg.id)) - writer.write( '''JS("if (%s == undefined) %s = %s")'''%(arg.id, arg.id, default_value) ) - - else: - writer.write("""JS("var %s = args[ %s ]")""" % (arg.id, i)) - - elif self._with_lua: - writer.write( 'var(%s)' %','.join([arg.id for arg in node.args.args])) - offset = len(node.args.args) - len(node.args.defaults) - for i,arg in enumerate(node.args.args): - dindex = i - offset - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - writer.write("%s = kwargs.%s or %s" % (arg.id, arg.id, default_value)) - else: - writer.write( "%s = args[ %s ]" %(arg.id, i+1) ) - - elif len(node.args.defaults) or len(node.args.args) or node.args.vararg or node.args.kwarg: - - # new pythonjs' python function arguments handling - # create the structure representing the functions arguments - # first create the defaultkwargs JSObject - if not self._with_coffee: - writer.write('var(__sig__, __args__)') - - L = len(node.args.defaults) - kwargsdefault = map(lambda x: keyword(self.visit(x[0]), x[1]), zip(node.args.args[-L:], node.args.defaults)) - kwargsdefault = Call( - Name('JSObject', None), - [], - kwargsdefault, - None, - None - ) - args = Call( - Name('JSArray', None), - map(lambda x: Str(x.id), node.args.args), - [], - None, - None - ) - keywords = list([ - keyword(Name('kwargs', None), kwargsdefault), - keyword(Name('args', None), args), - ]) - if node.args.vararg: - keywords.append(keyword(Name('vararg', None), Str(node.args.vararg))) - if node.args.kwarg: - keywords.append(keyword(Name('varkwarg', None), Str(node.args.kwarg))) - - # create a JS Object to store the value of each parameter - signature = ', '.join(map(lambda x: '%s:%s' % (self.visit(x.arg), self.visit(x.value)), keywords)) - writer.write('__sig__ = {%s}' % signature) - - # First check the arguments are well formed - # ie. that this function is not a callback of javascript code - - if not self._with_go: - writer.write("""if instanceof(args,Array) and Object.prototype.toString.call(kwargs) == '[object Object]' and arguments.length==2:""") - writer.push() - writer.write('pass') # do nothing if it's not called from javascript - writer.pull() - - writer.write('else:') - writer.push() - # If it's the case, move use ``arguments`` to ``args`` - writer.write('args = Array.prototype.slice.call(arguments, 0, __sig__.args.length)') - # This means you can't pass keyword argument from javascript but we already knew that - writer.write('kwargs = JSObject()') - writer.pull() - - - - writer.write('__args__ = __getargs__("%s", __sig__, args, kwargs)' %node.name) - # # then for each argument assign its value - for arg in node.args.args: - writer.write("""JS("var %s = __args__['%s']")""" % (arg.id, arg.id)) - if node.args.vararg: - writer.write("""JS("var %s = __args__['%s']")""" % (node.args.vararg, node.args.vararg)) - if node.args.kwarg: - writer.write("""JS('var %s = __args__["%s"]')""" % (node.args.kwarg, node.args.kwarg)) - else: - log('(function has no arguments)') - - ################# function body ################# - - - if threaded and is_worker_entry: - for i,arg in enumerate(node.args.args): - writer.write( '%s = __webworker_wrap(%s, %s)' %(arg.id, arg.id, i)) - writer.write('__wargs__.push(%s)'%arg.id) - - #if self._cached_property: ## DEPRECATED - # writer.write('if self["__dict__"]["%s"]: return self["__dict__"]["%s"]' %(self._cached_property, self._cached_property)) - - self._return_type = None # tries to catch a return type in visit_Return - - ## write function body ## - ## if sleep() is called or a new webworker is started, the following function body must be wrapped in - ## a closure callback and called later by setTimeout - timeouts = [] - #continues = [] - for b in node.body: - - if self._use_threading and isinstance(b, ast.Assign) and isinstance(b.value, ast.Call): - if isinstance(b.value.func, ast.Attribute) and isinstance(b.value.func.value, Name) and b.value.func.value.id == 'threading': - if b.value.func.attr == 'start_new_thread': - self.visit(b) - writer.write('__run__ = True') - writer.write('def __callback%s():' %len(timeouts)) - writer.push() - ## workerjs for nodejs requires at least 100ms to initalize onmessage/postMessage - timeouts.append(0.2) - continue - elif b.value.func.attr == 'start_webworker': - self.visit(b) - writer.write('__run__ = True') - writer.write('def __callback%s():' %len(timeouts)) - writer.push() - ## workerjs for nodejs requires at least 100ms to initalize onmessage/postMessage - timeouts.append(0.2) - continue - - elif self._with_webworker and isinstance(b, ast.Assign) and isinstance(b.value, ast.Call) and isinstance(b.value.func, ast.Name) and b.value.func.id in self._global_functions: - #assert b.value.calling_from_worker - #raise SyntaxError(b) - self.visit(b) - writer.write('def __blocking( %s ):' %self.visit(b.targets[0])) - writer.push() - timeouts.append('BLOCKING') - continue - - - elif self._use_sleep: - c = b - if isinstance(b, ast.Expr): - b = b.value - - if isinstance(b, ast.Call) and isinstance(b.func, ast.Name) and b.func.id == 'sleep': - writer.write('__run__ = True') - writer.write('def __callback%s():' %len(timeouts)) - writer.push() - timeouts.append( self.visit(b.args[0]) ) - continue - - elif isinstance(b, ast.While): ## TODO - has_sleep = False - for bb in b.body: - if isinstance(bb, ast.Expr): - bb = bb.value - if isinstance(bb, ast.Call) and isinstance(bb.func, ast.Name) and bb.func.id == 'sleep': - has_sleep = float(self.visit(bb.args[0])) - - if has_sleep > 0.0: - has_sleep = int(has_sleep*1000) - #writer.write('__run_while__ = True') - writer.write('__continue__ = True') - writer.write('def __while():') - writer.push() - - for bb in b.body: - if isinstance(bb, ast.Expr): - bb = bb.value - if isinstance(bb, ast.Call) and isinstance(bb.func, ast.Name) and bb.func.id == 'sleep': - continue - #TODO - split body and generate new callback - now sleep is only valid at the end of the while loop - - else: - e = self.visit(bb) - if e: writer.write( e ) - - writer.write( 'if %s: __run_while__ = True' %self.visit(b.test)) - writer.write( 'else: __run_while__ = False') - - writer.write('if __run_while__: setTimeout(__while, %s)' %(has_sleep)) - writer.write('elif __continue__: setTimeout(__callback%s, 0)' %len(timeouts)) - - writer.pull() - - writer.write('setTimeout(__while, 0)') - writer.write('__run__ = True') - writer.write('def __callback%s():' %len(timeouts)) - writer.push() - timeouts.append(None) - continue - - else: - self.visit(b) - - continue - - b = c ## replace orig b - - self.visit(b) - - i = len(timeouts)-1 - while timeouts: - ms = timeouts.pop() - if ms == 'BLOCKING': - writer.write( 'threading._blocking_callback = None') - writer.pull() - writer.write('threading._blocking_callback = __blocking') - elif ms is not None: - writer.pull() - - ms = float(ms) - ms *= 1000 - writer.write('if __run__: setTimeout(__callback%s, %s)' %(i, ms)) - writer.write('elif __continue__: setTimeout(__callback%s, %s)' %(i+1, ms)) - i -= 1 - - if self._return_type: ## check if a return type was caught - if return_type: - assert return_type == self._return_type - else: - return_type = self._return_type - self._function_return_types[ node.name ] = self._return_type - self._return_type = None - - - ############################################################ - ### DEPRECATED - if setter and 'set' in self._injector: ## inject extra code - value_name = node.args.args[1].id - inject = [ - 'if self.property_callbacks["%s"]:' %prop_name, - 'self.property_callbacks["%s"](["%s", %s, self], JSObject())' %(prop_name, prop_name, value_name) - ] - writer.write( ' '.join(inject) ) - - elif self._injector and node.original_name == '__init__': - if 'set' in self._injector: - writer.write( 'self.property_callbacks = JSObject()' ) - if 'init' in self._injector: - writer.write('if self.__class__.init_callbacks.length:') - writer.push() - writer.write('for callback in self.__class__.init_callbacks:') - writer.push() - writer.write('callback( [self], JSObject() )') - writer.pull() - writer.pull() - ############################################################ - - writer.pull() ## end function body - - #if not self._with_dart and not self._with_lua and not self._with_js and not javascript and not self._with_glsl: - # writer.write('%s.pythonscript_function=True'%node.name) - - - if gpu: - self._with_glsl = restore_with_glsl - if gpu_main: - self._in_gpu_main = False - - self._typedef_vars = dict() ## clear typed variables - - if inline: - self._with_inline = False - - if self._in_js_class: - writer = writer_main - return - - - types = [] - for x in zip(node.args.args[-len(node.args.defaults):], node.args.defaults): - key = x[0] - value = x[1] - if isinstance(value, ast.Name): - value = value.id - else: - value = type(value).__name__.lower() - types.append( '%s : "%s"' %(self.visit(key), value) ) - - - if not self._with_dart and not self._with_lua: ## Dart functions can not have extra attributes? - if self._introspective_functions: - ## note, in javascript function.name is a non-standard readonly attribute, - ## the compiler creates anonymous functions with name set to an empty string. - writer.write('%s.NAME = "%s"' %(node.name,node.name)) - - writer.write( '%s.args_signature = [%s]' %(node.name, ','.join(['"%s"'%n.id for n in node.args.args])) ) - defaults = ['%s:%s'%(self.visit(x[0]), self.visit(x[1])) for x in zip(node.args.args[-len(node.args.defaults):], node.args.defaults) ] - writer.write( '%s.kwargs_signature = {%s}' %(node.name, ','.join(defaults)) ) - if self._with_fastdef or fastdef: - writer.write('%s.fastdef = True' %node.name) - - writer.write( '%s.types_signature = {%s}' %(node.name, ','.join(types)) ) - - if return_type: - writer.write('%s.return_type = "%s"'%(node.name, return_type)) - - - - if self._with_js and with_js_decorators: - for dec in with_js_decorators: - if '.prototype.' in dec: - ## these with-js functions are assigned to a some objects prototype, - ## here we assume that they depend on the special "this" variable, - ## therefore this function can not be marked as f.pythonscript_function, - ## because we need __get__(f,'__call__') to dynamically bind "this" - #writer.write( '%s=%s'%(dec,node.name) ) - - ## TODO - @XXX.prototype.YYY sets properties with enumerable as False, - ## this fixes external javascript that is using `for (var i in anArray)` - head, tail = dec.split('.prototype.') - a = (head, tail, node.name) - ## these props need to be writeable so that webworkers can redefine methods like: push, __setitem__ - ## note to overwrite one of these props Object.defineProperty needs to be called again (ob.xxx=yyy will not work) - writer.write('Object.defineProperty(%s.prototype, "%s", {enumerable:False, value:%s, writeable:True, configurable:True})' %a) - - elif dec == 'javascript': - pass - elif dec == 'fastdef': - pass - else: - ## TODO: check ifdecorators in javascript mode are working properly - writer.write( '%s = __get__(%s,"__call__")( [%s], {} )' %(node.name, dec, node.name)) - - - - # apply decorators - for decorator in decorators: - assert not self._with_js - dec = self.visit(decorator) - if dec == 'classmethod': - writer.write( '%s.is_classmethod = True' %node.name) - elif dec == 'staticmethod': - writer.write( '%s.is_staticmethod = True' %node.name) - writer.write( '%s.is_wrapper = True' %node.name) - else: - writer.write('%s = __get__(%s,"__call__")( [%s], JSObject() )' % (node.name, dec, node.name)) - - #if threaded: - # writer.write('%s()' %node.name) - # writer.write('self.termintate()') - - - writer = writer_main - - - #################### loops ################### - ## the old-style for loop that puts a while loop inside a try/except and catches StopIteration, - ## has a problem because at runtime if there is an error inside the loop, it will not show up in a strack trace, - ## the error is slient. FAST_FOR is safer and faster, although it is not strictly Python because in standard - ## Python a list is allowed to grow or string while looping over it. FAST_FOR only deals with a fixed size thing to loop over. - FAST_FOR = True - - def visit_Continue(self, node): - if self._with_js: - writer.write('continue') - else: - writer.write('continue') - return '' - - def visit_Break(self, node): - if self._in_loop_with_else: - writer.write('__break__ = True') - writer.write('break') - - def visit_For(self, node): - if node.orelse: - raise SyntaxError( self.format_error('the syntax for/else is deprecated') ) - - if self._cache_for_body_calls: ## TODO add option for this - for n in node.body: - calls = collect_calls(n) - for c in calls: - log('--call: %s' %c) - log('------: %s' %c.func) - if isinstance(c.func, ast.Name): ## these are constant for sure - i = self._call_ids - writer.write( '''JS('var __call__%s = __get__(%s,"__call__")')''' %(i,self.visit(c.func)) ) - c.func.id = '__call__%s'%i - c.constant = True - self._call_ids += 1 - - if self._with_glsl or self._with_go: - writer.write( 'for %s in %s:' %(self.visit(node.target), self.visit(node.iter)) ) - writer.push() - map(self.visit, node.body) - writer.pull() - return None - - if self._with_rpc_name and isinstance(node.iter, ast.Attribute) and isinstance(node.iter.value, ast.Name) and node.iter.value.id == self._with_rpc_name: - target = self.visit(node.target) - writer.write('def __rpc_loop__():') - writer.push() - writer.write( '%s = __rpc_iter__(%s, "%s")' %(target, self._with_rpc, node.iter.attr) ) - writer.write( 'if %s == "__STOP_ITERATION__": __continue__()' %target) - writer.write( 'else:') - writer.push() - map( self.visit, node.body ) - writer.write( '__rpc_loop__()') - writer.pull() - writer.pull() - writer.write('__rpc_loop__()') - - writer.write('def __continue__():') ## because this def comes after, it needs to be `hoisted` up by the javascript VM - writer.push() - return None - - - iterid = self._iter_ids - self._iter_ids += 1 - - target = node.target - enumtar = None - if isinstance(node.iter, ast.Call) and isinstance(node.iter.func, Name) and node.iter.func.id == 'enumerate': - iter = node.iter.args[0] - if isinstance(target, ast.Tuple): - enumtar = target.elts[0] - target = target.elts[1] - else: - iter = node.iter - - if enumtar: - writer.write('var(%s)'%enumtar.id) - writer.write('%s = 0' %enumtar.id) - - vars = [] - multi_target = [] - - if isinstance(target, ast.Tuple): - vars.append( '__mtarget__%s' %iterid) - for elt in target.elts: - if isinstance(elt, ast.Name): - multi_target.append( elt.id ) - vars.append( elt.id ) - else: - raise NotImplementedError('unknown iterator sub-target type: %s'%target) - elif isinstance(target, ast.Name): - vars.append( target.id ) - else: - raise NotImplementedError('unknown iterator target type: %s'%target) - - - if self._with_ll: - writer.write('for %s in %s:' %(self.visit(target), self.visit(iter))) - writer.push() - map(self.visit, node.body) - writer.pull() - - elif self._with_js or self._with_dart: - if isinstance(iter, ast.Call) and isinstance(iter.func, Name) and iter.func.id in ('range','xrange'): - iter_start = '0' - if len(iter.args) == 2: - iter_start = self.visit(iter.args[0]) - iter_end = self.visit(iter.args[1]) - else: - iter_end = self.visit(iter.args[0]) - - iter_name = target.id - writer.write('var(%s, %s__end__)' %(iter_name, iter_name)) - writer.write('%s = %s' %(iter_name, iter_start)) - writer.write('%s__end__ = %s' %(iter_name, iter_end)) - writer.write('while %s < %s__end__:' %(iter_name, iter_name)) - - writer.push() - map(self.visit, node.body) - writer.write('%s += 1' %iter_name ) - - if enumtar: - writer.write('%s += 1'%enumtar.id) - - writer.pull() - - elif isinstance(iter, ast.Call) and isinstance(iter.func, Name) and iter.func.id in self._generator_functions: - iter_name = self.visit(target) - writer.write('var(%s, __generator__%s)' %(iter_name,iterid)) - writer.write('__generator__%s = %s' %(iterid,self.visit(iter))) - writer.write('while __generator__%s.__done__ != 1:'%iterid) - writer.push() - writer.write('%s = __generator__%s.next()'%(iter_name,iterid)) - map(self.visit, node.body) - writer.pull() - - else: - if multi_target: - writer.write('var(%s)' % ','.join(vars)) - writer.write('for __mtarget__%s in %s:' %(iterid,self.visit(iter))) - writer.push() - for i,elt in enumerate(multi_target): - writer.write('%s = __mtarget__%s[%s]' %(elt,iterid,i)) - - else: - a = self.visit(target) - self._in_assign_target = True - b = self.visit(iter) - self._in_assign_target = False - writer.write('for %s in %s:' %(a, b)) - writer.push() - - - map(self.visit, node.body) - - if enumtar: - writer.write('%s += 1'%enumtar.id) - - writer.pull() - else: - - ## TODO else remove node.target.id from self._instances - if isinstance(iter, Name) and iter.id in self._global_typed_lists: - self._instances[ target.id ] = list( self._global_typed_lists[ iter.id ] )[0] - - - vars.append('__iterator__%s'%iterid) - if not self._with_coffee: - writer.write('var(%s)' % ','.join(vars)) - - - is_range = False - is_generator = False - iter_start = '0' - iter_end = None - if self.FAST_FOR and isinstance(iter, ast.Call) and isinstance(iter.func, Name) and iter.func.id in ('range','xrange'): - is_range = True - if len(iter.args) == 2: - iter_start = self.visit(iter.args[0]) - iter_end = self.visit(iter.args[1]) - else: - iter_end = self.visit(iter.args[0]) - - elif isinstance(iter, ast.Call) and isinstance(iter.func, Name) and iter.func.id in self._generator_functions: - is_generator = True - else: - if hasattr(node, 'lineno'): - src = self._source[ node.lineno-1 ] - src = src.replace('"', '\\"') - err = 'no iterator - line %s: %s' %(node.lineno, src.strip()) - writer.write('__iterator__%s = __get__(__get__(%s, "__iter__", "%s"), "__call__")([], __NULL_OBJECT__)' %(iterid, self.visit(iter), err)) - - else: - writer.write('__iterator__%s = __get__(__get__(%s, "__iter__"), "__call__")([], __NULL_OBJECT__)' %(iterid, self.visit(iter))) - - if is_generator: - iter_name = self.visit(target) - if not self._with_coffee: - writer.write('var(%s, __generator__%s)' %(iter_name, iterid)) - writer.write('__generator__%s = %s' %(iterid,self.visit(iter))) - writer.write('while __generator__%s.__done__ != 1:'%iterid) - writer.push() - writer.write('%s = __generator__%s.next()'%(iter_name,iterid)) - map(self.visit, node.body) - writer.pull() - - - elif is_range: - iter_name = target.id - if not self._with_coffee: - writer.write('var(%s, %s__end__)' %(iter_name, iter_name)) - writer.write('%s = %s' %(iter_name, iter_start)) - writer.write('%s__end__ = %s' %(iter_name, iter_end)) ## assign to a temp variable. - #writer.write('while %s < %s:' %(iter_name, iter_end)) ## this fails with the ternary __add_op - writer.write('while %s < %s__end__:' %(iter_name, iter_name)) - - writer.push() - map(self.visit, node.body) - if self._with_lua: - writer.write('%s = %s + 1' %(iter_name, iter_name) ) - else: - writer.write('%s += 1' %iter_name ) - - if enumtar: - writer.write('%s += 1'%enumtar.id) - - writer.pull() - else: - if not self._with_coffee: - writer.write('var(__next__%s)'%iterid) - writer.write('__next__%s = __get__(__iterator__%s, "next")'%(iterid,iterid)) - writer.write('while __iterator__%s.index < __iterator__%s.length:'%(iterid,iterid)) - - writer.push() - - if multi_target: - writer.write('__mtarget__%s = __next__%s()'%(iterid, iterid)) - for i,elt in enumerate(multi_target): - if self._with_lua: - writer.write('%s = __mtarget__%s[...][%s]' %(elt,iterid,i+1)) - else: - writer.write('%s = __mtarget__%s[%s]' %(elt,iterid,i)) - else: - writer.write('%s = __next__%s()' %(target.id, iterid)) - - map(self.visit, node.body) - - if enumtar: - writer.write('%s += 1'%enumtar.id) - - writer.pull() - - return '' - - _call_ids = 0 - def visit_While(self, node): - if self._cache_while_body_calls: ## TODO add option for this - for n in node.body: - calls = collect_calls(n) - for c in calls: - if isinstance(c.func, ast.Name): ## these are constant for sure - i = self._call_ids - writer.write( '__call__%s = __get__(%s,"__call__")' %(i,self.visit(c.func)) ) - c.func.id = '__call__%s'%i - c.constant = True - self._call_ids += 1 - - if node.orelse: - raise SyntaxError( self.format_error('the syntax while/else is deprecated')) - self._in_loop_with_else = True - writer.write('var(__break__)') - writer.write('__break__ = False') - - self._in_while_test = True - writer.write('while %s:' % self.visit(node.test)) - self._in_while_test = False - writer.push() - map(self.visit, node.body) - writer.pull() - - if node.orelse: - self._in_loop_with_else = False - writer.write('if __break__ == False:') - writer.push() - map(self.visit, node.orelse) - writer.pull() - - def visit_With(self, node): - global writer - - if isinstance( node.context_expr, Name ) and node.context_expr.id == 'glsl': - if not isinstance(node.optional_vars, ast.Name): - raise SyntaxError( self.format_error('wrapper function name must be given: `with glsl as myfunc:`') ) - main_func = None - writer.inline_glsl = True - self._with_glsl = True - for b in node.body: - if isinstance(b, ast.FunctionDef) and b.name == 'main': - main_func = True - writer.write('@__glsl__.%s' %node.optional_vars.id) - a = self.visit(b) - if a: writer.write(a) - self._with_glsl = False - writer.inline_glsl = False - if not main_func: - raise SyntaxError( self.format_error('a function named `main` must be defined as the entry point for the shader program') ) - - elif isinstance( node.context_expr, ast.Call ) and isinstance(node.context_expr.func, ast.Name) and node.context_expr.func.id == 'rpc': - self._with_rpc = self.visit( node.context_expr.args[0] ) - if isinstance(node.optional_vars, ast.Name): - self._with_rpc_name = node.optional_vars.id - for b in node.body: - a = self.visit(b) - if a: writer.write(a) - self._with_rpc = None - self._with_rpc_name = None - - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'webworker': - self._with_webworker = True - writer = get_webworker_writer( 'worker.js' ) - - #writer.write('if typeof(process) != "undefined": requirejs = require("requirejs")') - #writer.write('if typeof(process) != "undefined": requirejs = require') - writer.write('if typeof(require) != "undefined": requirejs = require') ## compatible with nodewebkit - writer.write('else: importScripts("require.js")') - - for b in node.body: - a = self.visit(b) - if a: writer.write(a) - self._with_webworker = False - writer = writer_main - - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'inline': - writer.write('with inline:') - writer.push() - for b in node.body: - a = self.visit(b) - if a: writer.write(a) - writer.pull() - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'lowlevel': - self._with_ll = True - #map(self.visit, node.body) - for b in node.body: - a = self.visit(b) - if a: writer.write(a) - self._with_ll = False - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'javascript': - self._with_js = True - map(self.visit, node.body) - self._with_js = False - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'python': - if not self._with_js: - raise SyntaxError('"with python:" is only used inside of a "with javascript:" block') - self._with_js = False - map(self.visit, node.body) - self._with_js = True - - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'fastdef': - self._with_fastdef = True - map(self.visit, node.body) - self._with_fastdef = False - - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'static': - self._with_static_type = True - map(self.visit, node.body) - self._with_static_type = False - - elif isinstance( node.context_expr, Name ) and node.context_expr.id == 'inline_function': - self._with_inline = True - map(self.visit, node.body) - self._with_inline = False - - elif isinstance( node.context_expr, Name ) and node.context_expr.id in EXTRA_WITH_TYPES: - writer.write('with %s:' %self.visit(node.context_expr)) - writer.push() - for b in node.body: - a = self.visit(b) - if a: writer.write(a) - writer.pull() - - elif isinstance( node.context_expr, ast.Call ) and isinstance(node.context_expr.func, ast.Name) and node.context_expr.func.id in EXTRA_WITH_TYPES: - - restore = self._with_js - self._with_js = True - if node.context_expr.keywords: - assert len(node.context_expr.keywords)==1 - k = node.context_expr.keywords[0].arg - v = self.visit(node.context_expr.keywords[0].value) - a = 'with %s(%s=%s):' %( self.visit(node.context_expr.func), k,v ) - writer.write(a) - else: - writer.write('with %s:' %self.visit(node.context_expr)) - - - self._with_js = restore - - writer.push() - for b in node.body: - a = self.visit(b) - if a: writer.write(a) - writer.pull() - - else: - raise SyntaxError('invalid use of "with" statement') - -EXTRA_WITH_TYPES = ('__switch__', '__default__', '__case__', '__select__') - -class GeneratorFunctionTransformer( PythonToPythonJS ): - ''' - Translates a simple generator function into a class with state-machine that can be iterated over by - calling its next method. - - A `simple generator` is one with no more than three yield statements, and a single for loop: - . the first yield comes before the for loop - . the second yield is the one inside the loop - . the third yield comes after the for loop - - ''' - def __init__(self, node, compiler=None): - assert '_stack' in dir(compiler) - #self.__dict___ = compiler.__dict__ ## share all state - for name in dir(compiler): - if name not in dir(self): - setattr(self, name, (getattr(compiler, name))) - - self._head_yield = False - self.visit( node ) - compiler._addop_ids = self._addop_ids ## note: need to keep id index insync - - def visit_Yield(self, node): - if self._in_head: - writer.write('this.__head_yield = %s'%self.visit(node.value)) - writer.write('this.__head_returned = 0') - self._head_yield = True - else: - writer.write('__yield_return__ = %s'%self.visit(node.value)) - - def visit_Name(self, node): - return 'this.%s' %node.id - - def visit_FunctionDef(self, node): - args = [a.id for a in node.args.args] - writer.write('def %s(%s):' %(node.name, ','.join(args))) - writer.push() - for arg in args: - writer.write('this.%s = %s'%(arg,arg)) - - self._in_head = True - loop_node = None - tail_yield = [] - for b in node.body: - if loop_node: - tail_yield.append( b ) - - elif isinstance(b, ast.For): - iter_start = '0' - iter = b.iter - if isinstance(iter, ast.Call) and isinstance(iter.func, Name) and iter.func.id in ('range','xrange'): - if len(iter.args) == 2: - iter_start = self.visit(iter.args[0]) - iter_end = self.visit(iter.args[1]) - else: - iter_end = self.visit(iter.args[0]) - else: - iter_end = self.visit(iter) - - writer.write('this.__iter_start = %s'%iter_start) - writer.write('this.__iter_index = %s'%iter_start) - writer.write('this.__iter_end = %s'%iter_end) - writer.write('this.__done__ = 0') - loop_node = b - self._in_head = False - - else: - self.visit(b) - - writer.pull() - - writer.write('@%s.prototype'%node.name) - writer.write('def next():') - writer.push() - - if self._head_yield: - writer.write('if this.__head_returned == 0:') - writer.push() - writer.write('this.__head_returned = 1') - writer.write('return this.__head_yield') - writer.pull() - writer.write('elif this.__iter_index < this.__iter_end:') - - else: - writer.write('if this.__iter_index < this.__iter_end:') - - writer.push() - for b in loop_node.body: - self.visit(b) - - if self._with_lua: - writer.write('this.__iter_index = this.__iter_index + 1') - else: - writer.write('this.__iter_index += 1') - - if not tail_yield: - writer.write('if this.__iter_index == this.__iter_end: this.__done__ = 1') - - writer.write('return __yield_return__') - writer.pull() - writer.write('else:') - writer.push() - writer.write('this.__done__ = 1') - if tail_yield: - for b in tail_yield: - self.visit(b) - writer.write('return __yield_return__') - writer.pull() - writer.pull() - - -class CollectCalls(NodeVisitor): - _calls_ = [] - def visit_Call(self, node): - self._calls_.append( node ) - -def collect_calls(node): - CollectCalls._calls_ = calls = [] - CollectCalls().visit( node ) - return calls - - - - -class CollectComprehensions(NodeVisitor): - _comps_ = [] - def visit_GeneratorExp(self,node): - self._comps_.append( node ) - self.visit( node.elt ) - for gen in node.generators: - self.visit( gen.iter ) - self.visit( gen.target ) - def visit_ListComp(self, node): - self._comps_.append( node ) - self.visit( node.elt ) - for gen in node.generators: - self.visit( gen.iter ) - self.visit( gen.target ) - -def collect_comprehensions(node): - CollectComprehensions._comps_ = comps = [] - CollectComprehensions().visit( node ) - return comps - -class CollectGenFuncs(NodeVisitor): - _funcs = [] - _genfuncs = [] - def visit_FunctionDef(self, node): - self._funcs.append( node ) - node._yields = [] - node._loops = [] - for b in node.body: - self.visit(b) - self._funcs.pop() - - def visit_Yield(self, node): - func = self._funcs[-1] - func._yields.append( node ) - if func not in self._genfuncs: - self._genfuncs.append( func ) - - def visit_For(self, node): - if len(self._funcs): - self._funcs[-1]._loops.append( node ) - for b in node.body: - self.visit(b) - - def visit_While(self, node): - if len(self._funcs): - self._funcs[-1]._loops.append( node ) - for b in node.body: - self.visit(b) - - -def collect_generator_functions(node): - CollectGenFuncs._funcs = [] - CollectGenFuncs._genfuncs = gfuncs = [] - CollectGenFuncs().visit( node ) - return gfuncs - - - -def main(script, dart=False, coffee=False, lua=False, go=False, module_path=None): - translator = PythonToPythonJS( - source = script, - dart = dart or '--dart' in sys.argv, - coffee = coffee, - lua = lua, - go = go, - module_path = module_path - ) - - code = writer.getvalue() - - if translator.has_webworkers(): - res = {'main':code} - for jsfile in translator.get_webworker_file_names(): - res[ jsfile ] = get_webworker_writer( jsfile ).getvalue() - return res - else: - if '--debug' in sys.argv: - try: - open('/tmp/python-to-pythonjs.debug.py', 'wb').write(code) - except: - pass - return code - - - -if __name__ == '__main__': - ## if run directly prints source transformed to python-js-subset, this is just for debugging ## - scripts = [] - if len(sys.argv) > 1: - argv = sys.argv[1:] - for i,arg in enumerate(argv): - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - - compiler = PythonToPythonJS( - source=data, - dart='--dart' in sys.argv - ) - output = writer.getvalue() - print( output ) ## pipe to stdout diff --git a/pythonjs/python_to_visjs.py b/pythonjs/python_to_visjs.py deleted file mode 100644 index 47b0733..0000000 --- a/pythonjs/python_to_visjs.py +++ /dev/null @@ -1,433 +0,0 @@ -import ast -#from cStringIO import StringIO as StringIO -from StringIO import StringIO as StringIO - -head = """ -
- -""" - -def main(script): - PythonToVisJS( source=script ) - return head + writer.getvalue() + tail - - -class Writer(object): - - def __init__(self): - self.level = 0 - self.buffer = list() - self.output = StringIO() - self.nodes = [] - self.ids = 0 - self.title_blocks = False - self.use_indent = False - self.classes = {} ## name : id - - def push_block(self, s='', shape="box", size=1, font_size=13, color=None): - id = self.ids - self.ids += 1 - class_name = None - if s.startswith('class '): - x = s.split() - class_name = x[1] - if len(x)==3: - class_parents = x[2].split(',') - else: - class_parents = [] - self.classes[ class_name ] = id - - for pname in class_parents: - if pname in self.classes: - pid = self.classes[ pname ] - self.output.write('edges.push({from:%s, to:%s, length:200, style:"arrow"})\n' %(pid,id)) - - s = 'class \\n\\n'+class_name - - - if self.nodes: - if self.level <= 1 and s.startswith( 'def' ) or class_name: - pass - else: - if self.title_blocks: - self.output.write('stack[stack.length-1].label += "--block%s-->\\n"\n' %id) - else: - self.output.write('stack[stack.length-1].label += ""\n') - - prev = self.nodes[-1] - style = 'dash-line' - width = 1 - length = 100 - if prev.startswith('if '): - style = 'arrow' - elif prev.startswith('for '): - style = 'arrow-center' - length = 150 - self.output.write('edges.push({from:%s, to:stack[stack.length-1].id, style: "%s", width: 1, length: %s})\n' %(id, style, length)) - elif prev.startswith('class '): - style = 'line' - width = 3 - length = 200 - self.output.write('edges.push({to:%s, from:stack[stack.length-1].id, style: "%s", width: %s, length: %s})\n' %(id, style, width, length)) - - if s: - s += '\\n' - if self.title_blocks: - s = ('BLOCK-%s\\n'%id) + s - - if color is None: - color = 'undefined' - else: - if type(color) is tuple: - color = '{background:"%s", border:"%s"}'%color - else: - color = '{background:"%s"}'%color - - self.output.write('var block = {id:%s, label:"%s", shape:"%s", value:%s, fontSize:%s, color:%s};\n' %(id, s, shape, size, font_size, color)) - - self.output.write('nodes.push( block );') - self.output.write('stack.push( block );\n') - self.nodes.append( s ) - self.level += 1 - - def pull_block(self): - self.level -= 1 - self.nodes.pop() - self.output.write('block = stack.pop();\n') - - def push(self): - self.push_block() - - def pull(self): - self.pull_block() - - def append(self, code): - self.buffer.append(code) - - def write(self, code): - for content in self.buffer: - self._write(content) - self.buffer = list() - self._write(code) - - def _write(self, code): - if self.use_indent: - indentation = self.level * 4 * ' ' - else: - indentation = '' - if code.startswith('if '): - s = '"%s%s";' % (indentation, code) - else: - s = '"%s%s\\n";' % (indentation, code) - self.output.write('stack[stack.length-1].label += %s\n' %s) - - def getvalue(self): - s = self.output.getvalue() - self.output = StringIO() - return s - -writer = Writer() - - -class PythonToVisJS(ast.NodeVisitor): - def __init__(self, source=None): - super(PythonToVisJS, self).__init__() - tree = ast.parse( source ) - writer.push_block('#module#', shape='circle', color=('lightyellow', 'red')) - self.visit( tree ) - writer.pull_block() - - def visit_Print(self, node): - return 'print %s' % ', '.join(map(self.visit, node.values)) - - def visit_Expr(self, node): - return self.visit(node.value) - - def visit_If(self, node): - #writer.write('if %s:' %self.visit(node.test)) - writer.push_block('if \\n%s' %self.visit(node.test), color=('lightgreen', 'green'), size=5, font_size=16) - writer.push() - - for n in node.body: - res = self.visit(n) - if res: writer.write(res) - - writer.pull() - if node.orelse: - writer.push_block('else:', color=('pink', 'red'), size=5, font_size=16) - writer.push() - for n in node.orelse: - res = self.visit(n) - if res: writer.write(res) - writer.pull() - writer.pull_block() - - writer.pull_block() - - - def visit_Compare(self, node): - left = self.visit(node.left) - comp = [ left ] - for i in range( len(node.ops) ): - comp.append( self.visit(node.ops[i]) ) - comp.append( self.visit(node.comparators[i]) ) - return ' '.join( comp ) - - - def visit_For(self, node): - a = 'for \\n%s in %s' %(self.visit(node.target), self.visit(node.iter)) - writer.push_block(a, color=('cyan', 'orange'), size=5, font_size=16) - - writer.push() - for n in node.body: - res = self.visit(n) - if res: writer.write( res ) - writer.pull() - - writer.pull_block() - - - def visit_While(self, node): - writer.push_block('while \\n%s' % self.visit(node.test)) - writer.push() - for n in node.body: - res = self.visit(n) - if res: writer.write( res ) - writer.pull() - writer.pull_block() - - - def visit_Call(self, node): - args = [self.visit(arg) for arg in node.args] - if node.keywords: - args.extend( [self.visit(x.value) for x in node.keywords] ) - return '%s(%s)' %( self.visit(node.func), ','.join(args) ) - - else: - return '%s(%s)' %( self.visit(node.func), ','.join(args) ) - - - def visit_ClassDef(self, node): - bases = [] - for base in node.bases: - bases.append( self.visit(base) ) - if bases: - a = 'class %s %s'%(node.name, ','.join(bases)) - else: - a = 'class %s' %node.name - - writer.push_block(a, color=('orange', 'black'), font_size=16, shape='database') - for n in node.body: - if isinstance(n, ast.FunctionDef): - self.visit(n) - writer.pull_block() - - - def visit_FunctionDef(self, node): - args = [] - offset = len(node.args.args) - len(node.args.defaults) - for i, arg in enumerate(node.args.args): - a = arg.id - dindex = i - offset - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - args.append( '%s=%s' %(a, default_value) ) - else: - args.append( a ) - - if node.args.vararg: - args.append('*%s' %node.args.vararg) - if node.args.kwarg: - args.append('**%s' %node.args.kwarg) - - a = 'def %s\\n%s' % (node.name, ',\\n'.join(args)) - writer.push_block( a, color=('yellow', 'orange'), font_size=16 ) - writer.push() - for n in node.body: - res = self.visit(n) - if res: writer.write(res) - writer.pull() - writer.pull_block() - - def visit_Return(self, node): - if node.value: - writer.write('return %s' % self.visit(node.value)) - return '' - - def visit_Attribute(self, node): - node_value = self.visit(node.value) - return '%s.%s' %(node_value, node.attr) - - - def visit_Pass(self, node): - return 'pass' - - def visit_Str(self, node): - return '`%s`' %node.s.replace('"','"').replace('\n', '\\n').replace('&', '&').replace('<','<').replace('>','>') - - def visit_Name(self, node): - return node.id - - def visit_Num(self, node): - return str(node.n) - - def visit_Eq(self, node): - return '==' - - def visit_NotEq(self, node): - return '!=' - - def visit_Is(self, node): - return 'is' - - def visit_Pow(self, node): - return '**' - - def visit_Mult(self, node): - return '*' - - def visit_Add(self, node): - return '+' - - def visit_Sub(self, node): - return '-' - - def visit_And(self, node): - return ' and ' - - def visit_Or(self, node): - return ' or ' - - def visit_FloorDiv(self, node): - return '//' - def visit_Div(self, node): - return '/' - def visit_Mod(self, node): - return '%' - def visit_LShift(self, node): - return '<<' - def visit_RShift(self, node): - return '>>' - def visit_BitXor(self, node): - return '^' - def visit_BitOr(self, node): - return '|' - def visit_BitAnd(self, node): - return '&' - - def visit_Lt(self, node): - return '<' - - def visit_Gt(self, node): - return '>' - - def visit_GtE(self, node): - return '>=' - - def visit_LtE(self, node): - return '<=' - - def visit_In(self, node): - return ' in ' - - def visit_NotIn(self, node): - return ' not in ' - - def visit_Not(self, node): - return ' not ' - - def visit_IsNot(self, node): - return ' is not ' - - def visit_UnaryOp(self, node): - op = self.visit(node.op) - if op is None: raise RuntimeError( node.op ) - operand = self.visit(node.operand) - if operand is None: raise RuntimeError( node.operand ) - return op + operand - - def visit_USub(self, node): - return '-' - - def visit_BoolOp(self, node): - op = self.visit(node.op) - return op.join( [self.visit(v) for v in node.values] ) - - - def visit_BinOp(self, node): - left = self.visit(node.left) - op = self.visit(node.op) - right = self.visit(node.right) - return '(%s %s %s)' % (left, op, right) - - def visit_Subscript(self, node): - name = self.visit(node.value) - return '%s[ %s ]' %(name, self.visit(node.slice)) - - - def visit_Assign(self, node): - #assert len(node.targets) == 1 - target = node.targets[0] - if isinstance(target, ast.Tuple): - elts = [self.visit(e) for e in target.elts] - code = '%s = %s' % (','.join(elts), self.visit(node.value)) - - else: - target = self.visit(target) - value = self.visit(node.value) - code = '%s = %s' % (target, value) - - writer.write(code) - - def visit_AugAssign(self, node): - target = self.visit( node.target ) - op = '%s=' %self.visit( node.op ) - a = '%s %s %s' %(target, op, self.visit(node.value)) - writer.write(a) - - def visit_Assert(self, node): - writer.write('assert %s'%self.visit(node.test)) - - - def visit_TryExcept(self, node): - writer.push_block('try') - for n in node.body: - res = self.visit(n) - if res: writer.write( res ) - - #map(self.visit, node.handlers) - writer.pull_block() - - def visit_Raise(self, node): - writer.write('raise %s' % self.visit(node.type)) - - - def visit_Tuple(self, node): - return '(%s)' % ', '.join(map(self.visit, node.elts)) - - def visit_List(self, node): - return '[%s]' % ', '.join(map(self.visit, node.elts)) - - def visit_Dict(self, node): - a = [] - for i in range( len(node.keys) ): - k = self.visit( node.keys[ i ] ) - v = self.visit( node.values[i] ) - a.append( '%s:%s'%(k,v) ) - - b = ','.join( a ) - return '{%s}' %b diff --git a/pythonjs/pythonjs.js b/pythonjs/pythonjs.js deleted file mode 100644 index fa6a00b..0000000 --- a/pythonjs/pythonjs.js +++ /dev/null @@ -1,3853 +0,0 @@ -__NULL_OBJECT__ = Object.create(null); -__WEBWORKER__ = false; -__NODEJS__ = false; -__BROWSER__ = false; -if ((!(typeof(process) instanceof Array ? JSON.stringify(typeof(process))==JSON.stringify("undefined") : typeof(process)==="undefined"))) { - __NODEJS__ = true; -} -if ((!(typeof(window) instanceof Array ? JSON.stringify(typeof(window))==JSON.stringify("undefined") : typeof(window)==="undefined"))) { - __BROWSER__ = true; -} -if ((typeof(importScripts) instanceof Array ? JSON.stringify(typeof(importScripts))==JSON.stringify("function") : typeof(importScripts)==="function")) { - __WEBWORKER__ = true; -} -var __create_array__ = function() { - "Used to fix a bug/feature of Javascript where new Array(number)\n created a array with number of undefined elements which is not\n what we want"; - var i,array; - array = []; - i = 0; - while (( i ) < arguments.length) { - array.push(arguments[i]); - i += 1; - } - return array; -} - -var __get__ = function(object, attribute, error_message) { - "Retrieve an attribute, method, property, or wrapper function.\n\n method are actually functions which are converted to methods by\n prepending their arguments with the current object. Properties are\n not functions!\n\n DOM support:\n http://stackoverflow.com/questions/14202699/document-createelement-not-working\n https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof\n\n Direct JavaScript Calls:\n if an external javascript function is found, and it was not a wrapper that was generated here,\n check the function for a 'cached_wrapper' attribute, if none is found then generate a new\n wrapper, cache it on the function, and return the wrapper.\n "; - if (( object ) === null) { - if (error_message) { - throw new AttributeError(("(`null` has no attributes) " + error_message)); - } else { - throw new AttributeError(("null object (None) has no attribute: " + attribute)); - } - } else { - if (( object ) === undefined) { - if (error_message) { - throw new AttributeError(("(`undefined` has no attributes) " + error_message)); - } else { - throw new AttributeError(("undefined has no attribute: " + attribute)); - } - } - } - if ((attribute instanceof Array ? JSON.stringify(attribute)==JSON.stringify("__call__") : attribute==="__call__")) { - if ((object.pythonscript_function || object.is_wrapper)) { - return object; - } else { - if (object.cached_wrapper) { - return object.cached_wrapper; - } else { - if ({}.toString.call(object) === '[object Function]') { - var wrapper = function(args, kwargs) { - var i,arg,keys; - if ((!(args instanceof Array ? JSON.stringify(args)==JSON.stringify(null) : args===null))) { - i = 0; - while (( i ) < args.length) { - arg = args[i]; - if ((arg && (typeof(arg) instanceof Array ? JSON.stringify(typeof(arg))==JSON.stringify("object") : typeof(arg)==="object"))) { - if (arg.jsify) { - args[i] = arg.jsify(); - } - } - i += 1; - } - } - if ((!(kwargs instanceof Array ? JSON.stringify(kwargs)==JSON.stringify(null) : kwargs===null))) { - keys = __object_keys__(kwargs); - if ((!(keys.length instanceof Array ? JSON.stringify(keys.length)==JSON.stringify(0) : keys.length===0))) { - args.push(kwargs); - i = 0; - while (( i ) < keys.length) { - arg = kwargs[keys[i]]; - if ((arg && (typeof(arg) instanceof Array ? JSON.stringify(typeof(arg))==JSON.stringify("object") : typeof(arg)==="object"))) { - if (arg.jsify) { - kwargs[keys[i]] = arg.jsify(); - } - } - i += 1; - } - } - } - return object.apply(null, args); - } - - wrapper.is_wrapper = true; - object.cached_wrapper = wrapper; - return wrapper; - } - } - } - } - if (Object.hasOwnProperty.call(object, "__getattribute__")) { - return object.__getattribute__(attribute); - } - var attr; - attr = object[attribute]; - if ((( __NODEJS__ ) === false && ( __WEBWORKER__ ) === false)) { - if (object instanceof HTMLDocument) { - if (typeof(attr) === 'function') { - var wrapper = function(args, kwargs) { - return attr.apply(object, args); - } - - wrapper.is_wrapper = true; - return wrapper; - } else { - return attr; - } - } else { - if (object instanceof HTMLElement) { - if (typeof(attr) === 'function') { - var wrapper = function(args, kwargs) { - return attr.apply(object, args); - } - - wrapper.is_wrapper = true; - return wrapper; - } else { - return attr; - } - } - } - } - if (( attr ) !== undefined) { - if ((typeof(attr) instanceof Array ? JSON.stringify(typeof(attr))==JSON.stringify("function") : typeof(attr)==="function")) { - if (attr.pythonscript_function === undefined && attr.is_wrapper === undefined) { - if ((attr.prototype instanceof Object && ( Object.keys(attr.prototype).length ) > 0)) { - return attr; - } - var wrapper = function(args, kwargs) { - var i,arg,keys; - if ((!(args instanceof Array ? JSON.stringify(args)==JSON.stringify(null) : args===null))) { - i = 0; - while (( i ) < args.length) { - arg = args[i]; - if ((arg && (typeof(arg) instanceof Array ? JSON.stringify(typeof(arg))==JSON.stringify("object") : typeof(arg)==="object"))) { - if (arg.jsify) { - args[i] = arg.jsify(); - } - } - i += 1; - } - } - if ((!(kwargs instanceof Array ? JSON.stringify(kwargs)==JSON.stringify(null) : kwargs===null))) { - keys = __object_keys__(kwargs); - if ((!(keys.length instanceof Array ? JSON.stringify(keys.length)==JSON.stringify(0) : keys.length===0))) { - args.push(kwargs); - i = 0; - while (( i ) < keys.length) { - arg = kwargs[keys[i]]; - if ((arg && (typeof(arg) instanceof Array ? JSON.stringify(typeof(arg))==JSON.stringify("object") : typeof(arg)==="object"))) { - if (arg.jsify) { - kwargs[keys[i]] = arg.jsify(); - } - } - i += 1; - } - } - } - return attr.apply(object, args); - } - - wrapper.is_wrapper = true; - wrapper.wrapped = attr; - return wrapper; - } else { - if (attr.is_classmethod) { - var method = function() { - var args; - args = Array.prototype.slice.call(arguments); - if ((args[0] instanceof Array && {}.toString.call(args[1]) === '[object Object]' && (args.length instanceof Array ? JSON.stringify(args.length)==JSON.stringify(2) : args.length===2))) { - /*pass*/ - } else { - args = [args, {}]; - } - if (object.__class__) { - args[0].splice(0, 0, object.__class__); - } else { - args[0].splice(0, 0, object); - } - return attr.apply(this, args); - } - - method.is_wrapper = true; - object[attribute] = method; - return method; - } else { - return attr; - } - } - } else { - return attr; - } - } - var __class__,bases; - __class__ = object.__class__; - if (__class__) { - if (( attribute ) in __class__.__properties__) { - return __class__.__properties__[attribute]["get"]([object], {}); - } - if (( attribute ) in __class__.__unbound_methods__) { - attr = __class__.__unbound_methods__[attribute]; - if (attr.fastdef) { - var method = function(args, kwargs) { - if ((arguments && arguments[0])) { - arguments[0].splice(0, 0, object); - return attr.apply(this, arguments); - } else { - return attr([object], { }); - } - } - - } else { - var method = function(args, kwargs) { - if ((arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(0) : arguments.length===0)) { - return attr([object], __NULL_OBJECT__); - } else { - if ((args instanceof Array && ( typeof(kwargs) ) === "object" && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - args.splice(0, 0, object); - if (( kwargs ) === undefined) { - return attr(args, __NULL_OBJECT__); - } else { - return attr(args, kwargs); - } - } else { - args = Array.prototype.slice.call(arguments); - args.splice(0, 0, object); - args = [args, __NULL_OBJECT__]; - return attr.apply(this, args); - } - } - } - - } - method.is_wrapper = true; - object[attribute] = method; - return method; - } - attr = __class__[attribute]; - if (( attribute ) in __class__) { - if ({}.toString.call(attr) === '[object Function]') { - if (attr.is_wrapper) { - return attr; - } else { - if (attr.fastdef) { - var method = function(args, kwargs) { - if ((arguments && arguments[0])) { - arguments[0].splice(0, 0, object); - return attr.apply(this, arguments); - } else { - return attr([object], { }); - } - } - - } else { - var method = function(args, kwargs) { - if ((arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(0) : arguments.length===0)) { - return attr([object], __NULL_OBJECT__); - } else { - if ((args instanceof Array && ( typeof(kwargs) ) === "object" && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - args.splice(0, 0, object); - if (( kwargs ) === undefined) { - return attr(args, __NULL_OBJECT__); - } else { - return attr(args, kwargs); - } - } else { - args = Array.prototype.slice.call(arguments); - args.splice(0, 0, object); - args = [args, __NULL_OBJECT__]; - return attr.apply(this, args); - } - } - } - - } - } - method.is_wrapper = true; - object[attribute] = method; - return method; - } else { - return attr; - } - } - bases = __class__.__bases__; - var __iter1 = bases; - if (! (__iter1 instanceof Array || typeof __iter1 == "string" || __is_typed_array(__iter1) || __is_some_array(__iter1) )) { __iter1 = __object_keys__(__iter1) } - for (var __idx1=0; __idx1 < __iter1.length; __idx1++) { - var base = __iter1[ __idx1 ]; - attr = _get_upstream_attribute(base, attribute); - if (( attr ) !== undefined) { - if ({}.toString.call(attr) === '[object Function]') { - if (attr.fastdef) { - var method = function(args, kwargs) { - if ((arguments && arguments[0])) { - arguments[0].splice(0, 0, object); - return attr.apply(this, arguments); - } else { - return attr([object], { }); - } - } - - } else { - var method = function(args, kwargs) { - if ((arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(0) : arguments.length===0)) { - return attr([object], __NULL_OBJECT__); - } else { - if ((args instanceof Array && ( typeof(kwargs) ) === "object" && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - args.splice(0, 0, object); - if (( kwargs ) === undefined) { - return attr(args, __NULL_OBJECT__); - } else { - return attr(args, kwargs); - } - } else { - args = Array.prototype.slice.call(arguments); - args.splice(0, 0, object); - args = [args, __NULL_OBJECT__]; - return attr.apply(this, args); - } - } - } - - } - method.is_wrapper = true; - object[attribute] = method; - return method; - } else { - return attr; - } - } - } - var __iter2 = bases; - if (! (__iter2 instanceof Array || typeof __iter2 == "string" || __is_typed_array(__iter2) || __is_some_array(__iter2) )) { __iter2 = __object_keys__(__iter2) } - for (var __idx2=0; __idx2 < __iter2.length; __idx2++) { - var base = __iter2[ __idx2 ]; - var prop; - prop = _get_upstream_property(base, attribute); - if (( prop ) !== undefined) { - return prop["get"]([object], {}); - } - } - if (( "__getattr__" ) in __class__) { - return __class__["__getattr__"]([object, attribute], {}); - } - var __iter3 = bases; - if (! (__iter3 instanceof Array || typeof __iter3 == "string" || __is_typed_array(__iter3) || __is_some_array(__iter3) )) { __iter3 = __object_keys__(__iter3) } - for (var __idx3=0; __idx3 < __iter3.length; __idx3++) { - var base = __iter3[ __idx3 ]; - var f; - f = _get_upstream_attribute(base, "__getattr__"); - if (( f ) !== undefined) { - return f([object, attribute], {}); - } - } - } - if ((attribute instanceof Array ? JSON.stringify(attribute)==JSON.stringify("__getitem__") : attribute==="__getitem__")) { - var wrapper = function(args, kwargs) { - v = object[args[0]]; - if (( v ) === undefined) { - throw new KeyError(args[0]); - } - } - - wrapper.is_wrapper = true; - return wrapper; - } else { - if ((attribute instanceof Array ? JSON.stringify(attribute)==JSON.stringify("__setitem__") : attribute==="__setitem__")) { - var wrapper = function(args, kwargs) { - object[args[0]] = args[1]; - } - - wrapper.is_wrapper = true; - return wrapper; - } - } - if ((typeof(object, "function") && object.is_wrapper)) { - return object.wrapped[attribute]; - } - if (((attribute instanceof Array ? JSON.stringify(attribute)==JSON.stringify("__iter__") : attribute==="__iter__") && object instanceof Object)) { - var wrapper = function(args, kwargs) { - return new __ArrayIterator(Object.keys(object), 0); - } - - wrapper.is_wrapper = true; - return wrapper; - } - if (((attribute instanceof Array ? JSON.stringify(attribute)==JSON.stringify("__contains__") : attribute==="__contains__") && object instanceof Object)) { - var wrapper = function(args, kwargs) { - return (!(Object.keys(object).indexOf(args[0]) instanceof Array ? JSON.stringify(Object.keys(object).indexOf(args[0]))==JSON.stringify(-1) : Object.keys(object).indexOf(args[0])===-1)); - } - - wrapper.is_wrapper = true; - return wrapper; - } - if (( attr ) === undefined) { - if (error_message) { - throw new AttributeError(error_message); - } else { - throw new AttributeError(attribute); - } - } else { - return attr; - } -} - -var _get_upstream_attribute = function(base, attr) { - if (( attr ) in base) { - return base[attr]; - } - var __iter4 = base.__bases__; - if (! (__iter4 instanceof Array || typeof __iter4 == "string" || __is_typed_array(__iter4) || __is_some_array(__iter4) )) { __iter4 = __object_keys__(__iter4) } - for (var __idx4=0; __idx4 < __iter4.length; __idx4++) { - var parent = __iter4[ __idx4 ]; - return _get_upstream_attribute(parent, attr); - } -} - -var _get_upstream_property = function(base, attr) { - if (( attr ) in base.__properties__) { - return base.__properties__[attr]; - } - var __iter5 = base.__bases__; - if (! (__iter5 instanceof Array || typeof __iter5 == "string" || __is_typed_array(__iter5) || __is_some_array(__iter5) )) { __iter5 = __object_keys__(__iter5) } - for (var __idx5=0; __idx5 < __iter5.length; __idx5++) { - var parent = __iter5[ __idx5 ]; - return _get_upstream_property(parent, attr); - } -} - -var __set__ = function(object, attribute, value) { - "\n __setattr__ is always called when an attribute is set,\n unlike __getattr__ that only triggers when an attribute is not found,\n this asymmetry is in fact part of the Python spec.\n note there is no __setattribute__\n\n In normal Python a property setter is not called before __setattr__,\n this is bad language design because the user has been more explicit\n in having the property setter.\n\n In PythonJS, property setters are called instead of __setattr__.\n "; - if ((( "__class__" ) in object && (!(object.__class__.__setters__.indexOf(attribute) instanceof Array ? JSON.stringify(object.__class__.__setters__.indexOf(attribute))==JSON.stringify(-1) : object.__class__.__setters__.indexOf(attribute)===-1)))) { - object[attribute] = value; - } else { - if (( "__setattr__" ) in object) { - object.__setattr__(attribute, value); - } else { - object[attribute] = value; - } - } -} - -var __getargs__ = function(func_name, signature, args, kwargs) { - "Based on ``signature`` and ``args``, ``kwargs`` parameters retrieve\n the actual parameters.\n\n This will set default keyword arguments and retrieve positional arguments\n in kwargs if their called as such"; - if (( args ) === null) { - args = []; - } - if (( kwargs ) === null) { - kwargs = { }; - } - out = { }; - if (( args.length ) > signature.args.length) { - if (signature.vararg) { - /*pass*/ - } else { - console.log(("Error in function->" + func_name)); - console.log("args:", args, "kwargs:", kwargs, "sig:", signature); - throw new TypeError("Supplemental positional arguments provided but signature doesn't accept them"); - } - } - j = 0; - while (( j ) < signature.args.length) { - name = signature.args[j]; - if (( name ) in kwargs) { - out[name] = kwargs[name]; - } else { - if (( j ) < args.length) { - out[name] = args[j]; - } else { - if (( name ) in signature.kwargs) { - out[name] = signature.kwargs[name]; - } - } - } - j += 1; - } - args = args.slice(j); - if (signature.vararg) { - out[signature.vararg] = args; - } - if (signature.varkwarg) { - out[signature.varkwarg] = kwargs; - } - return out; -} - -_PythonJS_UID = 0; -IndexError = function(msg) {this.message = msg || "";}; IndexError.prototype = Object.create(Error.prototype); IndexError.prototype.name = "IndexError"; -KeyError = function(msg) {this.message = msg || "";}; KeyError.prototype = Object.create(Error.prototype); KeyError.prototype.name = "KeyError"; -ValueError = function(msg) {this.message = msg || "";}; ValueError.prototype = Object.create(Error.prototype); ValueError.prototype.name = "ValueError"; -AttributeError = function(msg) {this.message = msg || "";}; AttributeError.prototype = Object.create(Error.prototype);AttributeError.prototype.name = "AttributeError"; -RuntimeError = function(msg) {this.message = msg || "";}; RuntimeError.prototype = Object.create(Error.prototype);RuntimeError.prototype.name = "RuntimeError"; -var __getfast__ = function(ob, attr) { - var v; - v = ob[attr]; - if (( v ) === undefined) { - throw new AttributeError(attr); - } else { - return v; - } -} - -var __wrap_function__ = function(f) { - - f.is_wrapper = true; - return f; -} - -var __gpu_object = function(cls, struct_name, data_name) { - - cls.prototype.__struct_name__ = struct_name; - cls.prototype.__struct_data__ = data_name; -} - -gpu = { "object":__gpu_object }; -var glsljit_runtime = function(header) { - - return new GLSLJITRuntime(header); -} - -var GLSLJITRuntime = function(header) { - GLSLJITRuntime.__init__(this, header); - this.__class__ = GLSLJITRuntime; - this.__uid__ = ("" + _PythonJS_UID); - _PythonJS_UID += 1; -} - -GLSLJITRuntime.__uid__ = ("" + _PythonJS_UID); -_PythonJS_UID += 1; -GLSLJITRuntime.prototype.__init__ = function(header) { - - this.header = header; - this.shader = []; - this.object_packagers = []; - this.struct_types = __jsdict([]); - this.glsltypes = ["vec2", "vec3", "vec4", "mat4"]; - this.matrices = []; -} - -GLSLJITRuntime.__init__ = function () { return GLSLJITRuntime.prototype.__init__.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.compile_header = function() { - var a,b; - a = []; - var __iter1 = this.struct_types; - if (! (__iter1 instanceof Array || typeof __iter1 == "string" || __is_typed_array(__iter1) || __is_some_array(__iter1) )) { __iter1 = __object_keys__(__iter1) } - for (var __idx1=0; __idx1 < __iter1.length; __idx1++) { - var sname = __iter1[ __idx1 ]; - if (__contains__(this.glsltypes, sname)) { - /*pass*/ - } else { - a.push(this.struct_types[sname]["code"]); - } - } - a.push(__sprintf("int matrix_index() { return int(get_global_id().y*%s.0); }", this.matrices.length)); - a.push("int matrix_row() { return int(get_global_id().x*4.0); }"); - a = "\n".join(a); - b = "\n".join(this.header); - return "\n".join([a, b]); -} - -GLSLJITRuntime.compile_header = function () { return GLSLJITRuntime.prototype.compile_header.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.compile_main = function() { - - return "\n".join(this.shader); -} - -GLSLJITRuntime.compile_main = function () { return GLSLJITRuntime.prototype.compile_main.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.push = function(s) { - - this.shader.push(s); -} - -GLSLJITRuntime.push = function () { return GLSLJITRuntime.prototype.push.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.define_structure = function(ob) { - var integers,arr,code,struct_name,struct_type,member_list,subtype,t,members,arrays,structs,floats; - struct_name = null; - if (__test_if_true__(ob.__struct_name__)) { - struct_name = ob.__struct_name__; - if (__contains__(this.struct_types, struct_name)) { - return struct_name; - } - } - arrays = []; - floats = []; - integers = []; - structs = []; - struct_type = []; - if (__test_if_true__((struct_name && __contains__(this.glsltypes, struct_name)))) { - return struct_name; - } - var __iter2 = dir(ob); - if (! (__iter2 instanceof Array || typeof __iter2 == "string" || __is_typed_array(__iter2) || __is_some_array(__iter2) )) { __iter2 = __object_keys__(__iter2) } - for (var __idx2=0; __idx2 < __iter2.length; __idx2++) { - var key = __iter2[ __idx2 ]; - if (__test_if_true__(((key.length instanceof Array ? JSON.stringify(key.length)==JSON.stringify(1) : key.length===1) && __contains__("0123456789", key)))) { - throw new RuntimeError(key); - } - t = typeof(ob[key]); - if (__test_if_true__(((t instanceof Array ? JSON.stringify(t)==JSON.stringify("object") : t==="object") && ob[key] instanceof Array && ob[key].length && (typeof(ob[key][0]) instanceof Array ? JSON.stringify(typeof(ob[key][0]))==JSON.stringify("number") : typeof(ob[key][0])==="number")))) { - struct_type.push(("ARY_" + key)); - arrays.push(key); - } else { - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("number") : t==="number")) { - struct_type.push(("NUM_" + key)); - floats.push(key); - } else { - if (__test_if_true__(ob[key] instanceof Int16Array)) { - struct_type.push(("INT_" + key)); - if ((ob[key].length instanceof Array ? JSON.stringify(ob[key].length)==JSON.stringify(1) : ob[key].length===1)) { - integers.push(key); - } else { - /*pass*/ - } - } else { - if (__test_if_true__(((t instanceof Array ? JSON.stringify(t)==JSON.stringify("object") : t==="object") && ob[key].__struct_name__))) { - struct_type.push(("S_" + key)); - structs.push(key); - if (! (__contains__(this.struct_types, ob[key].__struct_name__))) { - if (__contains__(this.glsltypes, ob[key].__struct_name__)) { - /*pass*/ - } else { - this.define_structure(ob[key]); - } - } - } - } - } - } - } - if (( struct_name ) === null) { - struct_name = "".join(struct_type); - ob.__struct_name__ = struct_name; - } - if (! (__contains__(this.struct_types, struct_name))) { - member_list = []; - var __iter3 = integers; - if (! (__iter3 instanceof Array || typeof __iter3 == "string" || __is_typed_array(__iter3) || __is_some_array(__iter3) )) { __iter3 = __object_keys__(__iter3) } - for (var __idx3=0; __idx3 < __iter3.length; __idx3++) { - var key = __iter3[ __idx3 ]; - member_list.append((("int " + key) + ";")); - } - var __iter4 = floats; - if (! (__iter4 instanceof Array || typeof __iter4 == "string" || __is_typed_array(__iter4) || __is_some_array(__iter4) )) { __iter4 = __object_keys__(__iter4) } - for (var __idx4=0; __idx4 < __iter4.length; __idx4++) { - var key = __iter4[ __idx4 ]; - member_list.append((("float " + key) + ";")); - } - var __iter5 = arrays; - if (! (__iter5 instanceof Array || typeof __iter5 == "string" || __is_typed_array(__iter5) || __is_some_array(__iter5) )) { __iter5 = __object_keys__(__iter5) } - for (var __idx5=0; __idx5 < __iter5.length; __idx5++) { - var key = __iter5[ __idx5 ]; - arr = ob[key]; - member_list.append((((("float " + key) + "[") + arr.length) + "];")); - } - var __iter6 = structs; - if (! (__iter6 instanceof Array || typeof __iter6 == "string" || __is_typed_array(__iter6) || __is_some_array(__iter6) )) { __iter6 = __object_keys__(__iter6) } - for (var __idx6=0; __idx6 < __iter6.length; __idx6++) { - var key = __iter6[ __idx6 ]; - subtype = ob[key].__struct_name__; - member_list.append((((subtype + " ") + key) + ";")); - } - if ((len(member_list) instanceof Array ? JSON.stringify(len(member_list))==JSON.stringify(0) : len(member_list)===0)) { - throw new RuntimeError(struct_name); - } - members = "".join(member_list); - code = (((("struct " + struct_name) + " {") + members) + "};"); - this.struct_types[struct_name] = __jsdict([["arrays", arrays], ["floats", floats], ["integers", integers], ["structs", structs], ["code", code]]); - } - return struct_name; -} - -GLSLJITRuntime.define_structure = function () { return GLSLJITRuntime.prototype.define_structure.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.structure = function(ob, name) { - var sname,stype,args,value,has_arrays,o,aname,wrapper; - wrapper = null; - if (__test_if_true__(ob instanceof Object)) { - /*pass*/ - } else { - if (( ob.__class__ ) === dict) { - wrapper = ob; - ob = ob["$wrapped"]; - } - } - sname = this.define_structure(ob); - if (__test_if_true__(wrapper)) { - wrapper.__struct_name__ = sname; - } - args = []; - stype = this.struct_types[sname]; - if (! (__contains__(this.struct_types, sname))) { - if (__contains__(this.glsltypes, sname)) { - if ((sname instanceof Array ? JSON.stringify(sname)==JSON.stringify("mat4") : sname==="mat4")) { - if (__test_if_true__(ob.__struct_data__)) { - o = ob[ob.__struct_data__]; - } else { - o = ob; - } - var i,i__end__; - i = 0; - i__end__ = o.length; - while (( i ) < i__end__) { - value = (o[i] + ""); - if (! (__contains__(value, "."))) { - value += ".0"; - } - args.push(value); - i += 1; - } - } - } else { - throw new RuntimeError(("no method to pack structure: " + sname)); - } - } - has_arrays = false; - if (__test_if_true__(stype)) { - if (( stype["arrays"].length ) > 0) { - has_arrays = true; - } - var __iter7 = stype["integers"]; - if (! (__iter7 instanceof Array || typeof __iter7 == "string" || __is_typed_array(__iter7) || __is_some_array(__iter7) )) { __iter7 = __object_keys__(__iter7) } - for (var __idx7=0; __idx7 < __iter7.length; __idx7++) { - var key = __iter7[ __idx7 ]; - args.push((ob[key][0] + "")); - } - var __iter8 = stype["floats"]; - if (! (__iter8 instanceof Array || typeof __iter8 == "string" || __is_typed_array(__iter8) || __is_some_array(__iter8) )) { __iter8 = __object_keys__(__iter8) } - for (var __idx8=0; __idx8 < __iter8.length; __idx8++) { - var key = __iter8[ __idx8 ]; - value = (ob[key] + ""); - if (! (__contains__(value, "."))) { - value += ".0"; - } - args.push(value); - } - var __iter9 = stype["arrays"]; - if (! (__iter9 instanceof Array || typeof __iter9 == "string" || __is_typed_array(__iter9) || __is_some_array(__iter9) )) { __iter9 = __object_keys__(__iter9) } - for (var __idx9=0; __idx9 < __iter9.length; __idx9++) { - var key = __iter9[ __idx9 ]; - aname = (("_" + key) + name); - this.array(ob[key], aname); - args.push(aname); - } - var __iter10 = stype["structs"]; - if (! (__iter10 instanceof Array || typeof __iter10 == "string" || __is_typed_array(__iter10) || __is_some_array(__iter10) )) { __iter10 = __object_keys__(__iter10) } - for (var __idx10=0; __idx10 < __iter10.length; __idx10++) { - var key = __iter10[ __idx10 ]; - aname = (("_" + key) + name); - this.structure(ob[key], aname); - args.push(aname); - } - } - args = ",".join(args); - if (__test_if_true__(has_arrays)) { - this.shader.push((((((((sname + " ") + name) + "=") + sname) + "(") + args) + ");")); - } else { - this.header.push((((((((("const " + sname) + " ") + name) + "=") + sname) + "(") + args) + ");")); - } - return stype; -} - -GLSLJITRuntime.structure = function () { return GLSLJITRuntime.prototype.structure.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.int16array = function(ob, name) { - var a,i; - a = [(((("int " + name) + "[") + ob.length) + "]")]; - i = 0; - while (( i ) < ob.length) { - a.push((((((";" + name) + "[") + i) + "]=") + ob[i])); - i += 1; - } - this.shader.push("".join(a)); -} - -GLSLJITRuntime.int16array = function () { return GLSLJITRuntime.prototype.int16array.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.array = function(ob, name) { - var a,i,j,subname,subarr,v; - if (__test_if_true__(ob[0] instanceof Array)) { - a = []; - i = 0; - while (( i ) < ob.length) { - subarr = ob[i]; - subname = __sprintf("%s_%s", [name, i]); - if ((a.length instanceof Array ? JSON.stringify(a.length)==JSON.stringify(0) : a.length===0)) { - a.append((((("float " + subname) + "[") + subarr.length) + "]")); - } else { - a.append(((((";float " + subname) + "[") + subarr.length) + "]")); - } - j = 0; - while (( j ) < subarr.length) { - v = (subarr[j] + ""); - if (! (__contains__(v, "."))) { - v += ".0"; - } - a.push((((((";" + subname) + "[") + j) + "]=") + v)); - j += 1; - } - i += 1; - } - this.shader.push("".join(a)); - } else { - if (__test_if_true__((ob[0] instanceof Object || ( ob[0].__class__ ) === dict))) { - i = 0; - while (( i ) < ob.length) { - this.structure(ob[i], ((name + "_") + i)); - i += 1; - } - } else { - a = [(((("float " + name) + "[") + ob.length) + "];")]; - i = 0; - while (( i ) < ob.length) { - a.push((((((name + "[") + i) + "]=") + ob[i]) + ";")); - i += 1; - } - this.shader.push("".join(a)); - } - } -} - -GLSLJITRuntime.array = function () { return GLSLJITRuntime.prototype.array.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.object = function(ob, name) { - var func,cls; - var __iter11 = this.object_packagers; - if (! (__iter11 instanceof Array || typeof __iter11 == "string" || __is_typed_array(__iter11) || __is_some_array(__iter11) )) { __iter11 = __object_keys__(__iter11) } - for (var __idx11=0; __idx11 < __iter11.length; __idx11++) { - var p = __iter11[ __idx11 ]; - var __r_0; - __r_0 = p; - cls = __r_0[0]; - func = __r_0[1]; - if (__test_if_true__(ob instanceof cls)) { - return func(ob); - } - } -} - -GLSLJITRuntime.object = function () { return GLSLJITRuntime.prototype.object.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.unpack_array2d = function(arr, dims) { - var h,rows,w,row; - if ((typeof(dims) instanceof Array ? JSON.stringify(typeof(dims))==JSON.stringify("number") : typeof(dims)==="number")) { - return arr; - } - var __r_1; - __r_1 = dims; - w = __r_1[0]; - h = __r_1[1]; - row = []; - rows = [row]; - var __iter12 = arr; - if (! (__iter12 instanceof Array || typeof __iter12 == "string" || __is_typed_array(__iter12) || __is_some_array(__iter12) )) { __iter12 = __object_keys__(__iter12) } - for (var __idx12=0; __idx12 < __iter12.length; __idx12++) { - var value = __iter12[ __idx12 ]; - row.append(value); - if (( row.length ) >= w) { - row = []; - rows.append(row); - } - } - __jsdict_pop(rows); - if ((!(rows.length instanceof Array ? JSON.stringify(rows.length)==JSON.stringify(h) : rows.length===h))) { - console.log("ERROR: __unpack_array2d, invalid height."); - } - return rows; -} - -GLSLJITRuntime.unpack_array2d = function () { return GLSLJITRuntime.prototype.unpack_array2d.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.unpack_vec4 = function(arr, dims) { - var rows,i,h,vec,w,row; - if ((typeof(dims) instanceof Array ? JSON.stringify(typeof(dims))==JSON.stringify("number") : typeof(dims)==="number")) { - w = dims; - h = 1; - } else { - var __r_2; - __r_2 = dims; - w = __r_2[0]; - h = __r_2[1]; - } - rows = []; - i = 0; - var y,y__end__; - y = 0; - y__end__ = h; - while (( y ) < y__end__) { - row = []; - rows.append(row); - var x,x__end__; - x = 0; - x__end__ = w; - while (( x ) < x__end__) { - vec = []; - var j,j__end__; - j = 0; - j__end__ = 4; - while (( j ) < j__end__) { - vec.append(arr[i]); - i += 1; - j += 1; - } - row.append(vec); - x += 1; - } - y += 1; - } - if ((!(rows.length instanceof Array ? JSON.stringify(rows.length)==JSON.stringify(h) : rows.length===h))) { - console.log("ERROR: __unpack_vec4, invalid height."); - } - return rows; -} - -GLSLJITRuntime.unpack_vec4 = function () { return GLSLJITRuntime.prototype.unpack_vec4.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.unpack_mat4 = function(arr) { - var i; - i = 0; - var __iter13 = this.matrices; - if (! (__iter13 instanceof Array || typeof __iter13 == "string" || __is_typed_array(__iter13) || __is_some_array(__iter13) )) { __iter13 = __object_keys__(__iter13) } - for (var __idx13=0; __idx13 < __iter13.length; __idx13++) { - var mat = __iter13[ __idx13 ]; - var j,j__end__; - j = 0; - j__end__ = 16; - while (( j ) < j__end__) { - mat[j] = arr[i]; - i += 1; - j += 1; - } - } - return this.matrices; -} - -GLSLJITRuntime.unpack_mat4 = function () { return GLSLJITRuntime.prototype.unpack_mat4.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -GLSLJITRuntime.prototype.__properties__ = { }; -GLSLJITRuntime.prototype.__unbound_methods__ = { }; -var __getattr__ = function(ob, a) { - - if (ob.__getattr__) { - return ob.__getattr__(a); - } -};__getattr__.is_wrapper = true; -var __test_if_true__ = function(ob) { - - if (( ob ) === true) { - return true; - } else { - if (( ob ) === false) { - return false; - } else { - if ((typeof(ob) instanceof Array ? JSON.stringify(typeof(ob))==JSON.stringify("string") : typeof(ob)==="string")) { - return (!(ob.length instanceof Array ? JSON.stringify(ob.length)==JSON.stringify(0) : ob.length===0)); - } else { - if (! (ob)) { - return false; - } else { - if (ob instanceof Array) { - return (!(ob.length instanceof Array ? JSON.stringify(ob.length)==JSON.stringify(0) : ob.length===0)); - } else { - if ((typeof(ob) instanceof Array ? JSON.stringify(typeof(ob))==JSON.stringify("function") : typeof(ob)==="function")) { - return true; - } else { - if ((ob.__class__ && ( ob.__class__ ) === dict)) { - return (!(Object.keys(ob["$wrapped"]).length instanceof Array ? JSON.stringify(Object.keys(ob["$wrapped"]).length)==JSON.stringify(0) : Object.keys(ob["$wrapped"]).length===0)); - } else { - if (ob instanceof Object) { - return (!(Object.keys(ob).length instanceof Array ? JSON.stringify(Object.keys(ob).length)==JSON.stringify(0) : Object.keys(ob).length===0)); - } else { - return true; - } - } - } - } - } - } - } - } -};__test_if_true__.is_wrapper = true; -var __replace_method = function(ob, a, b) { - - if ((typeof(ob) instanceof Array ? JSON.stringify(typeof(ob))==JSON.stringify("string") : typeof(ob)==="string")) { - return ob.split(a).join(b); - } else { - return ob.replace(a, b); - } -};__replace_method.is_wrapper = true; -var __split_method = function(ob, delim) { - - if ((typeof(ob) instanceof Array ? JSON.stringify(typeof(ob))==JSON.stringify("string") : typeof(ob)==="string")) { - if (( delim ) === undefined) { - return ob.split(" "); - } else { - return ob.split(delim); - } - } else { - if (( delim ) === undefined) { - return ob.split(); - } else { - return ob.split(delim); - } - } -};__split_method.is_wrapper = true; -__dom_array_types__ = []; -if ((typeof(NodeList) instanceof Array ? JSON.stringify(typeof(NodeList))==JSON.stringify("function") : typeof(NodeList)==="function")) { - __dom_array_types__ = [NodeList, FileList, DOMStringList, HTMLCollection, SVGNumberList, SVGTransformList]; - if ((typeof(DataTransferItemList) instanceof Array ? JSON.stringify(typeof(DataTransferItemList))==JSON.stringify("function") : typeof(DataTransferItemList)==="function")) { - __dom_array_types__.push(DataTransferItemList); - } - if ((typeof(HTMLAllCollection) instanceof Array ? JSON.stringify(typeof(HTMLAllCollection))==JSON.stringify("function") : typeof(HTMLAllCollection)==="function")) { - __dom_array_types__.push(HTMLAllCollection); - } - if ((typeof(SVGElementInstanceList) instanceof Array ? JSON.stringify(typeof(SVGElementInstanceList))==JSON.stringify("function") : typeof(SVGElementInstanceList)==="function")) { - __dom_array_types__.push(SVGElementInstanceList); - } - if ((typeof(ClientRectList) instanceof Array ? JSON.stringify(typeof(ClientRectList))==JSON.stringify("function") : typeof(ClientRectList)==="function")) { - __dom_array_types__.push(ClientRectList); - } -} -var __is_some_array = function(ob) { - - if (( __dom_array_types__.length ) > 0) { - var __iter14 = __dom_array_types__; - if (! (__iter14 instanceof Array || typeof __iter14 == "string" || __is_typed_array(__iter14) || __is_some_array(__iter14) )) { __iter14 = __object_keys__(__iter14) } - for (var __idx14=0; __idx14 < __iter14.length; __idx14++) { - var t = __iter14[ __idx14 ]; - if (__test_if_true__(ob instanceof t)) { - return true; - } - } - } - return false; -} - -var __is_typed_array = function(ob) { - - if (__test_if_true__((ob instanceof Int8Array || ob instanceof Uint8Array))) { - return true; - } else { - if (__test_if_true__((ob instanceof Int16Array || ob instanceof Uint16Array))) { - return true; - } else { - if (__test_if_true__((ob instanceof Int32Array || ob instanceof Uint32Array))) { - return true; - } else { - if (__test_if_true__((ob instanceof Float32Array || ob instanceof Float64Array))) { - return true; - } else { - return false; - } - } - } - } -} - -var __js_typed_array = function(t, a) { - var arr; - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("i") : t==="i")) { - arr = new Int32Array(a.length); - } - arr.set(a); - return arr; -} - -var __contains__ = function(ob, a) { - var t; - t = typeof(ob); - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("string") : t==="string")) { - if ((ob.indexOf(a) instanceof Array ? JSON.stringify(ob.indexOf(a))==JSON.stringify(-1) : ob.indexOf(a)===-1)) { - return false; - } else { - return true; - } - } else { - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("number") : t==="number")) { - throw new TypeError; - } else { - if (__test_if_true__(__is_typed_array(ob))) { - var __iter15 = ob; - if (! (__iter15 instanceof Array || typeof __iter15 == "string" || __is_typed_array(__iter15) || __is_some_array(__iter15) )) { __iter15 = __object_keys__(__iter15) } - for (var __idx15=0; __idx15 < __iter15.length; __idx15++) { - var x = __iter15[ __idx15 ]; - if ((x instanceof Array ? JSON.stringify(x)==JSON.stringify(a) : x===a)) { - return true; - } - } - return false; - } else { - if (__test_if_true__(ob.__contains__)) { - return ob.__contains__(a); - } else { - if (__test_if_true__((ob instanceof Object && Object.hasOwnProperty.call(ob, a)))) { - return true; - } else { - return false; - } - } - } - } - } -} - -var __add_op = function(a, b) { - var c,t; - t = typeof(a); - if (__test_if_true__(((t instanceof Array ? JSON.stringify(t)==JSON.stringify("string") : t==="string") || (t instanceof Array ? JSON.stringify(t)==JSON.stringify("number") : t==="number")))) { - return a+b; - } else { - if (__test_if_true__(a instanceof Array)) { - c = []; - c.extend(a); - c.extend(b); - return c; - } else { - if (__test_if_true__(a.__add__)) { - return a.__add__(b); - } else { - throw new TypeError("invalid objects for addition"); - } - } - } -} - -var __mul_op = function(a, b) { - var c,arr,t; - t = typeof(a); - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("number") : t==="number")) { - return a * b; - } else { - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("string") : t==="string")) { - arr = []; - var i,i__end__; - i = 0; - i__end__ = b; - while (( i ) < i__end__) { - arr.append(a); - i += 1; - } - return "".join(arr); - } else { - if (__test_if_true__(a instanceof Array)) { - c = []; - - i = 0; - i__end__ = b; - while (( i ) < i__end__) { - c.extend(a); - i += 1; - } - return c; - } else { - if (__test_if_true__(a.__mul__)) { - return a.__mul__(b); - } else { - throw new TypeError("invalid objects for multiplication"); - } - } - } - } -} - -var __jsdict = function(items) { - var d,key; - d = {}; - var __iter16 = items; - if (! (__iter16 instanceof Array || typeof __iter16 == "string" || __is_typed_array(__iter16) || __is_some_array(__iter16) )) { __iter16 = __object_keys__(__iter16) } - for (var __idx16=0; __idx16 < __iter16.length; __idx16++) { - var item = __iter16[ __idx16 ]; - key = item[0]; - if (__test_if_true__(key instanceof Array)) { - key = JSON.stringify(key); - } else { - if (__test_if_true__(key.__uid__)) { - key = key.__uid__; - } - } - d[key] = item[1]; - } - return d; -} - -var __jsdict_get = function(ob, key, default_value) { - - if (__test_if_true__(ob instanceof Object)) { - if (__test_if_true__(key instanceof Array)) { - key = JSON.stringify(key); - } - if (__test_if_true__(key in ob)) { - return ob[key]; - } - return default_value; - } else { - if (( default_value ) !== undefined) { - return ob.get(key, default_value); - } else { - return ob.get(key); - } - } -} - -var __jsdict_set = function(ob, key, value) { - - if (__test_if_true__(ob instanceof Object)) { - if (__test_if_true__(key instanceof Array)) { - key = JSON.stringify(key); - } - ob[key] = value; - } else { - ob.set(key,value); - } -} - -var __jsdict_keys = function(ob) { - - if (__test_if_true__(ob instanceof Object)) { - return Object.keys( ob ); - } else { - return ob.keys(); - } -} - -var __jsdict_values = function(ob) { - var arr,value; - if (__test_if_true__(ob instanceof Object)) { - arr = []; - var __iter17 = ob; - if (! (__iter17 instanceof Array || typeof __iter17 == "string" || __is_typed_array(__iter17) || __is_some_array(__iter17) )) { __iter17 = __object_keys__(__iter17) } - for (var __idx17=0; __idx17 < __iter17.length; __idx17++) { - var key = __iter17[ __idx17 ]; - if (__test_if_true__(ob.hasOwnProperty(key))) { - value = ob[key]; - arr.push(value); - } - } - return arr; - } else { - return ob.values(); - } -} - -var __jsdict_items = function(ob) { - var arr,value; - if (__test_if_true__((ob instanceof Object || ( ob.items ) === undefined))) { - arr = []; - var __iter18 = ob; - if (! (__iter18 instanceof Array || typeof __iter18 == "string" || __is_typed_array(__iter18) || __is_some_array(__iter18) )) { __iter18 = __object_keys__(__iter18) } - for (var __idx18=0; __idx18 < __iter18.length; __idx18++) { - var key = __iter18[ __idx18 ]; - if (__test_if_true__(Object.hasOwnProperty.call(ob, key))) { - value = ob[key]; - arr.push([key, value]); - } - } - return arr; - } else { - return ob.items(); - } -} - -var __jsdict_pop = function(ob, key, _kwargs_) { - var v; - if (!( _kwargs_ instanceof Object )) {; - var _kwargs_ = {ob: arguments[0],key: arguments[1],_default: arguments[2]}; - }; - if (_kwargs_ === undefined || _kwargs_._default === undefined) {var _default = null} else {var _default=_kwargs_._default}; - if (__test_if_true__(ob instanceof Array)) { - if (__test_if_true__(ob.length)) { - if (( key ) === undefined) { - return ob.pop(); - } else { - return ob.splice(key, 1)[0]; - } - } else { - throw new IndexError(key); - } - } else { - if (__test_if_true__(ob instanceof Object)) { - if (__test_if_true__(key in ob)) { - v = ob[key]; - delete ob[key]; - return v; - } else { - if (( _default ) === undefined) { - throw new KeyError(key); - } else { - return _default; - } - } - } else { - return ob.pop(key, _default); - } - } -} - -var dir = function(ob) { - - if (__test_if_true__(ob instanceof Object)) { - return Object.keys( ob ); - } else { - return __object_keys__(ob); - } -} - -var __object_keys__ = function(ob) { - var arr; - "\n notes:\n . Object.keys(ob) will not work because we create PythonJS objects using `Object.create(null)`\n . this is different from Object.keys because it traverses the prototype chain.\n "; - arr = []; - for (var key in ob) { arr.push(key) }; - return arr; -} - -var __bind_property_descriptors__ = function(o, klass) { - var prop,desc; - var __iter19 = klass.__properties__; - if (! (__iter19 instanceof Array || typeof __iter19 == "string" || __is_typed_array(__iter19) || __is_some_array(__iter19) )) { __iter19 = __object_keys__(__iter19) } - for (var __idx19=0; __idx19 < __iter19.length; __idx19++) { - var name = __iter19[ __idx19 ]; - desc = __jsdict([["enumerable", true]]); - prop = klass.__properties__[name]; - if (__test_if_true__(prop["get"])) { - desc["get"] = __generate_getter__(klass, o, name); - } - if (__test_if_true__(prop["set"])) { - desc["set"] = __generate_setter__(klass, o, name); - } - Object.defineProperty(o, name, desc); - } - var __iter20 = klass.__bases__; - if (! (__iter20 instanceof Array || typeof __iter20 == "string" || __is_typed_array(__iter20) || __is_some_array(__iter20) )) { __iter20 = __object_keys__(__iter20) } - for (var __idx20=0; __idx20 < __iter20.length; __idx20++) { - var base = __iter20[ __idx20 ]; - __bind_property_descriptors__(o, base); - } -} - -var __generate_getter__ = function(klass, o, n) { - - var __lambda__ = function() { - - return klass.__properties__[n]["get"]([o], __jsdict([])); - } - - return __lambda__; -} - -var __generate_setter__ = function(klass, o, n) { - - var __lambda__ = function(v) { - - return klass.__properties__[n]["set"]([o, v], __jsdict([])); - } - - return __lambda__; -} - -var __sprintf = function(fmt, args) { - var chunks,item,arr; - if (__test_if_true__(args instanceof Array)) { - chunks = fmt.split("%s"); - arr = []; - var i; - i = 0; - var __iter21 = chunks; - if (! (__iter21 instanceof Array || typeof __iter21 == "string" || __is_typed_array(__iter21) || __is_some_array(__iter21) )) { __iter21 = __object_keys__(__iter21) } - for (var __idx21=0; __idx21 < __iter21.length; __idx21++) { - var txt = __iter21[ __idx21 ]; - arr.append(txt); - if (( i ) >= args.length) { - break; - } - item = args[i]; - if ((typeof(item) instanceof Array ? JSON.stringify(typeof(item))==JSON.stringify("string") : typeof(item)==="string")) { - arr.append(item); - } else { - if ((typeof(item) instanceof Array ? JSON.stringify(typeof(item))==JSON.stringify("number") : typeof(item)==="number")) { - arr.append(("" + item)); - } else { - arr.append(Object.prototype.toString.call(item)); - } - } - i += 1; - } - return "".join(arr); - } else { - return __replace_method(fmt, "%s", args); - } -} - -var __create_class__ = function(class_name, parents, attrs, props) { - var f,klass,prop; - "Create a PythonScript class"; - klass = Object.create(null); - klass.__bases__ = parents; - klass.__name__ = class_name; - klass.__unbound_methods__ = Object.create(null); - klass.__all_method_names__ = []; - klass.__properties__ = props; - klass.__attributes__ = attrs; - var __iter22 = attrs; - if (! (__iter22 instanceof Array || typeof __iter22 == "string" || __is_typed_array(__iter22) || __is_some_array(__iter22) )) { __iter22 = __object_keys__(__iter22) } - for (var __idx22=0; __idx22 < __iter22.length; __idx22++) { - var key = __iter22[ __idx22 ]; - if ((typeof(attrs[key]) instanceof Array ? JSON.stringify(typeof(attrs[key]))==JSON.stringify("function") : typeof(attrs[key])==="function")) { - klass.__all_method_names__.push(key); - f = attrs[key]; - if (__test_if_true__((hasattr(f, "is_classmethod") && f.is_classmethod))) { - /*pass*/ - } else { - if (__test_if_true__((hasattr(f, "is_staticmethod") && f.is_staticmethod))) { - /*pass*/ - } else { - klass.__unbound_methods__[key] = attrs[key]; - } - } - } - if ((key instanceof Array ? JSON.stringify(key)==JSON.stringify("__getattribute__") : key==="__getattribute__")) { - continue - } - klass[key] = attrs[key]; - } - klass.__setters__ = []; - klass.__getters__ = []; - var __iter23 = klass.__properties__; - if (! (__iter23 instanceof Array || typeof __iter23 == "string" || __is_typed_array(__iter23) || __is_some_array(__iter23) )) { __iter23 = __object_keys__(__iter23) } - for (var __idx23=0; __idx23 < __iter23.length; __idx23++) { - var name = __iter23[ __idx23 ]; - prop = klass.__properties__[name]; - klass.__getters__.push(name); - if (__test_if_true__(prop["set"])) { - klass.__setters__.push(name); - } - } - var __iter24 = klass.__bases__; - if (! (__iter24 instanceof Array || typeof __iter24 == "string" || __is_typed_array(__iter24) || __is_some_array(__iter24) )) { __iter24 = __object_keys__(__iter24) } - for (var __idx24=0; __idx24 < __iter24.length; __idx24++) { - var base = __iter24[ __idx24 ]; - Array.prototype.push.apply(klass.__getters__, base.__getters__); - Array.prototype.push.apply(klass.__setters__, base.__setters__); - Array.prototype.push.apply(klass.__all_method_names__, base.__all_method_names__); - } - var __call__ = function() { - var has_getattr,wrapper,object,has_getattribute; - "Create a PythonJS object"; - object = Object.create(null); - object.__class__ = klass; - object.__dict__ = object; - has_getattribute = false; - has_getattr = false; - var __iter25 = klass.__all_method_names__; - if (! (__iter25 instanceof Array || typeof __iter25 == "string" || __is_typed_array(__iter25) || __is_some_array(__iter25) )) { __iter25 = __object_keys__(__iter25) } - for (var __idx25=0; __idx25 < __iter25.length; __idx25++) { - var name = __iter25[ __idx25 ]; - if ((name instanceof Array ? JSON.stringify(name)==JSON.stringify("__getattribute__") : name==="__getattribute__")) { - has_getattribute = true; - } else { - if ((name instanceof Array ? JSON.stringify(name)==JSON.stringify("__getattr__") : name==="__getattr__")) { - has_getattr = true; - } else { - wrapper = __get__(object, name); - if (__test_if_true__(! (wrapper.is_wrapper))) { - console.log(["RUNTIME ERROR: failed to get wrapper for:", name]); - } - } - } - } - if (__test_if_true__(has_getattr)) { - __get__(object, "__getattr__"); - } - if (__test_if_true__(has_getattribute)) { - __get__(object, "__getattribute__"); - } - __bind_property_descriptors__(object, klass); - if (__test_if_true__(object.__init__)) { - object.__init__.apply(this, arguments); - } - return object; - } - - __call__.is_wrapper = true; - klass.__call__ = __call__; - return klass; -} - -var type = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{"bases": null, "class_dict": null},args:["ob_or_class_name", "bases", "class_dict"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("type", __sig__, args, kwargs); - var ob_or_class_name = __args__['ob_or_class_name']; - var bases = __args__['bases']; - var class_dict = __args__['class_dict']; - "\n type(object) -> the object's type\n type(name, bases, dict) -> a __new__>>type ## broken? - TODO test\n "; - if (__test_if_true__((( bases ) === null && ( class_dict ) === null))) { - return ob_or_class_name.__class__; - } else { - return create_class(ob_or_class_name, bases, class_dict); - } -};type.is_wrapper = true; -var hasattr = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["ob", "attr"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("hasattr", __sig__, args, kwargs); - var ob = __args__['ob']; - var attr = __args__['attr']; - return Object.hasOwnProperty.call(ob, attr); -};hasattr.is_wrapper = true; -var getattr = function(args, kwargs) { - var prop; - var __sig__,__args__; - __sig__ = { kwargs:{"property": false},args:["ob", "attr", "property"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("getattr", __sig__, args, kwargs); - var ob = __args__['ob']; - var attr = __args__['attr']; - var property = __args__['property']; - if (__test_if_true__(property)) { - prop = _get_upstream_property(ob.__class__, attr); - if (__test_if_true__((prop && prop["get"]))) { - return prop["get"]([ob], __jsdict([])); - } else { - console.log(["ERROR: getattr property error", prop]); - } - } else { - return __get__(ob, attr); - } -};getattr.is_wrapper = true; -var setattr = function(args, kwargs) { - var prop; - var __sig__,__args__; - __sig__ = { kwargs:{"property": false},args:["ob", "attr", "value", "property"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("setattr", __sig__, args, kwargs); - var ob = __args__['ob']; - var attr = __args__['attr']; - var value = __args__['value']; - var property = __args__['property']; - if (__test_if_true__(property)) { - prop = _get_upstream_property(ob.__class__, attr); - if (__test_if_true__((prop && prop["set"]))) { - prop["set"]([ob, value], __jsdict([])); - } else { - console.log(["ERROR: setattr property error", prop]); - } - } else { - __set__(ob, attr, value); - } -};setattr.is_wrapper = true; -var issubclass = function(args, kwargs) { - var i,bases; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["C", "B"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("issubclass", __sig__, args, kwargs); - var C = __args__['C']; - var B = __args__['B']; - if (( C ) === B) { - return true; - } - bases = C.__bases__; - i = 0; - while (( i ) < __get__(bases, "length", "missing attribute `length` - line 655: while i < bases.length:")) { - if (__test_if_true__(issubclass([((bases instanceof Array) ? bases[i] : __get__(bases, "__getitem__", "line 656: if issubclass( bases[i], B ):")([i], __NULL_OBJECT__)), B], __NULL_OBJECT__))) { - return true; - } - i += 1; - } - return false; -};issubclass.is_wrapper = true; -var isinstance = function(args, kwargs) { - var ob_class; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["ob", "klass"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("isinstance", __sig__, args, kwargs); - var ob = __args__['ob']; - var klass = __args__['klass']; - if (__test_if_true__((( ob ) === undefined || ( ob ) === null))) { - return false; - } else { - if (__test_if_true__((ob instanceof Array && ( klass ) === list))) { - return true; - } else { - if (__test_if_true__(! (Object.hasOwnProperty.call(ob, "__class__")))) { - return false; - } - } - } - ob_class = ob.__class__; - if (( ob_class ) === undefined) { - return false; - } else { - return issubclass([ob_class, klass], __NULL_OBJECT__); - } -};isinstance.is_wrapper = true; -var int = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["a"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("int", __sig__, args, kwargs); - var a = __args__['a']; - a = Math.round(a); - if (__test_if_true__(isNaN(a))) { - throw new ValueError("not a number"); - } - return a; -};int.is_wrapper = true; -var int16 = function(a) { - var arr; - arr = new Int16Array(1); - arr[0] = a; - return arr; -} - -var float = function(args, kwargs) { - var b; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["a"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("float", __sig__, args, kwargs); - var a = __args__['a']; - if ((typeof(a) instanceof Array ? JSON.stringify(typeof(a))==JSON.stringify("string") : typeof(a)==="string")) { - if ((a.lower() instanceof Array ? JSON.stringify(a.lower())==JSON.stringify("nan") : a.lower()==="nan")) { - return NaN; - } else { - if ((a.lower() instanceof Array ? JSON.stringify(a.lower())==JSON.stringify("inf") : a.lower()==="inf")) { - return Infinity; - } - } - } - b = Number(a); - if (__test_if_true__(isNaN(b))) { - throw new ValueError(("can not convert to float: " + a)); - } - return b; -};float.is_wrapper = true; -var round = function(args, kwargs) { - var p,b; - var __sig__,__args__; - __sig__ = { kwargs:{"places": 0},args:["a", "places"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("round", __sig__, args, kwargs); - var a = __args__['a']; - var places = __args__['places']; - b = ("" + a); - if ((b.indexOf(".") instanceof Array ? JSON.stringify(b.indexOf("."))==JSON.stringify(-1) : b.indexOf(".")===-1)) { - return a; - } else { - p = Math.pow(10, places); - return (Math.round((a * p)) / p); - } -};round.is_wrapper = true; -var str = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["s"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("str", __sig__, args, kwargs); - var s = __args__['s']; - return ("" + s); -};str.is_wrapper = true; -var _setup_str_prototype = function() { - - "\n Extend JavaScript String.prototype with methods that implement the Python str API.\n The decorator @String.prototype.[name] assigns the function to the prototype,\n and ensures that the special 'this' variable will work.\n "; - var func = function(a) { - - if ((this.indexOf(a) instanceof Array ? JSON.stringify(this.indexOf(a))==JSON.stringify(-1) : this.indexOf(a)===-1)) { - return false; - } else { - return true; - } - } - - Object.defineProperty(String.prototype, "__contains__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(index) { - - if (( index ) < 0) { - return this[(this.length + index)]; - } else { - return this[index]; - } - } - - Object.defineProperty(String.prototype, "get", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(self) { - - return __get__(Iterator, "__call__")([this, 0], __NULL_OBJECT__); - } - - Object.defineProperty(String.prototype, "__iter__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(idx) { - - if (( idx ) < 0) { - return this[(this.length + idx)]; - } else { - return this[idx]; - } - } - - Object.defineProperty(String.prototype, "__getitem__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.length; - } - - Object.defineProperty(String.prototype, "__len__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(start, stop, step) { - - if (__test_if_true__((( start ) === undefined && ( stop ) === undefined && (step instanceof Array ? JSON.stringify(step)==JSON.stringify(-1) : step===-1)))) { - return this.split("").reverse().join(""); - } else { - if (( stop ) < 0) { - stop = (this.length + stop); - } - return this.substring(start, stop); - } - } - - Object.defineProperty(String.prototype, "__getslice__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.split("\n"); - } - - Object.defineProperty(String.prototype, "splitlines", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.trim(); - } - - Object.defineProperty(String.prototype, "strip", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(a) { - - if ((this.substring(0, a.length) instanceof Array ? JSON.stringify(this.substring(0, a.length))==JSON.stringify(a) : this.substring(0, a.length)===a)) { - return true; - } else { - return false; - } - } - - Object.defineProperty(String.prototype, "startswith", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(a) { - - if ((this.substring((this.length - a.length), this.length) instanceof Array ? JSON.stringify(this.substring((this.length - a.length), this.length))==JSON.stringify(a) : this.substring((this.length - a.length), this.length)===a)) { - return true; - } else { - return false; - } - } - - Object.defineProperty(String.prototype, "endswith", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(a) { - var i,arr,out; - out = ""; - if (__test_if_true__(a instanceof Array)) { - arr = a; - } else { - arr = a["$wrapped"]; - } - i = 0; - var __iter26 = arr; - if (! (__iter26 instanceof Array || typeof __iter26 == "string" || __is_typed_array(__iter26) || __is_some_array(__iter26) )) { __iter26 = __object_keys__(__iter26) } - for (var __idx26=0; __idx26 < __iter26.length; __idx26++) { - var value = __iter26[ __idx26 ]; - out += value; - i += 1; - if (( i ) < arr.length) { - out += this; - } - } - return out; - } - - Object.defineProperty(String.prototype, "join", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.toUpperCase(); - } - - Object.defineProperty(String.prototype, "upper", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.toLowerCase(); - } - - Object.defineProperty(String.prototype, "lower", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(a) { - var i; - i = this.indexOf(a); - if ((i instanceof Array ? JSON.stringify(i)==JSON.stringify(-1) : i===-1)) { - throw new ValueError((a + " - not in string")); - } - return i; - } - - Object.defineProperty(String.prototype, "index", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(a) { - - return this.indexOf(a); - } - - Object.defineProperty(String.prototype, "find", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - var digits; - digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; - var __iter27 = this; - if (! (__iter27 instanceof Array || typeof __iter27 == "string" || __is_typed_array(__iter27) || __is_some_array(__iter27) )) { __iter27 = __object_keys__(__iter27) } - for (var __idx27=0; __idx27 < __iter27.length; __idx27++) { - var char = __iter27[ __idx27 ]; - if (__contains__(digits, char)) { - /*pass*/ - } else { - return false; - } - } - return true; - } - - Object.defineProperty(String.prototype, "isdigit", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - var digits; - digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."]; - var __iter28 = this; - if (! (__iter28 instanceof Array || typeof __iter28 == "string" || __is_typed_array(__iter28) || __is_some_array(__iter28) )) { __iter28 = __object_keys__(__iter28) } - for (var __idx28=0; __idx28 < __iter28.length; __idx28++) { - var char = __iter28[ __idx28 ]; - if (__contains__(digits, char)) { - /*pass*/ - } else { - return false; - } - } - return true; - } - - Object.defineProperty(String.prototype, "isnumber", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(encoding) { - - return this; - } - - Object.defineProperty(String.prototype, "decode", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(encoding) { - - return this; - } - - Object.defineProperty(String.prototype, "encode", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(fmt) { - var keys,r; - r = this; - keys = Object.keys(fmt); - var __iter29 = keys; - if (! (__iter29 instanceof Array || typeof __iter29 == "string" || __is_typed_array(__iter29) || __is_some_array(__iter29) )) { __iter29 = __object_keys__(__iter29) } - for (var __idx29=0; __idx29 < __iter29.length; __idx29++) { - var key = __iter29[ __idx29 ]; - r = r.split(key).join(fmt[key]); - } - r = r.split("{").join("").split("}").join(""); - return r; - } - - Object.defineProperty(String.prototype, "format", { enumerable:false,value:func,writeable:true,configurable:true }); -};_setup_str_prototype.is_wrapper = true; -_setup_str_prototype(); -var __sort_method = function(ob) { - - if (__test_if_true__(ob instanceof Array)) { - var f = function(a, b) { - - if (( a ) < b) { - return -1; - } else { - if (( a ) > b) { - return 1; - } else { - return 0; - } - } - } - - return ob.sort( f ); - } else { - return ob.sort(); - } -} - -var _setup_array_prototype = function() { - - var func = function() { - var i,item; - i = 0; - while (( i ) < this.length) { - item = this[i]; - if ((typeof(item) instanceof Array ? JSON.stringify(typeof(item))==JSON.stringify("object") : typeof(item)==="object")) { - if (__test_if_true__(item.jsify)) { - this[i] = item.jsify(); - } - } - i += 1; - } - return this; - } - - Object.defineProperty(Array.prototype, "jsify", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(a) { - - if ((this.indexOf(a) instanceof Array ? JSON.stringify(this.indexOf(a))==JSON.stringify(-1) : this.indexOf(a)===-1)) { - return false; - } else { - return true; - } - } - - Object.defineProperty(Array.prototype, "__contains__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.length; - } - - Object.defineProperty(Array.prototype, "__len__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(index) { - - return this[index]; - } - - Object.defineProperty(Array.prototype, "get", { enumerable:false,value:func,writeable:true,configurable:true }); - var __getitem__ = function(index) { - - if (( index ) < 0) { - index = (this.length + index); - } - return this[index]; - } - - Object.defineProperty(Array.prototype, "__getitem__", { enumerable:false,value:__getitem__,writeable:true,configurable:true }); - var __setitem__ = function(index, value) { - - if (( index ) < 0) { - index = (this.length + index); - } - this[index] = value; - } - - Object.defineProperty(Array.prototype, "__setitem__", { enumerable:false,value:__setitem__,writeable:true,configurable:true }); - var func = function() { - - return __get__(Iterator, "__call__")([this, 0], __NULL_OBJECT__); - } - - Object.defineProperty(Array.prototype, "__iter__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(start, stop, step) { - var i,arr,n; - arr = []; - start = (start | 0); - if (( stop ) === undefined) { - stop = this.length; - } - if (( start ) < 0) { - start = (this.length + start); - } - if (( stop ) < 0) { - stop = (this.length + stop); - } - if ((typeof(step) instanceof Array ? JSON.stringify(typeof(step))==JSON.stringify("number") : typeof(step)==="number")) { - if (( step ) < 0) { - i = start; - while (( i ) >= 0) { - arr.push(this[i]); - i += step; - } - return arr; - } else { - i = start; - n = stop; - while (( i ) < n) { - arr.push(this[i]); - i += step; - } - return arr; - } - } else { - i = start; - n = stop; - while (( i ) < n) { - arr.push(this[i]); - i += 1; - } - return arr; - } - } - - Object.defineProperty(Array.prototype, "__getslice__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(start, stop, step, items) { - var arr; - if (( start ) === undefined) { - start = 0; - } - if (( stop ) === undefined) { - stop = this.length; - } - arr = [start, (stop - start)]; - var __iter30 = items; - if (! (__iter30 instanceof Array || typeof __iter30 == "string" || __is_typed_array(__iter30) || __is_some_array(__iter30) )) { __iter30 = __object_keys__(__iter30) } - for (var __idx30=0; __idx30 < __iter30.length; __idx30++) { - var item = __iter30[ __idx30 ]; - arr.push(item); - } - this.splice.apply(this, arr); - } - - Object.defineProperty(Array.prototype, "__setslice__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(item) { - - this.push(item); - return this; - } - - Object.defineProperty(Array.prototype, "append", { enumerable:false,value:func,writeable:true,configurable:true }); - var extend = function(other) { - - var __iter31 = other; - if (! (__iter31 instanceof Array || typeof __iter31 == "string" || __is_typed_array(__iter31) || __is_some_array(__iter31) )) { __iter31 = __object_keys__(__iter31) } - for (var __idx31=0; __idx31 < __iter31.length; __idx31++) { - var obj = __iter31[ __idx31 ]; - this.push(obj); - } - return this; - } - - Object.defineProperty(Array.prototype, "extend", { enumerable:false,value:extend,writeable:true,configurable:true }); - var func = function(item) { - var index; - index = this.indexOf(item); - this.splice(index, 1); - } - - Object.defineProperty(Array.prototype, "remove", { enumerable:false,value:func,writeable:true,configurable:true }); - var insert = function(index, obj) { - - if (( index ) < 0) { - index = (this.length + index); - } - this.splice(index, 0, obj); - } - - Object.defineProperty(Array.prototype, "insert", { enumerable:false,value:insert,writeable:true,configurable:true }); - var index = function(obj) { - - return this.indexOf(obj); - } - - Object.defineProperty(Array.prototype, "index", { enumerable:false,value:index,writeable:true,configurable:true }); - var count = function(obj) { - var a; - a = 0; - var __iter32 = this; - if (! (__iter32 instanceof Array || typeof __iter32 == "string" || __is_typed_array(__iter32) || __is_some_array(__iter32) )) { __iter32 = __object_keys__(__iter32) } - for (var __idx32=0; __idx32 < __iter32.length; __idx32++) { - var item = __iter32[ __idx32 ]; - if (( item ) === obj) { - a += 1; - } - } - return a; - } - - Object.defineProperty(Array.prototype, "count", { enumerable:false,value:count,writeable:true,configurable:true }); - var func = function(x, low, high) { - var a,mid; - if (( low ) === undefined) { - low = 0; - } - if (( high ) === undefined) { - high = this.length; - } - while (( low ) < high) { - a = (low + high); - mid = Math.floor((a / 2)); - if (( x ) < this[mid]) { - high = mid; - } else { - low = (mid + 1); - } - } - return low; - } - - Object.defineProperty(Array.prototype, "bisect", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(other) { - var f; - var __lambda__ = function(i) { - - return (other.indexOf(i) instanceof Array ? JSON.stringify(other.indexOf(i))==JSON.stringify(-1) : other.indexOf(i)===-1); - } - - f = __lambda__; - return this.filter(f); - } - - Object.defineProperty(Array.prototype, "difference", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(other) { - var f; - var __lambda__ = function(i) { - - return (!(other.indexOf(i) instanceof Array ? JSON.stringify(other.indexOf(i))==JSON.stringify(-1) : other.indexOf(i)===-1)); - } - - f = __lambda__; - return this.filter(f); - } - - Object.defineProperty(Array.prototype, "intersection", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(other) { - - var __iter33 = this; - if (! (__iter33 instanceof Array || typeof __iter33 == "string" || __is_typed_array(__iter33) || __is_some_array(__iter33) )) { __iter33 = __object_keys__(__iter33) } - for (var __idx33=0; __idx33 < __iter33.length; __idx33++) { - var item = __iter33[ __idx33 ]; - if ((other.indexOf(item) instanceof Array ? JSON.stringify(other.indexOf(item))==JSON.stringify(-1) : other.indexOf(item)===-1)) { - return false; - } - } - return true; - } - - Object.defineProperty(Array.prototype, "issubset", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - var i,arr; - arr = []; - i = 0; - while (( i ) < this.length) { - arr.push(this[i]); - i += 1; - } - return arr; - } - - Object.defineProperty(Array.prototype, "copy", { enumerable:false,value:func,writeable:true,configurable:true }); -};_setup_array_prototype.is_wrapper = true; -_setup_array_prototype(); -var _setup_nodelist_prototype = function() { - - var func = function(a) { - - if ((this.indexOf(a) instanceof Array ? JSON.stringify(this.indexOf(a))==JSON.stringify(-1) : this.indexOf(a)===-1)) { - return false; - } else { - return true; - } - } - - Object.defineProperty(NodeList.prototype, "__contains__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function() { - - return this.length; - } - - Object.defineProperty(NodeList.prototype, "__len__", { enumerable:false,value:func,writeable:true,configurable:true }); - var func = function(index) { - - return this[index]; - } - - Object.defineProperty(NodeList.prototype, "get", { enumerable:false,value:func,writeable:true,configurable:true }); - var __getitem__ = function(index) { - - if (( index ) < 0) { - index = (this.length + index); - } - return this[index]; - } - - Object.defineProperty(NodeList.prototype, "__getitem__", { enumerable:false,value:__getitem__,writeable:true,configurable:true }); - var __setitem__ = function(index, value) { - - if (( index ) < 0) { - index = (this.length + index); - } - this[index] = value; - } - - Object.defineProperty(NodeList.prototype, "__setitem__", { enumerable:false,value:__setitem__,writeable:true,configurable:true }); - var func = function() { - - return __get__(Iterator, "__call__")([this, 0], __NULL_OBJECT__); - } - - Object.defineProperty(NodeList.prototype, "__iter__", { enumerable:false,value:func,writeable:true,configurable:true }); - var index = function(obj) { - - return this.indexOf(obj); - } - - Object.defineProperty(NodeList.prototype, "index", { enumerable:false,value:index,writeable:true,configurable:true }); -};_setup_nodelist_prototype.is_wrapper = true; -if (__test_if_true__(((__NODEJS__ instanceof Array ? JSON.stringify(__NODEJS__)==JSON.stringify(false) : __NODEJS__===false) && (__WEBWORKER__ instanceof Array ? JSON.stringify(__WEBWORKER__)==JSON.stringify(false) : __WEBWORKER__===false)))) { - _setup_nodelist_prototype(); -} -var bisect = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{"low": null, "high": null},args:["a", "x", "low", "high"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("bisect", __sig__, args, kwargs); - var a = __args__['a']; - var x = __args__['x']; - var low = __args__['low']; - var high = __args__['high']; - return a.bisect(x, low, high); -};bisect.is_wrapper = true; -var range = function(args, kwargs) { - var i,arr; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["num", "stop", "step"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("range", __sig__, args, kwargs); - var num = __args__['num']; - var stop = __args__['stop']; - var step = __args__['step']; - "Emulates Python's range function"; - if (( stop ) !== undefined) { - i = num; - num = stop; - } else { - i = 0; - } - if (( step ) === undefined) { - step = 1; - } - arr = []; - while (( i ) < num) { - arr.push(i); - i += step; - } - return arr; -};range.is_wrapper = true; -var xrange = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["num", "stop", "step"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("xrange", __sig__, args, kwargs); - var num = __args__['num']; - var stop = __args__['stop']; - var step = __args__['step']; - return range([num, stop, step], __NULL_OBJECT__); -};xrange.is_wrapper = true; -var sum = function(args, kwargs) { - var a; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["arr"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("sum", __sig__, args, kwargs); - var arr = __args__['arr']; - a = 0; - var b,__iterator__40; - __iterator__40 = __get__(__get__(arr, "__iter__", "no iterator - line 1065: for b in arr:"), "__call__")([], __NULL_OBJECT__); - var __next__40; - __next__40 = __get__(__iterator__40, "next"); - while (( __iterator__40.index ) < __iterator__40.length) { - b = __next__40(); - a += b; - } - return a; -};sum.is_wrapper = true; -var StopIteration,__StopIteration_attrs,__StopIteration_parents; -__StopIteration_attrs = {}; -__StopIteration_parents = []; -__StopIteration_properties = {}; -StopIteration = __create_class__("StopIteration", __StopIteration_parents, __StopIteration_attrs, __StopIteration_properties); -var len = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["ob"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("len", __sig__, args, kwargs); - var ob = __args__['ob']; - if (__test_if_true__(ob instanceof Array)) { - return ob.length; - } else { - if (__test_if_true__(__is_typed_array(ob))) { - return ob.length; - } else { - if (__test_if_true__(ob instanceof ArrayBuffer)) { - return ob.byteLength; - } else { - if (__test_if_true__(ob.__len__)) { - return ob.__len__(); - } else { - return Object.keys(ob).length; - } - } - } - } -};len.is_wrapper = true; -var next = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["obj"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("next", __sig__, args, kwargs); - var obj = __args__['obj']; - return __get__(__get__(obj, "next", "missing attribute `next` - line 1083: return obj.next()"), "__call__")(); -};next.is_wrapper = true; -var map = function(args, kwargs) { - var arr,v; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["func", "objs"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("map", __sig__, args, kwargs); - var func = __args__['func']; - var objs = __args__['objs']; - arr = []; - var ob,__iterator__41; - __iterator__41 = __get__(__get__(objs, "__iter__", "no iterator - line 1086: for ob in objs:"), "__call__")([], __NULL_OBJECT__); - var __next__41; - __next__41 = __get__(__iterator__41, "next"); - while (( __iterator__41.index ) < __iterator__41.length) { - ob = __next__41(); - v = __get__(func, "__call__")([ob], __NULL_OBJECT__); - arr.push(v); - } - return arr; -};map.is_wrapper = true; -var filter = function(args, kwargs) { - var arr; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["func", "objs"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("filter", __sig__, args, kwargs); - var func = __args__['func']; - var objs = __args__['objs']; - arr = []; - var ob,__iterator__42; - __iterator__42 = __get__(__get__(objs, "__iter__", "no iterator - line 1093: for ob in objs:"), "__call__")([], __NULL_OBJECT__); - var __next__42; - __next__42 = __get__(__iterator__42, "next"); - while (( __iterator__42.index ) < __iterator__42.length) { - ob = __next__42(); - if (__test_if_true__(__get__(func, "__call__")([ob], __NULL_OBJECT__))) { - arr.push(ob); - } - } - return arr; -};filter.is_wrapper = true; -var min = function(args, kwargs) { - var a; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["lst"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("min", __sig__, args, kwargs); - var lst = __args__['lst']; - a = null; - var value,__iterator__43; - __iterator__43 = __get__(__get__(lst, "__iter__", "no iterator - line 1100: for value in lst:"), "__call__")([], __NULL_OBJECT__); - var __next__43; - __next__43 = __get__(__iterator__43, "next"); - while (( __iterator__43.index ) < __iterator__43.length) { - value = __next__43(); - if (( a ) === null) { - a = value; - } else { - if (( value ) < a) { - a = value; - } - } - } - return a; -};min.is_wrapper = true; -var max = function(args, kwargs) { - var a; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["lst"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("max", __sig__, args, kwargs); - var lst = __args__['lst']; - a = null; - var value,__iterator__44; - __iterator__44 = __get__(__get__(lst, "__iter__", "no iterator - line 1106: for value in lst:"), "__call__")([], __NULL_OBJECT__); - var __next__44; - __next__44 = __get__(__iterator__44, "next"); - while (( __iterator__44.index ) < __iterator__44.length) { - value = __next__44(); - if (( a ) === null) { - a = value; - } else { - if (( value ) > a) { - a = value; - } - } - } - return a; -};max.is_wrapper = true; -var abs = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["num"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("abs", __sig__, args, kwargs); - var num = __args__['num']; - return Math.abs(num); -};abs.is_wrapper = true; -var ord = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["char"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("ord", __sig__, args, kwargs); - var char = __args__['char']; - return char.charCodeAt(0); -};ord.is_wrapper = true; -var chr = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["num"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("chr", __sig__, args, kwargs); - var num = __args__['num']; - return String.fromCharCode(num); -};chr.is_wrapper = true; -var __ArrayIterator = function(arr, index) { - __ArrayIterator.__init__(this, arr, index); - this.__class__ = __ArrayIterator; - this.__uid__ = ("" + _PythonJS_UID); - _PythonJS_UID += 1; -} - -__ArrayIterator.__uid__ = ("" + _PythonJS_UID); -_PythonJS_UID += 1; -__ArrayIterator.prototype.__init__ = function(arr, index) { - - this.arr = arr; - this.index = index; - this.length = arr.length; -} - -__ArrayIterator.__init__ = function () { return __ArrayIterator.prototype.__init__.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -__ArrayIterator.prototype.next = function() { - var index,arr; - index = this.index; - this.index += 1; - arr = this.arr; - return arr[index]; -} - -__ArrayIterator.next = function () { return __ArrayIterator.prototype.next.apply(arguments[0], Array.prototype.slice.call(arguments,1)) }; -__ArrayIterator.prototype.__properties__ = { }; -__ArrayIterator.prototype.__unbound_methods__ = { }; -var Iterator,__Iterator_attrs,__Iterator_parents; -__Iterator_attrs = {}; -__Iterator_parents = []; -__Iterator_properties = {}; -var __Iterator___init__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "obj", "index"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__Iterator___init__", __sig__, args, kwargs); - var self = __args__['self']; - var obj = __args__['obj']; - var index = __args__['index']; - self.obj = obj; - self.index = index; - self.length = len([obj], __NULL_OBJECT__); - self.obj_get = __get__(obj, "get", "missing attribute `get` - line 1134: self.obj_get = obj.get ## cache this for speed"); -};__Iterator___init__.is_wrapper = true; -__Iterator_attrs.__init__ = __Iterator___init__; -var __Iterator_next = function(args, kwargs) { - var index; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__Iterator_next", __sig__, args, kwargs); - var self = __args__['self']; - index = self.index; - self.index += 1; - return self.obj_get([index], __jsdict([])); -};__Iterator_next.is_wrapper = true; -__Iterator_attrs.next = __Iterator_next; -Iterator = __create_class__("Iterator", __Iterator_parents, __Iterator_attrs, __Iterator_properties); -var tuple = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["a"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("tuple", __sig__, args, kwargs); - var a = __args__['a']; - if ((Object.keys(arguments).length instanceof Array ? JSON.stringify(Object.keys(arguments).length)==JSON.stringify(0) : Object.keys(arguments).length===0)) { - return []; - } else { - if (__test_if_true__(a instanceof Array)) { - return a.slice(); - } else { - if ((typeof(a) instanceof Array ? JSON.stringify(typeof(a))==JSON.stringify("string") : typeof(a)==="string")) { - return a.split(""); - } else { - console.log(a); - console.log(arguments); - throw new TypeError; - } - } - } -};tuple.is_wrapper = true; -var list = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["a"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("list", __sig__, args, kwargs); - var a = __args__['a']; - if ((Object.keys(arguments).length instanceof Array ? JSON.stringify(Object.keys(arguments).length)==JSON.stringify(0) : Object.keys(arguments).length===0)) { - return []; - } else { - if (__test_if_true__(a instanceof Array)) { - return a.slice(); - } else { - if ((typeof(a) instanceof Array ? JSON.stringify(typeof(a))==JSON.stringify("string") : typeof(a)==="string")) { - return a.split(""); - } else { - console.log(a); - console.log(arguments); - throw new TypeError; - } - } - } -};list.is_wrapper = true; -var __tuple_key__ = function(arr) { - var i,item,r,t; - r = []; - i = 0; - while (( i ) < arr.length) { - item = arr[i]; - t = typeof(item); - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("string") : t==="string")) { - r.append((("'" + item) + "'")); - } else { - if (__test_if_true__(item instanceof Array)) { - r.append(__tuple_key__(item)); - } else { - if ((t instanceof Array ? JSON.stringify(t)==JSON.stringify("object") : t==="object")) { - if (( item.__uid__ ) === undefined) { - throw new KeyError(item); - } - r.append(item.__uid__); - } else { - r.append(item); - } - } - } - i += 1; - } - return r.join(","); -} - -var dict,__dict_attrs,__dict_parents; -__dict_attrs = {}; -__dict_parents = []; -__dict_properties = {}; -var __dict___init__ = function(args, kwargs) { - var k,ob,value,v; - var __sig__,__args__; - __sig__ = { kwargs:{"js_object": null, "pointer": null},args:["self", "js_object", "pointer"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict___init__", __sig__, args, kwargs); - var self = __args__['self']; - var js_object = __args__['js_object']; - var pointer = __args__['pointer']; - self["$wrapped"] = __jsdict([]); - if (( pointer ) !== null) { - self["$wrapped"] = pointer; - } else { - if (__test_if_true__(js_object)) { - ob = js_object; - if (__test_if_true__(ob instanceof Array)) { - var o,__iterator__45; - __iterator__45 = __get__(__get__(ob, "__iter__", "no iterator - line 1196: for o in ob:"), "__call__")([], __NULL_OBJECT__); - var __next__45; - __next__45 = __get__(__iterator__45, "next"); - while (( __iterator__45.index ) < __iterator__45.length) { - o = __next__45(); - if (o instanceof Array) { - k = o[0]; - v = o[1]; - } else { - k = o["key"]; - v = o["value"]; - } - try { -__get__(__get__(self, "__setitem__", "missing attribute `__setitem__` - line 1203: self.__setitem__( k,v )"), "__call__")([k, v], __NULL_OBJECT__); - } catch(__exception__) { -if (__exception__ == KeyError || __exception__ instanceof KeyError) { -throw new KeyError("error in dict init, bad key"); -} - -} - } - } else { - if (__test_if_true__(isinstance([ob, dict], __NULL_OBJECT__))) { - var key,__iterator__46; - __iterator__46 = __get__(__get__(__jsdict_keys(ob), "__iter__", "no iterator - line 1207: for key in ob.keys():"), "__call__")([], __NULL_OBJECT__); - var __next__46; - __next__46 = __get__(__iterator__46, "next"); - while (( __iterator__46.index ) < __iterator__46.length) { - key = __next__46(); - value = ((ob instanceof Array) ? ob[key] : __get__(ob, "__getitem__", "line 1208: value = ob[ key ]")([key], __NULL_OBJECT__)); - __get__(__get__(self, "__setitem__", "missing attribute `__setitem__` - line 1209: self.__setitem__( key, value )"), "__call__")([key, value], __NULL_OBJECT__); - } - } else { - console.log(["ERROR init dict from:", js_object]); - throw new TypeError; - } - } - } - } -};__dict___init__.is_wrapper = true; -__dict_attrs.__init__ = __dict___init__; -var __dict_jsify = function(args, kwargs) { - var keys,value; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_jsify", __sig__, args, kwargs); - var self = __args__['self']; - keys = __object_keys__([self["$wrapped"]], __NULL_OBJECT__); - var key,__iterator__47; - __iterator__47 = __get__(__get__(keys, "__iter__", "no iterator - line 1216: for key in keys:"), "__call__")([], __NULL_OBJECT__); - var __next__47; - __next__47 = __get__(__iterator__47, "next"); - while (( __iterator__47.index ) < __iterator__47.length) { - key = __next__47(); - value = __get__(self["$wrapped"], "__getitem__", "line 1217: value = self[...][key]")([key], __NULL_OBJECT__); - if ((typeof(value) instanceof Array ? JSON.stringify(typeof(value))==JSON.stringify("object") : typeof(value)==="object")) { - if (__test_if_true__(hasattr([value, "jsify"], __NULL_OBJECT__))) { - __get__(__get__(self["$wrapped"], "__setitem__"), "__call__")([key, __get__(__get__(value, "jsify", "missing attribute `jsify` - line 1220: self[...][key] = value.jsify()"), "__call__")()], {}); - } - } else { - if ((typeof(value) instanceof Array ? JSON.stringify(typeof(value))==JSON.stringify("function") : typeof(value)==="function")) { - throw new RuntimeError("can not jsify function"); - } - } - } - return self["$wrapped"]; -};__dict_jsify.is_wrapper = true; -__dict_attrs.jsify = __dict_jsify; -var __dict_copy = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_copy", __sig__, args, kwargs); - var self = __args__['self']; - return __get__(dict, "__call__")([self], __NULL_OBJECT__); -};__dict_copy.is_wrapper = true; -__dict_attrs.copy = __dict_copy; -var __dict_clear = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_clear", __sig__, args, kwargs); - var self = __args__['self']; - self["$wrapped"] = __jsdict([]); -};__dict_clear.is_wrapper = true; -__dict_attrs.clear = __dict_clear; -var __dict_has_key = function(args, kwargs) { - var __dict; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "key"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_has_key", __sig__, args, kwargs); - var self = __args__['self']; - var key = __args__['key']; - __dict = self["$wrapped"]; - if (__test_if_true__(typeof(key) === 'object' || typeof(key) === 'function')) { - key = __get__(key, "__uid__", "missing attribute `__uid__` - line 1233: key = key.__uid__"); - } - if (__test_if_true__(key in __dict)) { - return true; - } else { - return false; - } -};__dict_has_key.is_wrapper = true; -__dict_attrs.has_key = __dict_has_key; -var __dict_update = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "other"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_update", __sig__, args, kwargs); - var self = __args__['self']; - var other = __args__['other']; - var key,__iterator__48; - __iterator__48 = __get__(__get__(other, "__iter__", "no iterator - line 1239: for key in other:"), "__call__")([], __NULL_OBJECT__); - var __next__48; - __next__48 = __get__(__iterator__48, "next"); - while (( __iterator__48.index ) < __iterator__48.length) { - key = __next__48(); - __get__(__get__(self, "__setitem__", "missing attribute `__setitem__` - line 1240: self.__setitem__( key, other[key] )"), "__call__")([key, ((other instanceof Array) ? other[key] : __get__(other, "__getitem__", "line 1240: self.__setitem__( key, other[key] )")([key], __NULL_OBJECT__))], __NULL_OBJECT__); - } -};__dict_update.is_wrapper = true; -__dict_attrs.update = __dict_update; -var __dict_items = function(args, kwargs) { - var arr; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_items", __sig__, args, kwargs); - var self = __args__['self']; - arr = []; - var key,__iterator__49; - __iterator__49 = __get__(__get__(__jsdict_keys(self), "__iter__", "no iterator - line 1243: for key in self.keys():"), "__call__")([], __NULL_OBJECT__); - var __next__49; - __next__49 = __get__(__iterator__49, "next"); - while (( __iterator__49.index ) < __iterator__49.length) { - key = __next__49(); - __get__(__get__(arr, "append", "missing attribute `append` - line 1244: arr.append( [key, self[key]] )"), "__call__")([[key, __get__(self, "__getitem__")([key], __NULL_OBJECT__)]], __NULL_OBJECT__); - } - return arr; -};__dict_items.is_wrapper = true; -__dict_attrs.items = __dict_items; -var __dict_get = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{"_default": null},args:["self", "key", "_default"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_get", __sig__, args, kwargs); - var self = __args__['self']; - var key = __args__['key']; - var _default = __args__['_default']; - try { -return __get__(self, "__getitem__")([key], __NULL_OBJECT__); - } catch(__exception__) { -return _default; - -} -};__dict_get.is_wrapper = true; -__dict_attrs.get = __dict_get; -var __dict_set = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "key", "value"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_set", __sig__, args, kwargs); - var self = __args__['self']; - var key = __args__['key']; - var value = __args__['value']; - __get__(__get__(self, "__setitem__", "missing attribute `__setitem__` - line 1252: self.__setitem__(key, value)"), "__call__")([key, value], __NULL_OBJECT__); -};__dict_set.is_wrapper = true; -__dict_attrs.set = __dict_set; -var __dict___len__ = function(args, kwargs) { - var __dict; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict___len__", __sig__, args, kwargs); - var self = __args__['self']; - __dict = self["$wrapped"]; - return Object.keys(__dict).length; -};__dict___len__.is_wrapper = true; -__dict_attrs.__len__ = __dict___len__; -var __dict___getitem__ = function(args, kwargs) { - var __dict,msg,err; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "key"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict___getitem__", __sig__, args, kwargs); - var self = __args__['self']; - var key = __args__['key']; - "\n note: `\"4\"` and `4` are the same key in javascript, is there a sane way to workaround this,\n that can remain compatible with external javascript?\n "; - __dict = self["$wrapped"]; - err = false; - if (__test_if_true__(key instanceof Array)) { - key = __tuple_key__(key); - } else { - if (__test_if_true__(typeof(key) === 'object' || typeof(key) === 'function')) { - if (__test_if_true__(key.__uid__ && key.__uid__ in __dict)) { - return __dict[key.__uid__]; - } else { - err = true; - } - } - } - if (__test_if_true__((__dict && key in __dict))) { - return __dict[key]; - } else { - err = true; - } - if (__test_if_true__(err)) { - msg = __sprintf("missing key: %s -\n", key); - throw new KeyError(__jsdict_keys(__dict)); - } -};__dict___getitem__.is_wrapper = true; -__dict_attrs.__getitem__ = __dict___getitem__; -var __dict___setitem__ = function(args, kwargs) { - var __dict; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "key", "value"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict___setitem__", __sig__, args, kwargs); - var self = __args__['self']; - var key = __args__['key']; - var value = __args__['value']; - if (( key ) === undefined) { - throw new KeyError("undefined is invalid key type"); - } - if (( key ) === null) { - throw new KeyError("null is invalid key type"); - } - __dict = self["$wrapped"]; - if (__test_if_true__(key instanceof Array)) { - key = __tuple_key__(key); - if (( key ) === undefined) { - throw new KeyError("undefined is invalid key type (tuple)"); - } - __dict[key] = value; - } else { - if (__test_if_true__(typeof(key) === 'object' || typeof(key) === 'function')) { - if (__test_if_true__(key.__uid__ === undefined)) { - key.__uid__ = '' + _PythonJS_UID++; - } - __dict[key.__uid__] = value; - } else { - __dict[key] = value; - } - } -};__dict___setitem__.is_wrapper = true; -__dict_attrs.__setitem__ = __dict___setitem__; -var __dict_keys = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_keys", __sig__, args, kwargs); - var self = __args__['self']; - return Object.keys(self["$wrapped"]); -};__dict_keys.is_wrapper = true; -__dict_attrs.keys = __dict_keys; -var __dict_pop = function(args, kwargs) { - var js_object,v; - var __sig__,__args__; - __sig__ = { kwargs:{"d": null},args:["self", "key", "d"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_pop", __sig__, args, kwargs); - var self = __args__['self']; - var key = __args__['key']; - var d = __args__['d']; - v = __jsdict_get(self, key, null); - if (( v ) === null) { - return d; - } else { - js_object = self["$wrapped"]; - delete js_object[key]; - return v; - } -};__dict_pop.is_wrapper = true; -__dict_attrs.pop = __dict_pop; -var __dict_values = function(args, kwargs) { - var keys,out; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict_values", __sig__, args, kwargs); - var self = __args__['self']; - keys = Object.keys(self["$wrapped"]); - out = []; - var __iter34 = keys; - if (! (__iter34 instanceof Array || typeof __iter34 == "string" || __is_typed_array(__iter34) || __is_some_array(__iter34) )) { __iter34 = __object_keys__(__iter34) } - for (var __idx34=0; __idx34 < __iter34.length; __idx34++) { - var key = __iter34[ __idx34 ]; - out.push(self["$wrapped"][key]); - } - return out; -};__dict_values.is_wrapper = true; -__dict_attrs.values = __dict_values; -var __dict___contains__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "value"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict___contains__", __sig__, args, kwargs); - var self = __args__['self']; - var value = __args__['value']; - try { -__dict___getitem__([self, value], {}); -return true; - } catch(__exception__) { -return false; - -} -};__dict___contains__.is_wrapper = true; -__dict_attrs.__contains__ = __dict___contains__; -var __dict___iter__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__dict___iter__", __sig__, args, kwargs); - var self = __args__['self']; - return __get__(Iterator, "__call__")([__jsdict_keys(self), 0], __NULL_OBJECT__); -};__dict___iter__.is_wrapper = true; -__dict_attrs.__iter__ = __dict___iter__; -dict = __create_class__("dict", __dict_parents, __dict_attrs, __dict_properties); -var set = function(args, kwargs) { - var keys,mask,s,hashtable,key,fallback; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["a"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("set", __sig__, args, kwargs); - var a = __args__['a']; - "\n This returns an array that is a minimal implementation of set.\n Often sets are used simply to remove duplicate entries from a list, \n and then it get converted back to a list, it is safe to use fastset for this.\n The array prototype is overloaded with basic set functions:\n difference\n intersection\n issubset\n Note: sets in Python are not subscriptable, but can be iterated over.\n Python docs say that set are unordered, some programs may rely on this disorder\n for randomness, for sets of integers we emulate the unorder only uppon initalization \n of the set, by masking the value by bits-1. Python implements sets starting with an \n array of length 8, and mask of 7, if set length grows to 6 (3/4th), then it allocates \n a __new__>>array of length 32 and mask of 31. This is only emulated for arrays of \n integers up to an array length of 1536.\n "; - hashtable = null; - if (( a.length ) <= 1536) { - hashtable = __jsdict([]); - keys = []; - if (( a.length ) < 6) { - mask = 7; - } else { - if (( a.length ) < 22) { - mask = 31; - } else { - if (( a.length ) < 86) { - mask = 127; - } else { - if (( a.length ) < 342) { - mask = 511; - } else { - mask = 2047; - } - } - } - } - } - fallback = false; - if (__test_if_true__(hashtable)) { - var __iter35 = a; - if (! (__iter35 instanceof Array || typeof __iter35 == "string" || __is_typed_array(__iter35) || __is_some_array(__iter35) )) { __iter35 = __object_keys__(__iter35) } - for (var __idx35=0; __idx35 < __iter35.length; __idx35++) { - var b = __iter35[ __idx35 ]; - if (__test_if_true__(((typeof(b) instanceof Array ? JSON.stringify(typeof(b))==JSON.stringify("number") : typeof(b)==="number") && ( b ) === ( (b | 0) )))) { - key = (b & mask); - hashtable[key] = b; - keys.push(key); - } else { - fallback = true; - break; - } - } - } else { - fallback = true; - } - s = []; - if (__test_if_true__(fallback)) { - var __iter36 = a; - if (! (__iter36 instanceof Array || typeof __iter36 == "string" || __is_typed_array(__iter36) || __is_some_array(__iter36) )) { __iter36 = __object_keys__(__iter36) } - for (var __idx36=0; __idx36 < __iter36.length; __idx36++) { - var item = __iter36[ __idx36 ]; - if ((s.indexOf(item) instanceof Array ? JSON.stringify(s.indexOf(item))==JSON.stringify(-1) : s.indexOf(item)===-1)) { - s.push(item); - } - } - } else { - __sort_method(keys); - var __iter37 = keys; - if (! (__iter37 instanceof Array || typeof __iter37 == "string" || __is_typed_array(__iter37) || __is_some_array(__iter37) )) { __iter37 = __object_keys__(__iter37) } - for (var __idx37=0; __idx37 < __iter37.length; __idx37++) { - var key = __iter37[ __idx37 ]; - s.push(hashtable[key]); - } - } - return s; -};set.is_wrapper = true; -var frozenset = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["a"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("frozenset", __sig__, args, kwargs); - var a = __args__['a']; - return set([a], __NULL_OBJECT__); -};frozenset.is_wrapper = true; -var array,__array_attrs,__array_parents; -__array_attrs = {}; -__array_parents = []; -__array_properties = {}; -__array_typecodes = __jsdict([["c", 1], ["b", 1], ["B", 1], ["u", 2], ["h", 2], ["H", 2], ["i", 4], ["I", 4], ["l", 4], ["L", 4], ["f", 4], ["d", 8], ["float32", 4], ["float16", 2], ["float8", 1], ["int32", 4], ["uint32", 4], ["int16", 2], ["uint16", 2], ["int8", 1], ["uint8", 1]]); -__array_attrs.typecodes = __array_typecodes; -__array_typecode_names = __jsdict([["c", "Int8"], ["b", "Int8"], ["B", "Uint8"], ["u", "Uint16"], ["h", "Int16"], ["H", "Uint16"], ["i", "Int32"], ["I", "Uint32"], ["f", "Float32"], ["d", "Float64"], ["float32", "Float32"], ["float16", "Int16"], ["float8", "Int8"], ["int32", "Int32"], ["uint32", "Uint32"], ["int16", "Int16"], ["uint16", "Uint16"], ["int8", "Int8"], ["uint8", "Uint8"]]); -__array_attrs.typecode_names = __array_typecode_names; -var __array___init__ = function(args, kwargs) { - var size,buff; - var __sig__,__args__; - __sig__ = { kwargs:{"initializer": null, "little_endian": false},args:["self", "typecode", "initializer", "little_endian"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array___init__", __sig__, args, kwargs); - var self = __args__['self']; - var typecode = __args__['typecode']; - var initializer = __args__['initializer']; - var little_endian = __args__['little_endian']; - self.typecode = typecode; - self.itemsize = __get__(__get__(self, "typecodes", "missing attribute `typecodes` - line 1436: self.itemsize = self.typecodes[ typecode ]"), "__getitem__", "line 1436: self.itemsize = self.typecodes[ typecode ]")([typecode], __NULL_OBJECT__); - self.little_endian = little_endian; - if (__test_if_true__(initializer)) { - self.length = len([initializer], __NULL_OBJECT__); - self.bytes = (self.length * self.itemsize); - if ((self.typecode instanceof Array ? JSON.stringify(self.typecode)==JSON.stringify("float8") : self.typecode==="float8")) { - self._scale = max([[abs([min([initializer], __NULL_OBJECT__)], __NULL_OBJECT__), max([initializer], __NULL_OBJECT__)]], __NULL_OBJECT__); - self._norm_get = (self._scale / 127); - self._norm_set = (1.0 / self._norm_get); - } else { - if ((self.typecode instanceof Array ? JSON.stringify(self.typecode)==JSON.stringify("float16") : self.typecode==="float16")) { - self._scale = max([[abs([min([initializer], __NULL_OBJECT__)], __NULL_OBJECT__), max([initializer], __NULL_OBJECT__)]], __NULL_OBJECT__); - self._norm_get = (self._scale / 32767); - self._norm_set = (1.0 / self._norm_get); - } - } - } else { - self.length = 0; - self.bytes = 0; - } - size = self.bytes; - buff = new ArrayBuffer(size); - self.dataview = new DataView(buff); - self.buffer = buff; - __get__(__get__(self, "fromlist", "missing attribute `fromlist` - line 1457: self.fromlist( initializer )"), "__call__")([initializer], __NULL_OBJECT__); -};__array___init__.is_wrapper = true; -__array_attrs.__init__ = __array___init__; -var __array___len__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array___len__", __sig__, args, kwargs); - var self = __args__['self']; - return self.length; -};__array___len__.is_wrapper = true; -__array_attrs.__len__ = __array___len__; -var __array___contains__ = function(args, kwargs) { - var arr; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "value"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array___contains__", __sig__, args, kwargs); - var self = __args__['self']; - var value = __args__['value']; - arr = __get__(__get__(self, "to_array", "missing attribute `to_array` - line 1463: arr = self.to_array()"), "__call__")(); - if ((arr.indexOf(value) instanceof Array ? JSON.stringify(arr.indexOf(value))==JSON.stringify(-1) : arr.indexOf(value)===-1)) { - return false; - } else { - return true; - } -};__array___contains__.is_wrapper = true; -__array_attrs.__contains__ = __array___contains__; -var __array___getitem__ = function(args, kwargs) { - var func_name,dataview,value,step,func,offset; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "index"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array___getitem__", __sig__, args, kwargs); - var self = __args__['self']; - var index = __args__['index']; - step = self.itemsize; - offset = (step * index); - dataview = self.dataview; - func_name = ("get" + __get__(__get__(self, "typecode_names", "missing attribute `typecode_names` - line 1471: func_name = 'get'+self.typecode_names[ self.typecode ]"), "__getitem__", "line 1471: func_name = 'get'+self.typecode_names[ self.typecode ]")([self.typecode], __NULL_OBJECT__)); - func = dataview[func_name].bind(dataview); - if (( offset ) < self.bytes) { - value = func(offset); - if ((self.typecode instanceof Array ? JSON.stringify(self.typecode)==JSON.stringify("float8") : self.typecode==="float8")) { - value = (value * self._norm_get); - } else { - if ((self.typecode instanceof Array ? JSON.stringify(self.typecode)==JSON.stringify("float16") : self.typecode==="float16")) { - value = (value * self._norm_get); - } - } - return value; - } else { - throw new IndexError(index); - } -};__array___getitem__.is_wrapper = true; -__array_attrs.__getitem__ = __array___getitem__; -var __array___setitem__ = function(args, kwargs) { - var func_name,dataview,step,func,offset; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "index", "value"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array___setitem__", __sig__, args, kwargs); - var self = __args__['self']; - var index = __args__['index']; - var value = __args__['value']; - step = self.itemsize; - if (( index ) < 0) { - index = ((self.length + index) - 1); - } - offset = (step * index); - dataview = self.dataview; - func_name = ("set" + __get__(__get__(self, "typecode_names", "missing attribute `typecode_names` - line 1487: func_name = 'set'+self.typecode_names[ self.typecode ]"), "__getitem__", "line 1487: func_name = 'set'+self.typecode_names[ self.typecode ]")([self.typecode], __NULL_OBJECT__)); - func = dataview[func_name].bind(dataview); - if (( offset ) < self.bytes) { - if ((self.typecode instanceof Array ? JSON.stringify(self.typecode)==JSON.stringify("float8") : self.typecode==="float8")) { - value = (value * self._norm_set); - } else { - if ((self.typecode instanceof Array ? JSON.stringify(self.typecode)==JSON.stringify("float16") : self.typecode==="float16")) { - value = (value * self._norm_set); - } - } - func(offset, value); - } else { - throw new IndexError(index); - } -};__array___setitem__.is_wrapper = true; -__array_attrs.__setitem__ = __array___setitem__; -var __array___iter__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array___iter__", __sig__, args, kwargs); - var self = __args__['self']; - return __get__(Iterator, "__call__")([self, 0], __NULL_OBJECT__); -};__array___iter__.is_wrapper = true; -__array_attrs.__iter__ = __array___iter__; -var __array_get = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "index"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_get", __sig__, args, kwargs); - var self = __args__['self']; - var index = __args__['index']; - return __array___getitem__([self, index], {}); -};__array_get.is_wrapper = true; -__array_attrs.get = __array_get; -var __array_fromlist = function(args, kwargs) { - var typecode,i,func_name,dataview,length,item,step,func,offset,size; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "lst"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_fromlist", __sig__, args, kwargs); - var self = __args__['self']; - var lst = __args__['lst']; - length = len([lst], __NULL_OBJECT__); - step = self.itemsize; - typecode = self.typecode; - size = (length * step); - dataview = self.dataview; - func_name = ("set" + __get__(__get__(self, "typecode_names", "missing attribute `typecode_names` - line 1507: func_name = 'set'+self.typecode_names[ typecode ]"), "__getitem__", "line 1507: func_name = 'set'+self.typecode_names[ typecode ]")([typecode], __NULL_OBJECT__)); - func = dataview[func_name].bind(dataview); - if (( size ) <= self.bytes) { - i = 0; - offset = 0; - while (( i ) < length) { - item = ((lst instanceof Array) ? lst[i] : __get__(lst, "__getitem__", "line 1512: item = lst[i]")([i], __NULL_OBJECT__)); - if ((typecode instanceof Array ? JSON.stringify(typecode)==JSON.stringify("float8") : typecode==="float8")) { - item *= self._norm_set; - } else { - if ((typecode instanceof Array ? JSON.stringify(typecode)==JSON.stringify("float16") : typecode==="float16")) { - item *= self._norm_set; - } - } - func(offset,item); - offset += step; - i += 1; - } - } else { - throw new TypeError; - } -};__array_fromlist.is_wrapper = true; -__array_attrs.fromlist = __array_fromlist; -var __array_resize = function(args, kwargs) { - var source,new_buff,target,new_size,buff; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "length"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_resize", __sig__, args, kwargs); - var self = __args__['self']; - var length = __args__['length']; - buff = self.buffer; - source = new Uint8Array(buff); - new_size = (length * self.itemsize); - new_buff = new ArrayBuffer(new_size); - target = new Uint8Array(new_buff); - target.set(source); - self.length = length; - self.bytes = new_size; - self.buffer = new_buff; - self.dataview = new DataView(new_buff); -};__array_resize.is_wrapper = true; -__array_attrs.resize = __array_resize; -var __array_append = function(args, kwargs) { - var length; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "value"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_append", __sig__, args, kwargs); - var self = __args__['self']; - var value = __args__['value']; - length = self.length; - __get__(__get__(self, "resize", "missing attribute `resize` - line 1535: self.resize( self.length + 1 )"), "__call__")([(self.length + 1)], __NULL_OBJECT__); - __get__(__get__(self, "__setitem__"), "__call__")([length, value], {}); -};__array_append.is_wrapper = true; -__array_attrs.append = __array_append; -var __array_extend = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "lst"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_extend", __sig__, args, kwargs); - var self = __args__['self']; - var lst = __args__['lst']; - var value,__iterator__54; - __iterator__54 = __get__(__get__(lst, "__iter__", "no iterator - line 1538: for value in lst:"), "__call__")([], __NULL_OBJECT__); - var __next__54; - __next__54 = __get__(__iterator__54, "next"); - while (( __iterator__54.index ) < __iterator__54.length) { - value = __next__54(); - __get__(__get__(self, "append", "missing attribute `append` - line 1539: self.append( value )"), "__call__")([value], __NULL_OBJECT__); - } -};__array_extend.is_wrapper = true; -__array_attrs.extend = __array_extend; -var __array_to_array = function(args, kwargs) { - var i,item,arr; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_to_array", __sig__, args, kwargs); - var self = __args__['self']; - arr = []; - i = 0; - while (( i ) < self.length) { - item = __array___getitem__([self, i], {}); - arr.push( item ); - i += 1; - } - return arr; -};__array_to_array.is_wrapper = true; -__array_attrs.to_array = __array_to_array; -var __array_to_list = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_to_list", __sig__, args, kwargs); - var self = __args__['self']; - return __get__(__get__(self, "to_array", "missing attribute `to_array` - line 1549: return self.to_array()"), "__call__")(); -};__array_to_list.is_wrapper = true; -__array_attrs.to_list = __array_to_list; -var __array_to_ascii = function(args, kwargs) { - var i,length,arr,string; - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__array_to_ascii", __sig__, args, kwargs); - var self = __args__['self']; - string = ""; - arr = __get__(__get__(self, "to_array", "missing attribute `to_array` - line 1552: arr = self.to_array()"), "__call__")(); - i = 0; - length = __get__(arr, "length", "missing attribute `length` - line 1553: i = 0; length = arr.length"); - while (( i ) < length) { - var num = arr[i]; - var char = String.fromCharCode(num); - string += char; - i += 1; - } - return string; -};__array_to_ascii.is_wrapper = true; -__array_attrs.to_ascii = __array_to_ascii; -array = __create_class__("array", __array_parents, __array_attrs, __array_properties); -var file,__file_attrs,__file_parents; -__file_attrs = {}; -__file_parents = []; -__file_properties = {}; -var __file___init__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self", "path", "flags"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__file___init__", __sig__, args, kwargs); - var self = __args__['self']; - var path = __args__['path']; - var flags = __args__['flags']; - self.path = path; - if ((flags instanceof Array ? JSON.stringify(flags)==JSON.stringify("rb") : flags==="rb")) { - self.flags = "r"; - self.binary = true; - } else { - if ((flags instanceof Array ? JSON.stringify(flags)==JSON.stringify("wb") : flags==="wb")) { - self.flags = "w"; - self.binary = true; - } else { - self.flags = flags; - self.binary = false; - } - } - self.flags = flags; -};__file___init__.is_wrapper = true; -__file_attrs.__init__ = __file___init__; -var __file_read = function(args, kwargs) { - var _fs,path; - var __sig__,__args__; - __sig__ = { kwargs:{"binary": false},args:["self", "binary"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__file_read", __sig__, args, kwargs); - var self = __args__['self']; - var binary = __args__['binary']; - _fs = __get__(require, "__call__")(["fs"], __NULL_OBJECT__); - path = self.path; - if (__test_if_true__((binary || self.binary))) { - return _fs.readFileSync(path, { encoding:null }); - } else { - return _fs.readFileSync(path, __jsdict([["encoding", "utf8"]])); - } -};__file_read.is_wrapper = true; -__file_attrs.read = __file_read; -var __file_write = function(args, kwargs) { - var path,buff,_fs; - var __sig__,__args__; - __sig__ = { kwargs:{"binary": false},args:["self", "data", "binary"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__file_write", __sig__, args, kwargs); - var self = __args__['self']; - var data = __args__['data']; - var binary = __args__['binary']; - _fs = __get__(require, "__call__")(["fs"], __NULL_OBJECT__); - path = self.path; - if (__test_if_true__((binary || self.binary))) { - binary = (binary || self.binary); - if ((binary instanceof Array ? JSON.stringify(binary)==JSON.stringify("base64") : binary==="base64")) { - buff = new Buffer(data, "base64"); - _fs.writeFileSync(path, buff, __jsdict([["encoding", null]])); - } else { - _fs.writeFileSync(path, data, __jsdict([["encoding", null]])); - } - } else { - _fs.writeFileSync(path, data, __jsdict([["encoding", "utf8"]])); - } -};__file_write.is_wrapper = true; -__file_attrs.write = __file_write; -var __file_close = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{},args:["self"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__file_close", __sig__, args, kwargs); - var self = __args__['self']; - /*pass*/ -};__file_close.is_wrapper = true; -__file_attrs.close = __file_close; -file = __create_class__("file", __file_parents, __file_attrs, __file_properties); -var __open__ = function(args, kwargs) { - - var __sig__,__args__; - __sig__ = { kwargs:{"mode": null},args:["path", "mode"] }; - if ((args instanceof Array && (Object.prototype.toString.call(kwargs) instanceof Array ? JSON.stringify(Object.prototype.toString.call(kwargs))==JSON.stringify("[object Object]") : Object.prototype.toString.call(kwargs)==="[object Object]") && (arguments.length instanceof Array ? JSON.stringify(arguments.length)==JSON.stringify(2) : arguments.length===2))) { - /*pass*/ - } else { - args = Array.prototype.slice.call(arguments, 0, __sig__.args.length); - kwargs = {}; - } - __args__ = __getargs__("__open__", __sig__, args, kwargs); - var path = __args__['path']; - var mode = __args__['mode']; - return __get__(file, "__call__")([path, mode], __NULL_OBJECT__); -};__open__.is_wrapper = true; -json = __jsdict([["loads", (function (s) {return JSON.parse(s);})], ["dumps", (function (o) {return JSON.stringify(o);})]]); -var __get_other_workers_with_shared_arg = function(worker, ob) { - var a,other,args; - a = []; - var __iter38 = threading.workers; - if (! (__iter38 instanceof Array || typeof __iter38 == "string" || __is_typed_array(__iter38) || __is_some_array(__iter38) )) { __iter38 = __object_keys__(__iter38) } - for (var __idx38=0; __idx38 < __iter38.length; __idx38++) { - var b = __iter38[ __idx38 ]; - other = b["worker"]; - args = b["args"]; - if (( other ) !== worker) { - var __iter39 = args; - if (! (__iter39 instanceof Array || typeof __iter39 == "string" || __is_typed_array(__iter39) || __is_some_array(__iter39) )) { __iter39 = __object_keys__(__iter39) } - for (var __idx39=0; __idx39 < __iter39.length; __idx39++) { - var arg = __iter39[ __idx39 ]; - if (( arg ) === ob) { - if (! (__contains__(a, other))) { - a.append(other); - } - } - } - } - } - return a; -} - -threading = __jsdict([["workers", []], ["_blocking_callback", null]]); -var __start_new_thread = function(f, args) { - var jsargs,worker; - worker = new Worker(f); - worker.__uid__ = len(threading.workers); - threading.workers.append(__jsdict([["worker", worker], ["args", args]])); - var func = function(event) { - var a,res,value; - if ((event.data.type instanceof Array ? JSON.stringify(event.data.type)==JSON.stringify("terminate") : event.data.type==="terminate")) { - worker.terminate(); - } else { - if ((event.data.type instanceof Array ? JSON.stringify(event.data.type)==JSON.stringify("call") : event.data.type==="call")) { - res = __module__[event.data.function].apply(null, event.data.args); - if (__test_if_true__((( res ) !== null && ( res ) !== undefined))) { - worker.postMessage(__jsdict([["type", "return_to_blocking_callback"], ["result", res]])); - } - } else { - if ((event.data.type instanceof Array ? JSON.stringify(event.data.type)==JSON.stringify("append") : event.data.type==="append")) { - a = args[event.data.argindex]; - a.push(event.data.value); - var __iter40 = __get_other_workers_with_shared_arg(worker, a); - if (! (__iter40 instanceof Array || typeof __iter40 == "string" || __is_typed_array(__iter40) || __is_some_array(__iter40) )) { __iter40 = __object_keys__(__iter40) } - for (var __idx40=0; __idx40 < __iter40.length; __idx40++) { - var other = __iter40[ __idx40 ]; - other.postMessage(__jsdict([["type", "append"], ["argindex", event.data.argindex], ["value", event.data.value]])); - } - } else { - if ((event.data.type instanceof Array ? JSON.stringify(event.data.type)==JSON.stringify("__setitem__") : event.data.type==="__setitem__")) { - a = args[event.data.argindex]; - value = event.data.value; - if (__test_if_true__(a.__setitem__)) { - a.__setitem__(event.data.index, value); - } else { - a[event.data.index] = value; - } - var __iter41 = __get_other_workers_with_shared_arg(worker, a); - if (! (__iter41 instanceof Array || typeof __iter41 == "string" || __is_typed_array(__iter41) || __is_some_array(__iter41) )) { __iter41 = __object_keys__(__iter41) } - for (var __idx41=0; __idx41 < __iter41.length; __idx41++) { - var other = __iter41[ __idx41 ]; - other.postMessage(__jsdict([["type", "__setitem__"], ["argindex", event.data.argindex], ["key", event.data.index], ["value", event.data.value]])); - } - } else { - throw new RuntimeError("unknown event"); - } - } - } - } - } - - worker.onmessage = func; - jsargs = []; - var i; - i = 0; - var __iter42 = args; - if (! (__iter42 instanceof Array || typeof __iter42 == "string" || __is_typed_array(__iter42) || __is_some_array(__iter42) )) { __iter42 = __object_keys__(__iter42) } - for (var __idx42=0; __idx42 < __iter42.length; __idx42++) { - var arg = __iter42[ __idx42 ]; - if (__test_if_true__(arg.jsify)) { - jsargs.append(arg.jsify()); - } else { - jsargs.append(arg); - } - if (__test_if_true__(arg instanceof Array)) { - __gen_worker_append(worker, arg, i); - } - i += 1; - } - worker.postMessage(__jsdict([["type", "execute"], ["args", jsargs]])); - return worker; -} - -var __gen_worker_append = function(worker, ob, index) { - - var append = function(item) { - - worker.postMessage(__jsdict([["type", "append"], ["argindex", index], ["value", item]])); - ob.push(item); - } - - Object.defineProperty(ob, "append", __jsdict([["enumerable", false], ["value", append], ["writeable", true], ["configurable", true]])); -} - -var __webworker_wrap = function(ob, argindex) { - - if (__test_if_true__(ob instanceof Array)) { - var func = function(index, item) { - - postMessage(__jsdict([["type", "__setitem__"], ["index", index], ["value", item], ["argindex", argindex]])); - Array.prototype.__setitem__.call(ob, index, item); - } - - Object.defineProperty(ob, "__setitem__", __jsdict([["enumerable", false], ["value", func], ["writeable", true], ["configurable", true]])); - var func = function(item) { - - postMessage(__jsdict([["type", "append"], ["value", item], ["argindex", argindex]])); - Array.prototype.push.call(ob, item); - } - - Object.defineProperty(ob, "append", __jsdict([["enumerable", false], ["value", func], ["writeable", true], ["configurable", true]])); - } else { - if ((typeof(ob) instanceof Array ? JSON.stringify(typeof(ob))==JSON.stringify("object") : typeof(ob)==="object")) { - var func = function(key, item) { - - postMessage(__jsdict([["type", "__setitem__"], ["index", key], ["value", item], ["argindex", argindex]])); - ob[key] = item; - } - - Object.defineProperty(ob, "__setitem__", __jsdict([["enumerable", false], ["value", func], ["writeable", true], ["configurable", true]])); - } - } - return ob; -} - -var __rpc__ = function(url, func, args) { - var req; - req = new XMLHttpRequest(); - req.open("POST", url, false); - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - req.send(JSON.stringify(__jsdict([["call", func], ["args", args]]))); - return JSON.parse(req.responseText); -} - -var __rpc_iter__ = function(url, attr) { - var req; - req = new XMLHttpRequest(); - req.open("POST", url, false); - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - req.send(JSON.stringify(__jsdict([["iter", attr]]))); - return JSON.parse(req.responseText); -} - -var __rpc_set__ = function(url, attr, value) { - var req; - req = new XMLHttpRequest(); - req.open("POST", url, false); - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - req.send(JSON.stringify(__jsdict([["set", attr], ["value", value]]))); -} - -var __rpc_get__ = function(url, attr) { - var req; - req = new XMLHttpRequest(); - req.open("POST", url, false); - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); - req.send(JSON.stringify(__jsdict([["get", attr]]))); - return JSON.parse(req.responseText); -} diff --git a/pythonjs/pythonjs.py b/pythonjs/pythonjs.py deleted file mode 100755 index 159f25c..0000000 --- a/pythonjs/pythonjs.py +++ /dev/null @@ -1,1371 +0,0 @@ -#!/usr/bin/env python -# PythonJS to JavaScript Translator -# by Amirouche Boubekki and Brett Hartshorn - copyright 2013 -# License: "New BSD" - - -import os, sys -from types import GeneratorType - -import ast -from ast import Str -from ast import Name -from ast import Tuple -from ast import parse -from ast import Attribute -from ast import NodeVisitor - -#import inline_function -#import code_writer -import typedpython - -class SwapLambda( RuntimeError ): - def __init__(self, node): - self.node = node - RuntimeError.__init__(self) - -class JSGenerator(NodeVisitor): #, inline_function.Inliner): - def __init__(self, requirejs=True, insert_runtime=True, webworker=False, function_expressions=True): - #writer = code_writer.Writer() - #self.setup_inliner( writer ) - self._func_expressions = function_expressions - self._indent = 0 - self._global_functions = {} - self._function_stack = [] - self._requirejs = requirejs - self._insert_runtime = insert_runtime - self._webworker = webworker - self._exports = set() - self._inline_lambda = False - - self.special_decorators = set(['__typedef__', '__glsl__', '__pyfunction__', 'expression']) - self._glsl = False - self._has_glsl = False - self._typed_vars = dict() - - ## the helper function below _mat4_to_vec4 is invalid because something can only be indexed - ## with a constant expression. The GLSL compiler will throw this ERROR: 0:19: '[]' : Index expression must be constant" - #self.glsl_runtime = 'vec4 _mat4_to_vec4( mat4 a, int col) { return vec4(a[col][0], a[col][1], a[col][2],a[col][3]); }' - self.glsl_runtime = 'int _imod(int a, int b) { return int(mod(float(a),float(b))); }' - - def indent(self): return ' ' * self._indent - def push(self): self._indent += 1 - def pull(self): - if self._indent > 0: self._indent -= 1 - - def visit_ClassDef(self, node): - raise NotImplementedError(node) - - - def visit_Global(self, node): - return '/*globals: %s */' %','.join(node.names) - - def visit_Assign(self, node): - # XXX: I'm not sure why it is a list since, mutiple targets are inside a tuple - target = node.targets[0] - if isinstance(target, Tuple): - raise NotImplementedError('target tuple assignment should have been transformed to flat assignment by python_to_pythonjs.py') - else: - target = self.visit(target) - value = self.visit(node.value) - ## visit_BinOp checks for `numpy.float32` and changes the operands from `a*a` to `a[id]*a[id]` - if self._glsl and value.startswith('numpy.'): - self._typed_vars[ target ] = value - return '' - else: - code = '%s = %s;' % (target, value) - if self._requirejs and target not in self._exports and self._indent == 0 and '.' not in target: - self._exports.add( target ) - return code - - def visit_AugAssign(self, node): - ## n++ and n-- are slightly faster than n+=1 and n-=1 - target = self.visit(node.target) - op = self.visit(node.op) - value = self.visit(node.value) - if op=='+' and isinstance(node.value, ast.Num) and node.value.n == 1: - a = '%s ++;' %target - if op=='-' and isinstance(node.value, ast.Num) and node.value.n == 1: - a = '%s --;' %target - else: - a = '%s %s= %s;' %(target, op, value) - return a - - def visit_With(self, node): - r = [] - is_switch = False - if isinstance( node.context_expr, Name ) and node.context_expr.id == '__default__': - r.append('default:') - elif isinstance( node.context_expr, Name ) and node.context_expr.id == '__select__': - r.append('select {') - is_switch = True - elif isinstance( node.context_expr, ast.Call ): - if not isinstance(node.context_expr.func, ast.Name): - raise SyntaxError( self.visit(node.context_expr)) - - if len(node.context_expr.args): - a = self.visit(node.context_expr.args[0]) - else: - assert len(node.context_expr.keywords) - a = '%s = %s' %(node.context_expr.keywords[0].arg, self.visit(node.context_expr.keywords[0].value)) - - if node.context_expr.func.id == '__case__': - r.append('case %s:' %a) - elif node.context_expr.func.id == '__switch__': - r.append('switch (%s) {' %self.visit(node.context_expr.args[0])) - is_switch = True - else: - raise SyntaxError( 'invalid use of with') - - - for b in node.body: - a = self.visit(b) - if a: r.append(a) - - if is_switch: - r.append('}') - - return '\n'.join(r) - - def visit_Module(self, node): - header = [] - lines = [] - - if self._requirejs and not self._webworker: - header.extend([ - 'define( function(){', - '__module__ = {}' - ]) - - - if self._insert_runtime: - dirname = os.path.dirname(os.path.abspath(__file__)) - runtime = open( os.path.join(dirname, 'pythonjs.js') ).read() - lines.append( runtime ) #.replace('\n', ';') ) - - for b in node.body: - line = self.visit(b) - if line: lines.append( line ) - else: - #raise b - pass - - if self._requirejs and not self._webworker: - for name in self._exports: - if name.startswith('__'): continue - lines.append( '__module__.%s = %s' %(name,name)) - - lines.append( 'return __module__') - lines.append('}) //end requirejs define') - - if self._has_glsl: - header.append( 'var __shader_header__ = ["%s"]'%self.glsl_runtime ) - - lines = header + lines - ## fixed by Foxboron - return '\n'.join(l if isinstance(l,str) else l.encode("utf-8") for l in lines) - - def visit_Expr(self, node): - # XXX: this is UGLY - s = self.visit(node.value) - if s.strip() and not s.endswith(';'): - s += ';' - if s==';': return '' - else: return s - - - def visit_In(self, node): - return ' in ' - - def visit_Tuple(self, node): - return '[%s]' % ', '.join(map(self.visit, node.elts)) - - def visit_List(self, node): - a = [] - for elt in node.elts: - b = self.visit(elt) - if b is None: raise SyntaxError(elt) - a.append( b ) - return '[%s]' % ', '.join(a) - - - def visit_TryExcept(self, node): - out = [] - out.append( self.indent() + 'try {' ) - self.push() - out.extend( - list( map(self.visit, node.body) ) - ) - self.pull() - out.append( self.indent() + '} catch(__exception__) {' ) - self.push() - out.extend( - list( map(self.visit, node.handlers) ) - ) - self.pull() - out.append( '}' ) - return '\n'.join( out ) - - def visit_Raise(self, node): - return 'throw new %s;' % self.visit(node.type) - - def visit_Yield(self, node): - return 'yield %s' % self.visit(node.value) - - def visit_ImportFrom(self, node): - # print node.module - # print node.names[0].name - # print node.level - return '' - - def visit_ExceptHandler(self, node): - out = '' - if node.type: - out = 'if (__exception__ == %s || __exception__ instanceof %s) {\n' % (self.visit(node.type), self.visit(node.type)) - if node.name: - out += 'var %s = __exception__;\n' % self.visit(node.name) - out += '\n'.join(map(self.visit, node.body)) + '\n' - if node.type: - out += '}\n' - return out - - def visit_Lambda(self, node): - args = [self.visit(a) for a in node.args.args] - if args and args[0]=='__INLINE_FUNCTION__': - self._inline_lambda = True - #return '' ## skip node, the next function contains the real def - raise SwapLambda( node ) - else: - return '(function (%s) {return %s;})' %(','.join(args), self.visit(node.body)) - - - - def visit_FunctionDef(self, node): - self._function_stack.append( node ) - node._local_vars = set() - buffer = self._visit_function( node ) - - if node == self._function_stack[0]: ## could do something special here with global function - #buffer += 'pythonjs.%s = %s' %(node.name, node.name) ## this is no longer needed - self._global_functions[ node.name ] = node - - self._function_stack.pop() - return buffer - - def _visit_call_helper_var_glsl(self, node): - lines = [] - for key in node.keywords: - ptrs = key.value.id.count('POINTER') - if ptrs: - ## TODO - preallocate array size - if nonliteral arrays are used later ## - #name = key.arg - #pid = '[`%s.length`]' %name - #ptrs = pid * ptrs - #lines.append( '%s %s' %(key.value.id.replace('POINTER',''), name+ptrs)) - - ## assume that this is a dynamic variable and will be typedef'ed by - ## __glsl_dynamic_typedef() is inserted just before the assignment. - pass - else: - self._typed_vars[ key.arg ] = key.value.id - lines.append( '%s %s' %(key.value.id, key.arg)) - - return ';'.join(lines) - - - def _visit_function(self, node): - is_main = node.name == 'main' - is_annon = node.name == '' - is_pyfunc = False - return_type = None - glsl = False - glsl_wrapper_name = False - gpu_return_types = {} - gpu_vectorize = False - gpu_method = False - args_typedefs = {} - func_expr = False - - for decor in node.decorator_list: - if isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == 'expression': - assert len(decor.args)==1 - func_expr = True - node.name = self.visit(decor.args[0]) - - elif isinstance(decor, ast.Name) and decor.id == '__pyfunction__': - is_pyfunc = True - elif isinstance(decor, ast.Name) and decor.id == '__glsl__': - glsl = True - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.value.id == '__glsl__': - glsl_wrapper_name = decor.attr - elif isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == '__typedef__': - for key in decor.keywords: - args_typedefs[ key.arg ] = key.value.id - elif isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == 'returns': - if decor.keywords: - for k in decor.keywords: - key = k.arg - assert key == 'array' or key == 'vec4' - gpu_return_types[ key ] = self.visit(k.value) - - else: - return_type = decor.args[0].id - if return_type in typedpython.glsl_types: - gpu_return_types[ return_type ] = True - - elif isinstance(decor, Attribute) and isinstance(decor.value, Name) and decor.value.id == 'gpu': - if decor.attr == 'vectorize': - gpu_vectorize = True - elif decor.attr == 'main': - is_main = True - elif decor.attr == 'method': - gpu_method = True - - args = self.visit(node.args) - - if glsl: - self._has_glsl = True ## triggers extras in header - lines = [] - x = [] - for i,arg in enumerate(args): - if gpu_vectorize and arg not in args_typedefs: - x.append( 'float* %s' %arg ) - else: - if arg in args_typedefs: - x.append( '%s %s' %(args_typedefs[arg].replace('POINTER', '*'), arg) ) - elif gpu_method and i==0: - x.append( '%s self' %arg ) - else: - #x.append( 'float* %s' %arg ) ## this could be a way to default to the struct. - raise SyntaxError('GLSL functions require a typedef: %s' %arg) - - if is_main: - lines.append( 'var glsljit = glsljit_runtime(__shader_header__);') ## each call to the wrapper function recompiles the shader - if x: - lines.append( 'glsljit.push("void main(%s) {");' %','.join(x) ) - else: - lines.append( 'glsljit.push("void main( ) {");') ## WebCLGL parser requires the space in `main( )` - - elif return_type: - #if gpu_method: - # lines.append( '__shader_header__.push("%s %s(struct this, %s ) {");' %(return_type, node.name, ', '.join(x)) ) - #else: - lines.append( '__shader_header__.push("%s %s( %s ) {");' %(return_type, node.name, ', '.join(x)) ) - else: - lines.append( '__shader_header__.push("void %s( %s ) {");' %(node.name, ', '.join(x)) ) - - self.push() - # `_id_` always write out an array of floats or array of vec4floats - if is_main: - #lines.append( 'glsljit.push("vec2 _id_ = get_global_id(); int _FRAGMENT_ID_ = int(_id_.x + _id_.y * 100.0);");') - pass - else: - lines.append( '__shader_header__.push("vec2 _id_ = get_global_id();");') - - self._glsl = True - for child in node.body: - if isinstance(child, Str): - continue - else: - for sub in self.visit(child).splitlines(): - if is_main: - if '`' in sub: ## "`" runtime lookups - - if '``' in sub: - raise SyntaxError('inliner syntax error: %s'%sub) - - sub = sub.replace('``', '') - chunks = sub.split('`') - if len(chunks) == 1: - raise RuntimeError(chunks) - sub = [] - for ci,chk in enumerate(chunks): - #if not chk.startswith('@'): ## special inline javascript. - # chk = '```'+chk+'```' - #chk = chk.replace('$', '```') - - if not ci%2: - if '@' in chk: - raise SyntaxError(chunks) - - if ci==0: - if chk: - sub.append('"%s"'%chk) - else: - if chk: - if sub: - sub.append(' + "%s"'%chk) - else: - sub.append('"%s"'%chk) - - elif chk.startswith('@'): ## special inline javascript. - lines.append( chk[1:] ) - else: - if sub: - sub.append(' + %s' %chk) - else: - sub.append(chk) - - if sub: - lines.append( 'glsljit.push(%s);' %''.join(sub)) - - else: - sub = sub.replace('$', '```') - lines.append( 'glsljit.push("%s");' %(self.indent()+sub) ) - - - else: ## subroutine or method - if '`' in sub: sub = sub.replace('`', '') - lines.append( '__shader_header__.push("%s");' %sub ) - - - self._glsl = False - self.pull() - if is_main: - lines.append('glsljit.push(";(1+1);");') ## fixes WebCLGL 2.0 parser - lines.append('glsljit.push("}");') - else: - lines.append('__shader_header__.push("%s}");' %self.indent()) - - lines.append(';') - - if is_main: - #insert = lines - #lines = [] - - if not glsl_wrapper_name: - glsl_wrapper_name = node.name - - if args: - lines.append('function %s( %s, __offset ) {' %(glsl_wrapper_name, ','.join(args)) ) - else: - lines.append('function %s( __offset ) {' %glsl_wrapper_name ) - - lines.append(' __offset = __offset || 1024') ## note by default: 0 allows 0-1.0 ## TODO this needs to be set per-buffer - - #lines.extend( insert ) - - lines.append(' var __webclgl = new WebCLGL()') - lines.append(' var header = glsljit.compile_header()') - lines.append(' var shader = glsljit.compile_main()') - - #lines.append(' console.log(header)') - lines.append(' console.log("-----------")') - lines.append(' console.log(shader)') - - ## create the webCLGL kernel, compiles GLSL source - lines.append(' var __kernel = __webclgl.createKernel( shader, header );') - - if gpu_return_types: - if 'array' in gpu_return_types: - if ',' in gpu_return_types['array']: - w,h = gpu_return_types['array'][1:-1].split(',') - lines.append(' var __return_length = %s * %s' %(w,h)) - else: - lines.append(' var __return_length = %s' %gpu_return_types['array']) - elif 'vec4' in gpu_return_types: - if ',' in gpu_return_types['vec4']: - w,h = gpu_return_types['vec4'][1:-1].split(',') - lines.append(' var __return_length_vec4 = %s * %s' %(w,h)) - else: - lines.append(' var __return_length_vec4 = %s' %gpu_return_types['vec4']) - - elif 'mat4' in gpu_return_types: - lines.append(' var __return_length = 64') ## minimum size is 64 - else: - raise NotImplementedError - else: - lines.append(' var __return_length = 64') ## minimum size is 64 - - for i,arg in enumerate(args): - lines.append(' if (%s instanceof Array) {' %arg) - #lines.append(' __return_length = %s.length==2 ? %s : %s.length' %(arg,arg, arg) ) - lines.append(' var %s_buffer = __webclgl.createBuffer(%s.dims || %s.length, "FLOAT", %s.scale || __offset)' %(arg,arg,arg,arg)) - lines.append(' __webclgl.enqueueWriteBuffer(%s_buffer, %s)' %(arg, arg)) - lines.append(' __kernel.setKernelArg(%s, %s_buffer)' %(i, arg)) - lines.append(' } else { __kernel.setKernelArg(%s, %s) }' %(i, arg)) - - #lines.append(' console.log("kernel.compile...")') - lines.append(' __kernel.compile()') - #lines.append(' console.log("kernel.compile OK")') - - if gpu_return_types: - if 'vec4' in gpu_return_types: - dim = gpu_return_types[ 'vec4' ] - lines.append(' var rbuffer_vec4 = __webclgl.createBuffer(%s, "FLOAT4", __offset)' %dim) - lines.append(' __webclgl.enqueueNDRangeKernel(__kernel, rbuffer_vec4)') - lines.append(' var __res = __webclgl.enqueueReadBuffer_Float4( rbuffer_vec4 )') - lines.append(' return glsljit.unpack_vec4(__res, %s)' %gpu_return_types['vec4']) - elif 'array' in gpu_return_types: - dim = gpu_return_types[ 'array' ] - lines.append(' var rbuffer_array = __webclgl.createBuffer(%s, "FLOAT", __offset)' %dim) - lines.append(' __webclgl.enqueueNDRangeKernel(__kernel, rbuffer_array)') - lines.append(' var __res = __webclgl.enqueueReadBuffer_Float( rbuffer_array )') - lines.append(' return glsljit.unpack_array2d(__res, %s)' %gpu_return_types['array']) - - elif 'mat4' in gpu_return_types: - lines.append(' var rbuffer = __webclgl.createBuffer([4,glsljit.matrices.length], "FLOAT4", __offset)') - lines.append(' __webclgl.enqueueNDRangeKernel(__kernel, rbuffer)') - lines.append(' var __res = __webclgl.enqueueReadBuffer_Float4( rbuffer )') ## slow - lines.append(' return glsljit.unpack_mat4(__res)') - else: - raise SyntaxError('invalid GPU return type: %s' %gpu_return_types) - - else: - raise SyntaxError('GPU return type must be given') - lines.append(' var __return = __webclgl.createBuffer(__return_length, "FLOAT", __offset)') - lines.append(' __webclgl.enqueueNDRangeKernel(__kernel, __return)') - lines.append(' return __webclgl.enqueueReadBuffer_Float( __return )') - - lines.append('} // end of wrapper') - lines.append('%s.return_matrices = glsljit.matrices' %glsl_wrapper_name ) - - - return '\n'.join(lines) - - elif len(node.decorator_list)==1 and not (isinstance(node.decorator_list[0], ast.Call) and node.decorator_list[0].func.id in self.special_decorators ) and not (isinstance(node.decorator_list[0], ast.Name) and node.decorator_list[0].id in self.special_decorators): - dec = self.visit(node.decorator_list[0]) - buffer = self.indent() + '%s.%s = function(%s) {\n' % (dec,node.name, ', '.join(args)) - - elif len(self._function_stack) == 1: - ## this style will not make function global to the eval context in NodeJS ## - #buffer = self.indent() + 'function %s(%s) {\n' % (node.name, ', '.join(args)) - - ## note if there is no var keyword and this function is at the global level, - ## then it should be callable from eval in NodeJS - this is not correct. - ## infact, var should always be used with function expressions. - - if self._func_expressions or func_expr: - buffer = self.indent() + 'var %s = function(%s) {\n' % (node.name, ', '.join(args)) - else: - buffer = self.indent() + 'function %s(%s) {\n' % (node.name, ', '.join(args)) - - if self._requirejs and node.name not in self._exports: - self._exports.add( node.name ) - - else: - - if self._func_expressions or func_expr: - buffer = self.indent() + 'var %s = function(%s) {\n' % (node.name, ', '.join(args)) - else: - buffer = self.indent() + 'function %s(%s) {\n' % (node.name, ', '.join(args)) - - self.push() - body = list() - next = None - for i,child in enumerate(node.body): - if isinstance(child, Str) or hasattr(child, 'SKIP'): - continue - - #try: - # v = self.visit(child) - #except SwapLambda as error: - # error.node.__class__ = ast.FunctionDef - # next = node.body[i+1] - # if not isinstance(next, ast.FunctionDef): - # raise SyntaxError('inline def is only allowed in javascript mode') - # error.node.__dict__ = next.__dict__ - # error.node.name = '' - # v = self.visit(child) - - v = self.try_and_catch_swap_lambda(child, node.body) - - - if v is None: - msg = 'error in function: %s'%node.name - msg += '\n%s' %child - raise SyntaxError(msg) - else: - body.append( self.indent()+v) - - buffer += '\n'.join(body) - self.pull() - buffer += '\n%s}' %self.indent() - #if self._inline_lambda: - # self._inline_lambda = False - if is_annon: - buffer = '__wrap_function__(' + buffer + ')' - elif is_pyfunc: - ## TODO change .is_wrapper to .__pyfunc__ - buffer += ';%s.is_wrapper = true;' %node.name - else: - buffer += '\n' - - return self.indent() + buffer - - def try_and_catch_swap_lambda(self, child, body): - try: - return self.visit(child) - except SwapLambda as e: - - next = None - for i in range( body.index(child), len(body) ): - n = body[ i ] - if isinstance(n, ast.FunctionDef): - if hasattr(n, 'SKIP'): - continue - else: - next = n - break - assert next - next.SKIP = True - e.node.__class__ = ast.FunctionDef - e.node.__dict__ = next.__dict__ - e.node.name = '' - return self.try_and_catch_swap_lambda( child, body ) - - - - def _visit_subscript_ellipsis(self, node): - name = self.visit(node.value) - return '%s["$wrapped"]' %name - - - def visit_Subscript(self, node): - if isinstance(node.slice, ast.Ellipsis): - if self._glsl: - #return '%s[_id_]' % self.visit(node.value) - return '%s[matrix_index()]' % self.visit(node.value) - else: - return self._visit_subscript_ellipsis( node ) - else: - return '%s[%s]' % (self.visit(node.value), self.visit(node.slice)) - - def visit_Index(self, node): - return self.visit(node.value) - - def visit_Slice(self, node): - raise SyntaxError('list slice') ## slicing not allowed here at js level - - def visit_arguments(self, node): - out = [] - for name in [self.visit(arg) for arg in node.args]: - out.append(name) - return out - - def visit_Name(self, node): - if node.id == 'None': - return 'null' - elif node.id == 'True': - return 'true' - elif node.id == 'False': - return 'false' - elif node.id == 'null': - return 'null' - return node.id - - def visit_Attribute(self, node): - name = self.visit(node.value) - attr = node.attr - if self._glsl and name not in ('self', 'this'): - if name not in self._typed_vars: - return '`%s.%s`' % (name, attr) - else: - return '%s.%s' % (name, attr) - return '%s.%s' % (name, attr) - - def visit_Print(self, node): - args = [self.visit(e) for e in node.values] - s = 'console.log(%s);' % ', '.join(args) - return s - - def visit_keyword(self, node): - if isinstance(node.arg, basestring): - return node.arg, self.visit(node.value) - return self.visit(node.arg), self.visit(node.value) - - def _visit_call_helper_instanceof(self, node): - args = map(self.visit, node.args) - if len(args) == 2: - return '%s instanceof %s' %tuple(args) - else: - raise SyntaxError( args ) - - def _visit_call_helper_new(self, node): - args = map(self.visit, node.args) - if len(args) == 1: - return ' new %s' %args[0] - else: - raise SyntaxError( args ) - - def _visit_call_helper_go( self, node ): - raise NotImplementedError('go call') - - - def visit_Call(self, node): - name = self.visit(node.func) - if name in typedpython.GO_SPECIAL_CALLS.values(): - return self._visit_call_helper_go( node ) - - elif self._glsl and isinstance(node.func, ast.Attribute): - if isinstance(node.func.value, ast.Name) and node.func.value.id in self._typed_vars: - args = ','.join( [self.visit(a) for a in node.args] ) - return '`__struct_name__`_%s(%s, %s)' %(node.func.attr, node.func.value.id, args) - else: - return '`%s`' %self._visit_call_helper(node) - - elif self._glsl and name == 'len': - if isinstance(node.args[0], ast.Name): - return '`%s.length`' %node.args[0].id - elif isinstance(node.args[0], ast.Subscript): - s = node.args[0] - v = self.visit(s).replace('`', '') - return '`%s.length`' %v - - elif isinstance(node.args[0], ast.Attribute): ## assume struct array attribute - s = node.args[0] - v = self.visit(s).replace('`', '') - return '`%s.length`' %v - - elif name == 'glsl_inline_assign_from_iterable': - ## the target must be declared without a typedef, because if declared first, it can not be redeclared, - ## in the if-assignment block, the typedef is not given because `Iter_n` already has been typed beforehand. - sname = node.args[0].s - target = node.args[1].s - iter = node.args[2].id - self._typed_vars[ target ] = sname - - - lines = [ - '`@var __length__ = %s.length;`' %iter, - #'`@console.log("DEBUG iter: "+%s);`' %iter, - #'`@console.log("DEBUG first item: "+%s[0]);`' %iter, - #'`@var __struct_name__ = %s[0].__struct_name__;`' %iter, - ##same as above - slower ##'`@var __struct_name__ = glsljit.define_structure(%s[0]);`' %iter, - #'`@console.log("DEBUG sname: "+__struct_name__);`', - '`@var %s = %s[0];`' %(target, iter) ## capture first item with target name so that for loops can get the length of member arrays - ] - - #lines.append('for (int _iter=0; _iter < `__length__`; _iter++) {' ) - - ## declare struct variable ## - #lines.append( '%s %s;' %(sname, target)) - - ## at runtime loop over subarray, for each index inline into the shader's for-loop an if test, - lines.append( '`@for (var __j=0; __j<__length__; __j++) {`') - #lines.append( '`@glsljit.push("if (OUTPUT_INDEX==" +__j+ ") { %s %s=%s_" +__j+ ";}");`' %(sname, target, iter)) - lines.append( '`@glsljit.push("if (matrix_index()==" +__j+ ") { %s=%s_" +__j+ ";}");`' %(target, iter)) - lines.append( '`@}`') - - - #lines.append( '}' ) ## end of for loop - return '\n'.join(lines) - - elif name == 'glsl_inline_push_js_assign': - # '@' triggers a new line of generated code - n = node.args[0].s - if isinstance(node.args[1], ast.Attribute): ## special case bypass visit_Attribute - v = '%s.%s' %(node.args[1].value.id, node.args[1].attr ) - else: - v = self.visit(node.args[1]) - - v = v.replace('`', '') ## this is known this entire expression is an external call. - - ## check if number is required because literal floats like `1.0` will get transformed to `1` by javascript toString - orelse = 'typeof(%s)=="object" ? glsljit.object(%s, "%s") : glsljit.push("%s="+%s+";")' %(n, n,n, n,n) - - ## if a constant number literal directly inline - if v.isdigit() or (v.count('.')==1 and v.split('.')[0].isdigit() and v.split('.')[1].isdigit()): - #if_number = ' if (typeof(%s)=="number") { glsljit.push("%s=%s;") } else {' %(n, n,v) - #return '`@%s=%s; %s if (%s instanceof Array) {glsljit.array(%s, "%s")} else {%s}};`' %(n,v, if_number, n, n,n, orelse) - return '`@%s=%s; glsljit.push("%s=%s;");`' %(n,v, n,v) - else: - return '`@%s=%s; if (%s instanceof Array) {glsljit.array(%s, "%s")} else { if (%s instanceof Int16Array) {glsljit.int16array(%s,"%s")} else {%s} };`' %(n,v, n, n,n, n,n,n, orelse) - - #elif name == 'glsl_inline': - # return '`%s`' %self.visit(node.args[0]) - #elif name == 'glsl_inline_array': - # raise NotImplementedError - # return '`__glsl_inline_array(%s, "%s")`' %(self.visit(node.args[0]), node.args[1].s) - - elif name == 'instanceof': ## this gets used by "with javascript:" blocks to test if an instance is a JavaScript type - return self._visit_call_helper_instanceof( node ) - - elif name == 'new': - return self._visit_call_helper_new( node ) - - elif name == '__ternary_operator__': - args = map(self.visit, node.args) - if len(args) == 2: - return '((%s) ? %s : %s)' %(args[0], args[0], args[1]) - elif len(args) == 3: - return '((%s) ? %s : %s)' %(args[0], args[1], args[2]) - else: - raise SyntaxError( args ) - - elif name == 'numpy.array': - return self._visit_call_helper_numpy_array(node) - - elif name == 'JSObject': - return self._visit_call_helper_JSObject( node ) - - elif name == 'var': - if self._glsl: - return self._visit_call_helper_var_glsl( node ) - else: - return self._visit_call_helper_var( node ) - - elif name == 'JSArray': - return self._visit_call_helper_JSArray( node ) - - elif name == 'inline' or name == 'JS': - assert len(node.args)==1 and isinstance(node.args[0], ast.Str) - return self._inline_code_helper( node.args[0].s ) - - elif name == 'dart_import': - if len(node.args) == 1: - return 'import "%s";' %node.args[0].s - elif len(node.args) == 2: - return 'import "%s" as %s;' %(node.args[0].s, node.args[1].s) - else: - raise SyntaxError - elif name == 'list': - return self._visit_call_helper_list( node ) - - elif name == '__get__' and len(node.args)==2 and isinstance(node.args[1], ast.Str) and node.args[1].s=='__call__': - return self._visit_call_helper_get_call_special( node ) - - #elif name in self._global_functions: - # return_id = self.inline_function( node ) - # code = self.writer.getvalue() - # return '\n'.join([code, return_id]) - elif name.split('.')[-1] == '__go__receive__': - raise SyntaxError('__go__receive__') - - else: - return self._visit_call_helper(node) - - def _visit_call_helper(self, node): - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '' - fname = self.visit(node.func) - if fname=='__DOLLAR__': fname = '$' - return '%s(%s)' % (fname, args) - - def inline_helper_remap_names(self, remap): - return "var %s;" %','.join(remap.values()) - - def inline_helper_return_id(self, return_id): - return "var __returns__%s = null;"%return_id - - def _visit_call_helper_numpy_array(self, node): - if self._glsl: - return self.visit(node.keywords[0].value) - else: - return self.visit(node.args[0]) - - def _visit_call_helper_list(self, node): - name = self.visit(node.func) - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '' - return '%s(%s)' % (name, args) - - def _visit_call_helper_get_call_special(self, node): - name = self.visit(node.func) - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '' - return '%s(%s)' % (name, args) - - - def _visit_call_helper_JSArray(self, node): - if node.args: - args = map(self.visit, node.args) - out = ', '.join(args) - #return '__create_array__(%s)' % out - return '[%s]' % out - - else: - return '[]' - - - def _visit_call_helper_JSObject(self, node): - if node.keywords: - kwargs = map(self.visit, node.keywords) - f = lambda x: '"%s": %s' % (x[0], x[1]) - out = ', '.join(map(f, kwargs)) - return '{%s}' % out - else: - return '{}' - - def _visit_call_helper_var(self, node): - args = [ self.visit(a) for a in node.args ] - if self._function_stack: - fnode = self._function_stack[-1] - rem = [] - for arg in args: - if arg in fnode._local_vars: - rem.append( arg ) - else: - fnode._local_vars.add( arg ) - for arg in rem: - args.remove( arg ) - out = [] - if args: - out.append( 'var ' + ','.join(args) ) - if node.keywords: - out.append( 'var ' + ','.join([key.arg for key in node.keywords]) ) - return ';'.join(out) - - def _inline_code_helper(self, s): - ## TODO, should newline be changed here? - s = s.replace('\n', '\\n').replace('\0', '\\0') ## AttributeError: 'BinOp' object has no attribute 's' - this is caused by bad quotes - if s.strip().startswith('#'): s = '/*%s*/'%s - if '__new__>>' in s: ## fixes inline `JS("new XXX")` - s = s.replace('__new__>>', ' new ') - elif '"' in s or "'" in s: ## can not trust direct-replace hacks - pass - else: - if ' or ' in s: - s = s.replace(' or ', ' || ') - if ' not ' in s: - s = s.replace(' not ', ' ! ') - if ' and ' in s: - s = s.replace(' and ', ' && ') - return s - - def visit_While(self, node): - body = [ 'while (%s) {' %self.visit(node.test)] - self.push() - for line in list( map(self.visit, node.body) ): - body.append( self.indent()+line ) - self.pull() - body.append( self.indent() + '}' ) - return '\n'.join( body ) - - def visit_Str(self, node): - s = node.s.replace("\\", "\\\\").replace('\n', '\\n').replace('\r', '\\r').replace('"', '\\"') - #if '"' in s: - # return "'%s'" % s - return '"%s"' % s - - def visit_BinOp(self, node): - left = self.visit(node.left) - op = self.visit(node.op) - right = self.visit(node.right) - - if op == '>>' and left == '__new__': - return ' new %s' %right - - elif op == '<<': - if left in ('__go__receive__', '__go__send__'): - return '<- %s' %right - elif isinstance(node.left, ast.Call) and isinstance(node.left.func, ast.Name) and node.left.func.id in ('__go__array__', '__go__arrayfixed__', '__go__map__'): - if node.left.func.id == '__go__map__': - key_type = self.visit(node.left.args[0]) - value_type = self.visit(node.left.args[1]) - if value_type == 'interface': value_type = 'interface{}' - return 'map[%s]%s%s' %(key_type, value_type, right) - else: - if not right.startswith('{') and not right.endswith('}'): - right = '{%s}' %right[1:-1] - - if node.left.func.id == '__go__array__': - return '[]%s%s' %(self.visit(node.left.args[0]), right) - elif node.left.func.id == '__go__arrayfixed__': - asize = self.visit(node.left.args[0]) - atype = self.visit(node.left.args[1]) - return '[%s]%s%s' %(asize, atype, right) - elif isinstance(node.left, ast.Name) and node.left.id=='__go__array__' and op == '<<': - return '[]%s' %self.visit(node.right) - - if left in self._typed_vars and self._typed_vars[left] == 'numpy.float32': - left += '[_id_]' - if right in self._typed_vars and self._typed_vars[right] == 'numpy.float32': - right += '[_id_]' - - return '(%s %s %s)' % (left, op, right) - - def visit_Mult(self, node): - return '*' - - def visit_Add(self, node): - return '+' - - def visit_Sub(self, node): - return '-' - - def visit_Div(self, node): - return '/' - - def visit_Mod(self, node): - return '%' - - def visit_Lt(self, node): - return '<' - - def visit_Gt(self, node): - return '>' - - def visit_GtE(self, node): - return '>=' - - def visit_LtE(self, node): - return '<=' - - def visit_LShift(self, node): - return '<<' - def visit_RShift(self, node): - return '>>' - def visit_BitXor(self, node): - return '^' - def visit_BitOr(self, node): - return '|' - def visit_BitAnd(self, node): - return '&' - - def visit_Return(self, node): - if isinstance(node.value, Tuple): - return 'return [%s];' % ', '.join(map(self.visit, node.value.elts)) - if node.value: - return 'return %s;' % self.visit(node.value) - return 'return undefined;' - - def visit_Pass(self, node): - return '/*pass*/' - - def visit_Eq(self, node): - return '==' - - def visit_NotEq(self, node): - return '!=' - - def visit_Num(self, node): - return str(node.n) - - def visit_Is(self, node): - return '===' - - def visit_Compare(self, node): - if self._glsl: - comp = [self.visit(node.left)] - elif isinstance(node.ops[0], ast.Eq): - left = self.visit(node.left) - right = self.visit(node.comparators[0]) - return '(%s instanceof Array ? JSON.stringify(%s)==JSON.stringify(%s) : %s===%s)' %(left, left, right, left, right) - elif isinstance(node.ops[0], ast.NotEq): - left = self.visit(node.left) - right = self.visit(node.comparators[0]) - return '(!(%s instanceof Array ? JSON.stringify(%s)==JSON.stringify(%s) : %s===%s))' %(left, left, right, left, right) - - else: - comp = [ '('] - comp.append( self.visit(node.left) ) - comp.append( ')' ) - - for i in range( len(node.ops) ): - comp.append( self.visit(node.ops[i]) ) - - if isinstance(node.ops[i], ast.Eq): - raise SyntaxError('TODO') - - elif isinstance(node.comparators[i], ast.BinOp): - comp.append('(') - comp.append( self.visit(node.comparators[i]) ) - comp.append(')') - else: - comp.append( self.visit(node.comparators[i]) ) - - return ' '.join( comp ) - - def visit_Not(self, node): - return '!' - - def visit_IsNot(self, node): - return '!==' - - def visit_UnaryOp(self, node): - #return self.visit(node.op) + self.visit(node.operand) - return '%s (%s)' %(self.visit(node.op),self.visit(node.operand)) - - def visit_USub(self, node): - return '-' - - def visit_And(self, node): - return ' && ' - - def visit_Or(self, node): - return ' || ' - - def visit_BoolOp(self, node): - op = self.visit(node.op) - return '('+ op.join( [self.visit(v) for v in node.values] ) +')' - - def visit_If(self, node): - out = [] - out.append( 'if (%s) {' %self.visit(node.test) ) - self.push() - - for line in list(map(self.visit, node.body)): - if line is None: continue - out.append( self.indent() + line ) - - orelse = [] - for line in list(map(self.visit, node.orelse)): - orelse.append( self.indent() + line ) - - self.pull() - - if orelse: - out.append( self.indent() + '} else {') - out.extend( orelse ) - out.append( self.indent() + '}' ) - - return '\n'.join( out ) - - - def visit_Dict(self, node): - a = [] - for i in range( len(node.keys) ): - k = self.visit( node.keys[ i ] ) - v = self.visit( node.values[i] ) - a.append( '%s:%s'%(k,v) ) - b = ','.join( a ) - return '{ %s }' %b - - - def _visit_for_prep_iter_helper(self, node, out, iter_name): - ## support "for key in JSObject" ## - #out.append( self.indent() + 'if (! (iter instanceof Array) ) { iter = Object.keys(iter) }' ) - ## new style - Object.keys only works for normal JS-objects, not ones created with `Object.create(null)` - out.append( - self.indent() + 'if (! (%s instanceof Array || typeof %s == "string" || __is_typed_array(%s) || __is_some_array(%s) )) { %s = __object_keys__(%s) }' %(iter_name, iter_name, iter_name, iter_name, iter_name, iter_name) - ) - - - _iter_id = 0 - def visit_For(self, node): - ''' - for loops inside a `with javascript:` block will produce this faster for loop. - - note that the rules are python-style, even though we are inside a `with javascript:` block: - . an Array is like a list, `for x in Array` gives you the value (not the index as you would get in pure javascript) - . an Object is like a dict, `for v in Object` gives you the key (not the value as you would get in pure javascript) - - if your are trying to opitmize looping over a PythonJS list, you can do this: - for v in mylist[...]: - print v - above works because [...] returns the internal Array of mylist - - ''' - if self._glsl: - target = self.visit(node.target) - - if isinstance(node.iter, ast.Call) and isinstance(node.iter.func, ast.Name) and node.iter.func.id=='iter': ## `for i in iter(n):` - assert isinstance(node.iter.args[0], ast.Name) - iter = node.iter.args[0].id - self._typed_vars[target] = 'struct*' ## this fixes attributes on structs - - lines = [ - '`@var __length__ = %s.length;`' %iter, - #'`@console.log("DEBUG iter: "+%s);`' %iter, - #'`@console.log("DEBUG first item: "+%s[0]);`' %iter, - '`@var __struct_name__ = %s[0].__struct_name__;`' %iter, - ##same as above - slower ##'`@var __struct_name__ = glsljit.define_structure(%s[0]);`' %iter, - #'`@console.log("DEBUG sname: "+__struct_name__);`', - '`@var %s = %s[0];`' %(target, iter) ## capture first item with target name so that for loops can get the length of member arrays - ] - - ##TODO## lines.append('$') ## optimizes webclgl parser - - lines.append('for (int _iter=0; _iter < `__length__`; _iter++) {' ) - - ## declare struct variable ## - lines.append( '`__struct_name__` %s;' %target) - - ## at runtime loop over subarray, for each index inline into the shader's for-loop an if test, - lines.append( '`@for (var __j=0; __j<__length__; __j++) {`') - lines.append( '`@glsljit.push("if (_iter==" +__j+ ") { %s=%s_" +__j+ ";}");`' %(target, iter)) - lines.append( '`@}`') - - ##TODO## lines.append('$') ## optimizes webclgl parser - - - elif isinstance(node.iter, ast.Call): ## `for i in range(n):` - iter = self.visit(node.iter.args[0]) - lines = ['for (int %s=0; %s < %s; %s++) {' %(target, target, iter, target)] - elif isinstance(node.iter, ast.Name): ## `for subarray in arrayofarrays:` - ## capture the length of the subarray into the current javascript scope - ## this is required to inline the lengths as constants into the GLSL for loops - lines = ['`@var __length__ = %s[0].length;`' %node.iter.id] - ## start the GLSL for loop - `__length__` is set above ## - lines.append('for (int _iter=0; _iter < `__length__`; _iter++) {' ) - - ## declare subarray with size ## - lines.append( 'float %s[`__length__`];' %target) - - ## at runtime loop over subarray, for each index inline into the shader's for-loop an if test, - lines.append( '`@for (var __j=0; __j<__length__; __j++) {`') - ## below checks if the top-level iterator is the same index, and if so copy its contents into the local subarray, - lines.append( '`@glsljit.push("if (_iter==" +__j+ ") { for (int _J=0; _J<" +__length__+ "; _J++) {%s[_J] = %s_" +__j+ "[_J];} }");`' %(target, node.iter.id)) - lines.append( '`@}`') - ## this works because the function glsljit.array will unpack an array of arrays using the variable name with postfix "_n" - ## note the extra for loop `_J` is required because the local subarray can not be assigned to `A_n` - - else: - raise SyntaxError(node.iter) - - for b in node.body: - lines.append( self.visit(b) ) - lines.append( '}' ) ## end of for loop - return '\n'.join(lines) - - - self._iter_id += 1 - iname = '__iter%s' %self._iter_id - index = '__idx%s' %self._iter_id - - target = node.target.id - iter = self.visit(node.iter) # iter is the python iterator - - out = [] - out.append( self.indent() + 'var %s = %s;' % (iname, iter) ) - #out.append( self.indent() + 'var %s = 0;' % index ) - - self._visit_for_prep_iter_helper(node, out, iname) - - out.append( self.indent() + 'for (var %s=0; %s < %s.length; %s++) {' % (index, index, iname, index) ) - self.push() - - body = [] - # backup iterator and affect value of the next element to the target - #pre = 'var backup = %s; %s = iter[%s];' % (target, target, target) - body.append( self.indent() + 'var %s = %s[ %s ];' %(target, iname, index) ) - - for line in list(map(self.visit, node.body)): - body.append( self.indent() + line ) - - # replace the replace target with the javascript iterator - #post = '%s = backup;' % target - #body.append( self.indent() + post ) - - self.pull() - out.extend( body ) - out.append( self.indent() + '}' ) - - return '\n'.join( out ) - - def visit_Continue(self, node): - return 'continue' - - def visit_Break(self, node): - return 'break;' - - - -def generate_runtime(): - from python_to_pythonjs import main as py2pyjs - lines = [ - main( open('runtime/pythonpythonjs.py', 'rb').read(), requirejs=False, insert_runtime=False, function_expressions=True ), ## lowlevel pythonjs - main( py2pyjs(open('runtime/builtins.py', 'rb').read()), requirejs=False, insert_runtime=False, function_expressions=True ) - ] - return '\n'.join( lines ) - -def main(source, requirejs=True, insert_runtime=True, webworker=False, function_expressions=True): - head = [] - tail = [] - script = False - osource = source - if source.strip().startswith('') - script = list() - elif line.strip() == '': - if type(script) is list: - source = '\n'.join(script) - script = True - tail.append( '') - elif script is True: - tail.append( '') - else: - head.append( '') - - elif isinstance( script, list ): - script.append( line ) - - elif script is True: - tail.append( line ) - - else: - head.append( line ) - - - try: - tree = ast.parse( source ) - #raise SyntaxError(source) - except SyntaxError: - import traceback - err = traceback.format_exc() - sys.stderr.write( err ) - sys.stderr.write( '\n--------------error in second stage translation--------------\n' ) - - lineno = 0 - for line in err.splitlines(): - if "" in line: - lineno = int(line.split()[-1]) - - - lines = source.splitlines() - if lineno > 10: - for i in range(lineno-5, lineno+5): - sys.stderr.write( 'line %s->'%i ) - sys.stderr.write( lines[i] ) - if i==lineno-1: - sys.stderr.write(' <>') - sys.stderr.write( '\n' ) - - else: - sys.stderr.write( lines[lineno] ) - sys.stderr.write( '\n' ) - - if '--debug' in sys.argv: - sys.stderr.write( osource ) - sys.stderr.write( '\n' ) - - sys.exit(1) - - gen = JSGenerator( requirejs=requirejs, insert_runtime=insert_runtime, webworker=webworker, function_expressions=function_expressions ) - output = gen.visit(tree) - if head: - head.append( output ) - head.extend( tail ) - output = '\n'.join( head ) - - return output - - -def command(): - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - js = main( data ) - print( js ) - - -if __name__ == '__main__': - if '--runtime' in sys.argv: - print('creating new runtime: pythonjs.js') - open('pythonjs.js', 'wb').write( generate_runtime() ) - else: - command() diff --git a/pythonjs/pythonjs_to_coffee.py b/pythonjs/pythonjs_to_coffee.py deleted file mode 100644 index a00ad27..0000000 --- a/pythonjs/pythonjs_to_coffee.py +++ /dev/null @@ -1,459 +0,0 @@ -#!/usr/bin/env python -# PythonJS to CoffeeScript Translator -# by Brett Hartshorn - copyright 2014 -# License: "New BSD" -import sys -import ast -import pythonjs - -class TransformSuperCalls( ast.NodeVisitor ): - def __init__(self, node, class_names): - self._class_names = class_names - self.visit(node) - - def visit_Call(self, node): - if isinstance(node.func, ast.Attribute) and isinstance(node.func.value, ast.Name) and node.func.value.id in self._class_names: - node.func.attr = '__' + node.func.attr - -class CollectNames(ast.NodeVisitor): - def __init__(self): - self._names = [] - def visit_Name(self, node): - self._names.append( node ) - -def collect_names(node): - a = CollectNames() - a.visit( node ) - return a._names - - -class CoffeeGenerator( pythonjs.JSGenerator ): - _classes = dict() - _class_props = dict() - - def _visit_call_helper_var(self, node): - return '' - - def _inline_code_helper(self, s): - s = s.replace('\n', '\\n').replace('\0', '\\0') ## AttributeError: 'BinOp' object has no attribute 's' - this is caused by bad quotes - if s.strip().startswith('#'): s = '/*%s*/'%s - if '"' in s or "'" in s: ## can not trust direct-replace hacks - pass - else: - if ' or ' in s: - s = s.replace(' or ', ' || ') - if ' not ' in s: - s = s.replace(' not ', ' ! ') - if ' and ' in s: - s = s.replace(' and ', ' && ') - return '`' + s + '`' ## enclose with backticks to inline javascript in coffeescript - - def visit_While(self, node): - body = [ 'while %s' %self.visit(node.test)] - self.push() - for line in list( map(self.visit, node.body) ): - body.append( self.indent()+line ) - self.pull() - return '\n'.join( body ) - - def _visit_subscript_ellipsis(self, node): - name = self.visit(node.value) - return '%s.$wrapped' %name - - def visit_Pass(self, node): - return '###pass###' - - def visit_If(self, node): - out = [] - out.append( 'if %s' %self.visit(node.test) ) - self.push() - - for line in list(map(self.visit, node.body)): - out.append( self.indent() + line ) - - orelse = [] - for line in list(map(self.visit, node.orelse)): - orelse.append( self.indent() + line ) - - self.pull() - - if orelse: - out.append( self.indent() + 'else') - out.extend( orelse ) - - return '\n'.join( out ) - - - def visit_List(self, node): - return '[%s]' % ', '.join(map(self.visit, node.elts)) - - def visit_Dict(self, node): - a = [] - for i in range( len(node.keys) ): - k = self.visit( node.keys[ i ] ) - v = self.visit( node.values[i] ) - a.append( '%s:%s'%(k,v) ) - b = ','.join( a ) - return '{%s}' %b - - def visit_ClassDef(self, node): - node._parents = set() - out = [] - extends = False ## Dart has no support for multiple inheritance! - props = set(['$wrapped']) - bases = set() - base_classes = set() - - self._classes[ node.name ] = node - self._class_props[ node.name ] = props - for decor in node.decorator_list: ## class decorators - if isinstance(decor, ast.Call): - props.update( [self.visit(a) for a in decor.args] ) - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.value.id == 'dart': - if decor.attr == 'extends': - extends = True - props.add('$wrapped') - for name_node in collect_names( node ): - if name_node.id == 'self': - name_node.id = 'this' - else: - raise SyntaxError - - - for base in node.bases: - n = self.visit(base) - if n == 'object': - continue - node._parents.add( n ) - - bases.add( n ) - if n in self._class_props: - props.update( self._class_props[n] ) - base_classes.add( self._classes[n] ) - else: ## special case - subclassing a builtin like `list` - continue - - for p in self._classes[ n ]._parents: - bases.add( p ) - props.update( self._class_props[p] ) - base_classes.add( self._classes[p] ) - - if bases: - if extends: - assert len(bases) == 1 - out.append('class %s extends %s {'%(node.name, ','.join(bases))) - else: - #if bases[0] == 'object': - # out.append('class %s {' %node.name) - #else: - out.append('class %s implements %s {'%(node.name, ', '.join(bases))) - - - else: - out.append('class %s {' %node.name) - self.push() - - for p in props: - out.append(self.indent()+ 'var %s;'%p) - - method_names = set() - for b in node.body: - - if isinstance(b, ast.FunctionDef) and len(b.decorator_list): ##getter/setters - for name_node in collect_names( b ): - if name_node.id == 'self': - name_node.id = 'this' - - b.args.args = b.args.args[1:] - out.append( self.visit(b) ) - - elif extends: - if isinstance(b, ast.FunctionDef): - b.args.args = b.args.args[1:] - if b.name == node.name: - args = [self.visit(a) for a in b.args.args] - args = ','.join(args) - out.append( - self.indent()+'%s(%s) : super() { this.__init__(%s); }'%(node.name, args, args) - ) - b.name = '__init__' - elif b.name == '__getitem__': - b.name = '' - b._prefix = 'operator []' - elif b.name == '__setitem__': - b.name = '' - b._prefix = 'void operator []=' - elif b.name == '__add__': - b.name = '' - b._prefix = 'operator +' - elif b.name == '__iadd__': - b.name = '' - b._prefix = 'void operator +=' - elif b.name == '__sub__': - b.name = '' - b._prefix = 'operator -' - elif b.name == '__mul__': - b.name = '' - b._prefix = 'operator *' - elif b.name == '__div__': - b.name = '' - b._prefix = 'operator /' - - elif b.name == '__or__': - b.name = '' - b._prefix = 'operator |' - elif b.name == '__xor__': - b.name = '' - b._prefix = 'operator ^' - - - - line = self.visit(b) - out.append( line ) - - elif isinstance(b, ast.FunctionDef) and b.name == node.name: - args = [self.visit(a) for a in b.args.args][1:] - args = ','.join(args) - b._prefix = 'static void' - b.name = '__init__' - out.append( self.visit(b) ) - if args: - out.append( - self.indent()+'%s(%s) {%s.__init__(this,%s);}'%(node.name, args, node.name, args) - ) - else: - out.append( - self.indent()+'%s() {%s.__init__(this);}'%(node.name, node.name) - ) - - elif isinstance(b, ast.FunctionDef): - method_names.add( b.name ) - TransformSuperCalls( b, bases ) - - operator = False - if b.name == '__getitem__': - operator = 'operator []' - elif b.name == '__setitem__': - operator = 'operator []=' - elif b.name == '__add__': - operator = 'operator +' - elif b.name == '__sub__': - operator = 'operator -' - elif b.name == '__mul__': - operator = 'operator *' - elif b.name == '__div__': - operator = 'operator /' - elif b.name == '__and__': - operator = 'operator &' - elif b.name == '__or__': - operator = 'operator |' - elif b.name == '__xor__': - operator = 'operator ^' - elif b.name == '__lshift__': - operator = 'operator <<' - elif b.name == '__rshift__': - operator = 'operator >>' - - args = [self.visit(a) for a in b.args.args][1:] - args = ','.join(args) - if operator and args: - out.append(self.indent()+ '%s(%s) { return %s.__%s(this,%s); }'%(operator, args, node.name, b.name, args) ) - - elif operator: - out.append(self.indent()+ '%s() { return %s.__%s(this); }'%(operator, node.name, b.name) ) - - elif args: - out.append(self.indent()+ '%s(%s) { return %s.__%s(this,%s); }'%(b.name, args, node.name, b.name, args) ) - else: - out.append(self.indent()+ '%s() { return %s.__%s(this); }'%(b.name, node.name, b.name) ) - - b._prefix = 'static' - name = b.name - b.name = '__%s'%name - out.append( self.visit(b) ) - b.name = name - - else: - line = self.visit(b) - if line.startswith('var '): - out.append( self.indent()+line ) - else: - out.append( line ) - - if not extends and base_classes: - for bnode in base_classes: - for b in bnode.body: - if isinstance(b, ast.FunctionDef): - if b.name == '__init__': continue - if b.name in method_names: continue - - args = [self.visit(a) for a in b.args.args][1:] - args = ','.join(args) - if args: - out.append(self.indent()+ '%s(%s) { return %s.__%s(this,%s); }'%(b.name, args, bnode.name, b.name, args) ) - else: - out.append(self.indent()+ '%s() { return %s.__%s(this); }'%(b.name, bnode.name, b.name) ) - - - self.pull() - out.append('}') - return '\n'.join(out) - - def _visit_for_prep_iter_helper(self, node, out, iter_name): - out.append( - #self.indent() + 'if (%s is dict) { %s = %s.keys(); }' %(iter_name, iter_name, iter_name) - self.indent() + 'if (%s is dict) %s = %s.keys();' %(iter_name, iter_name, iter_name) - ) - - - def visit_Expr(self, node): - return self.visit(node.value) - - - def visit_Print(self, node): - args = [self.visit(e) for e in node.values] - return 'console.log(%s)' % ', '.join(args) - - - def visit_Assign(self, node): - assert len(node.targets) == 1 - target = node.targets[0] - if isinstance(target, ast.Tuple): - raise NotImplementedError - else: - target = self.visit(target) - value = self.visit(node.value) - code = '%s = %s;' % (target, value) - return code - - def _visit_function(self, node): - getter = False - setter = False - klass = None - for decor in node.decorator_list: - if isinstance(decor, ast.Name) and decor.id == 'property': - getter = True - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.attr == 'setter': - setter = True - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.attr == 'prototype': - klass = self.visit(decor) - else: - raise SyntaxError(decor) - - args = [] #self.visit(node.args) - oargs = [] - offset = len(node.args.args) - len(node.args.defaults) - varargs = False - varargs_name = None - for i, arg in enumerate(node.args.args): - a = arg.id - dindex = i - offset - - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - oargs.append( '%s=%s' %(a, default_value) ) - else: - args.append( a ) - - if oargs: - args.extend( ','.join(oargs) ) - - buffer = self.indent() - if hasattr(node,'_prefix'): buffer += node._prefix + ' ' - - #if getter: - # buffer += 'get %s {\n' % node.name - #elif setter: - # buffer += 'set %s(%s) {\n' % (node.name, ', '.join(args)) - #else: - if klass: - buffer += '%s.%s = (%s) ->\n' % (klass, node.name, ', '.join(args)) - else: - buffer += '%s = (%s) ->\n' % (node.name, ', '.join(args)) - self.push() - - #if varargs: - # buffer += 'var %s = new list([]);\n' %varargs_name - # for i,n in enumerate(varargs): - # buffer += 'if (%s != null) %s.append(%s);\n' %(n, varargs_name, n) - - body = list() - for child in node.body: - if isinstance(child, ast.Str): - continue - else: - body.append( self.indent() + self.visit(child) ) - - if not isinstance(node.body[-1], ast.Return): - body.append( self.indent() + '0' ) - - buffer += '\n'.join(body) - self.pull() - return buffer - - - def visit_Is(self, node): - return ' is ' - - def visit_IsNot(self, node): - return ' isnt ' - - def _visit_call_helper_instanceof(self, node): - args = map(self.visit, node.args) - if len(args) == 2: - if args[1] == 'Number': - args[1] = 'num' - return '%s is %s' %tuple(args) - else: - raise SyntaxError( args ) - - def visit_TryExcept(self, node): - out = ['try'] - self.push() - for n in node.body: - out.append( self.indent() + self.visit(n) ) - self.pull() - out.append( self.indent() + 'catch error' ) - self.push() - for n in node.handlers: - out.append( self.visit(n) ) - self.pull() - return '\n'.join( out ) - - def visit_ExceptHandler(self, node): - ## TODO check exception type - out = [] - if node.type: - out.append( self.indent() + '###exception: %s' %self.visit(node.type) ) - for n in node.body: - out.append( self.indent() + self.visit(n) ) - - return '\n'.join(out) - - -def main(script): - tree = ast.parse(script) - return CoffeeGenerator().visit(tree) - - -def command(): - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - js = main( data ) - print( js ) - - -if __name__ == '__main__': - command() diff --git a/pythonjs/pythonjs_to_dart.py b/pythonjs/pythonjs_to_dart.py deleted file mode 100644 index 2082b1e..0000000 --- a/pythonjs/pythonjs_to_dart.py +++ /dev/null @@ -1,595 +0,0 @@ -#!/usr/bin/env python -# PythonJS to Dart Translator -# by Brett Hartshorn - copyright 2013 -# License: "New BSD" -import sys -import ast -import pythonjs - - -class TransformSuperCalls( ast.NodeVisitor ): - def __init__(self, node, class_names): - self._class_names = class_names - self.visit(node) - - def visit_Call(self, node): - if isinstance(node.func, ast.Attribute) and isinstance(node.func.value, ast.Name) and node.func.value.id in self._class_names: - node.func.attr = '__' + node.func.attr - -class CollectNames(ast.NodeVisitor): - def __init__(self): - self._names = [] - def visit_Name(self, node): - self._names.append( node ) - -def collect_names(node): - a = CollectNames() - a.visit( node ) - return a._names - - -class DartGenerator( pythonjs.JSGenerator ): - - def __init__(self, requirejs=False, insert_runtime=False): - pythonjs.JSGenerator.__init__(self, requirejs=False, insert_runtime=False) - self._classes = dict() - self._class_props = dict() - self._raw_dict = False - - def visit_With(self, node): - s = [] - for b in node.body: - a = self.visit(b) - a = a.replace('\\n', '\n') - a = a.strip()[1:-2] # strip `"x";` to `x` - s.append( a ) - return '\n'.join(s) - - def _visit_subscript_ellipsis(self, node): - name = self.visit(node.value) - return '%s.$wrapped' %name - - def visit_List(self, node): - return 'new list([%s])' % ', '.join(map(self.visit, node.elts)) - - def visit_Dict(self, node): - a = [] - for i in range( len(node.keys) ): - k = self.visit( node.keys[ i ] ) - v = self.visit( node.values[i] ) - a.append( '%s:%s'%(k,v) ) - b = ','.join( a ) - if self._raw_dict: - return '{%s}' %b - else: - return 'new dict( {%s} )' %b - - def visit_ClassDef(self, node): - node._parents = set() - out = [] - extends = False ## Dart has no support for multiple inheritance! - props = set(['$wrapped']) - bases = set() - base_classes = set() - - self._classes[ node.name ] = node - self._class_props[ node.name ] = props - for decor in node.decorator_list: ## class decorators - if isinstance(decor, ast.Call): - props.update( [self.visit(a) for a in decor.args] ) - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.value.id == 'dart': - if decor.attr == 'extends': - extends = True - props.add('$wrapped') - for name_node in collect_names( node ): - if name_node.id == 'self': - name_node.id = 'this' - else: - raise SyntaxError - - - for base in node.bases: - n = self.visit(base) - if n == 'object': - continue - node._parents.add( n ) - - bases.add( n ) - if n in self._class_props: - props.update( self._class_props[n] ) - base_classes.add( self._classes[n] ) - else: ## special case - subclassing a builtin like `list` - continue - - for p in self._classes[ n ]._parents: - bases.add( p ) - props.update( self._class_props[p] ) - base_classes.add( self._classes[p] ) - - if bases: - if extends: - assert len(bases) == 1 - out.append('class %s extends %s {'%(node.name, ','.join(bases))) - else: - #if bases[0] == 'object': - # out.append('class %s {' %node.name) - #else: - out.append('class %s implements %s {'%(node.name, ', '.join(bases))) - - - else: - out.append('class %s {' %node.name) - self.push() - - for p in props: - out.append(self.indent()+ 'var %s;'%p) - - method_names = set() - for b in node.body: - - if isinstance(b, ast.With): - out.append( self.visit(b) ) - elif isinstance(b, ast.FunctionDef) and len(b.decorator_list): ##getter/setters - for name_node in collect_names( b ): - if name_node.id == 'self': - name_node.id = 'this' - - b.args.args = b.args.args[1:] - out.append( self.visit(b) ) - - elif extends: - if isinstance(b, ast.FunctionDef): - b.args.args = b.args.args[1:] - if b.name == node.name: - args = [self.visit(a) for a in b.args.args] - args = ','.join(args) - out.append( - self.indent()+'%s(%s) : super() { this.__init__(%s); }'%(node.name, args, args) - ) - b.name = '__init__' - elif b.name == '__getitem__': - b.name = '' - b._prefix = 'operator []' - elif b.name == '__setitem__': - b.name = '' - b._prefix = 'void operator []=' - elif b.name == '__add__': - b.name = '' - b._prefix = 'operator +' - elif b.name == '__iadd__': - b.name = '' - b._prefix = 'void operator +=' - elif b.name == '__sub__': - b.name = '' - b._prefix = 'operator -' - elif b.name == '__mul__': - b.name = '' - b._prefix = 'operator *' - elif b.name == '__div__': - b.name = '' - b._prefix = 'operator /' - - elif b.name == '__or__': - b.name = '' - b._prefix = 'operator |' - elif b.name == '__xor__': - b.name = '' - b._prefix = 'operator ^' - - - - line = self.visit(b) - out.append( line ) - - elif isinstance(b, ast.FunctionDef) and b.name == node.name: - args, kwargs = self.get_args_kwargs_from_funcdef(b, skip_self=True) - kwargs_init = ['%s:%s' %(x.split(':')[0], x.split(':')[0]) for x in kwargs] - - #args = [self.visit(a) for a in b.args.args][1:] - #args = ','.join(args) - b._prefix = 'static void' - b.name = '__init__' - out.append( self.visit(b) ) - if args: - args = ','.join(args) - if kwargs: - out.append( - self.indent()+'%s(%s, {%s}) {%s.__init__(this,%s,%s);}'%(node.name, args, ','.join(kwargs), node.name, args, ','.join(kwargs_init)) - ) - - else: - out.append( - self.indent()+'%s(%s) {%s.__init__(this,%s);}'%(node.name, args, node.name, args) - ) - elif kwargs: - out.append( - self.indent()+'%s( {%s} ) {%s.__init__(this,%s);}'%(node.name, ','.join(kwargs), node.name, ','.join(kwargs_init)) - ) - - else: - out.append( - self.indent()+'%s() {%s.__init__(this);}'%(node.name, node.name) - ) - - elif isinstance(b, ast.FunctionDef): - method_names.add( b.name ) - TransformSuperCalls( b, bases ) - - operator = False - if b.name == '__getitem__': - operator = 'operator []' - elif b.name == '__setitem__': - operator = 'operator []=' - elif b.name == '__add__': - operator = 'operator +' - elif b.name == '__sub__': - operator = 'operator -' - elif b.name == '__mul__': - operator = 'operator *' - elif b.name == '__div__': - operator = 'operator /' - elif b.name == '__and__': - operator = 'operator &' - elif b.name == '__or__': - operator = 'operator |' - elif b.name == '__xor__': - operator = 'operator ^' - elif b.name == '__lshift__': - operator = 'operator <<' - elif b.name == '__rshift__': - operator = 'operator >>' - - args = [self.visit(a) for a in b.args.args][1:] - args = ','.join(args) - if operator and args: - out.append(self.indent()+ '%s(%s) { return %s.__%s(this,%s); }'%(operator, args, node.name, b.name, args) ) - - elif operator: - out.append(self.indent()+ '%s() { return %s.__%s(this); }'%(operator, node.name, b.name) ) - - elif args: - out.append(self.indent()+ '%s(%s) { return %s.__%s(this,%s); }'%(b.name, args, node.name, b.name, args) ) - else: - out.append(self.indent()+ '%s() { return %s.__%s(this); }'%(b.name, node.name, b.name) ) - - b._prefix = 'static' - name = b.name - b.name = '__%s'%name - out.append( self.visit(b) ) - b.name = name - - else: - line = self.visit(b) - if line.startswith('var '): - out.append( self.indent()+line ) - else: - out.append( line ) - - if not extends and base_classes: - for bnode in base_classes: - for b in bnode.body: - if isinstance(b, ast.FunctionDef): - if b.name == '__init__': continue - if b.name in method_names: continue - - args = [self.visit(a) for a in b.args.args][1:] - args = ','.join(args) - if args: - out.append(self.indent()+ '%s(%s) { return %s.__%s(this,%s); }'%(b.name, args, bnode.name, b.name, args) ) - else: - out.append(self.indent()+ '%s() { return %s.__%s(this); }'%(b.name, bnode.name, b.name) ) - - - self.pull() - out.append('}') - return '\n'.join(out) - - def get_args_kwargs_from_funcdef(self, node, skip_self=False): - args = [] - kwargs = [] - if skip_self: nargs = node.args.args[1:] - else: nargs = node.args.args - - offset = len(nargs) - len(node.args.defaults) - for i, arg in enumerate(nargs): - a = arg.id - dindex = i - offset - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - kwargs.append( '%s:%s' %(a, default_value) ) - else: - args.append( a ) - - return args, kwargs - - - def _visit_for_prep_iter_helper(self, node, out, iter_name): - out.append( - #self.indent() + 'if (%s is dict) { %s = %s.keys(); }' %(iter_name, iter_name, iter_name) - self.indent() + 'if (%s is dict) %s = %s.keys();' %(iter_name, iter_name, iter_name) - ) - - - def visit_Expr(self, node): - s = self.visit(node.value) - if isinstance(node.value, ast.Call) and isinstance(node.value.func, ast.Name) and node.value.func.id == 'JS': - if s.endswith('}') and 'return' in s.split(' '): - pass - elif not s.endswith(';'): - s += ';' - elif not s.endswith(';'): - s += ';' - return s - - - - def visit_Print(self, node): - args = [self.visit(e) for e in node.values] - if len(args) > 1: - s = 'print([%s]);' % ', '.join(args) - else: - s = 'print(%s);' % ', '.join(args) - return s - - - def visit_Assign(self, node): - assert len(node.targets) == 1 - target = node.targets[0] - if isinstance(target, ast.Tuple): - #raise NotImplementedError - elts = [self.visit(e) for e in target.elts] - if self.indent(): - return '%s = %s' % (','.join(elts), self.visit(node.value)) - else: - return 'var %s = %s' % (','.join(elts), self.visit(node.value)) - - else: - target = self.visit(target) - value = self.visit(node.value) - if self.indent(): - code = '%s = %s;' % (target, value) - else: - code = 'var %s = %s;' % (target, value) - return code - - def _visit_function(self, node): - getter = False - setter = False - args_typedefs = {} - for decor in node.decorator_list: - if isinstance(decor, ast.Name) and decor.id == 'property': - getter = True - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.attr == 'setter': - setter = True - elif isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == '__typedef__': - for key in decor.keywords: - args_typedefs[ key.arg ] = key.value.id - else: - raise SyntaxError - - args = [] #self.visit(node.args) - oargs = [] - offset = len(node.args.args) - len(node.args.defaults) - varargs = False - varargs_name = None - for i, arg in enumerate(node.args.args): - a = arg.id - if a in args_typedefs: - a = '%s %s' %(args_typedefs[a], a) - dindex = i - offset - if a.startswith('__variable_args__'): - varargs_name = a.split('__')[-1] - varargs = ['_vararg_%s'%n for n in range(16) ] - args.append( '[%s]'%','.join(varargs) ) - - elif dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - oargs.append( '%s:%s' %(a, default_value) ) - else: - args.append( a ) - - if oargs: - #args.append( '[%s]' % ','.join(oargs) ) - args.append( '{%s}' % ','.join(oargs) ) - - buffer = self.indent() - if hasattr(node,'_prefix'): buffer += node._prefix + ' ' - - if getter: - buffer += 'get %s {\n' % node.name - elif setter: - buffer += 'set %s(%s) {\n' % (node.name, ', '.join(args)) - else: - buffer += '%s(%s) {\n' % (node.name, ', '.join(args)) - self.push() - - if varargs: - buffer += 'var %s = new list([]);\n' %varargs_name - for i,n in enumerate(varargs): - buffer += 'if (%s != null) %s.append(%s);\n' %(n, varargs_name, n) - - body = list() - for child in node.body: - if isinstance(child, ast.Str): - continue - else: - body.append( self.indent() + self.visit(child) ) - - buffer += '\n'.join(body) - self.pull() - buffer += '\n%s}\n' %self.indent() - return buffer - - - def visit_Is(self, node): - return '==' - - def visit_IsNot(self, node): - return '!=' - - def visit_NotEq(self, node): - return '!=' - - def _visit_call_helper(self, node): - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '' - - if isinstance(node.func, ast.Name) and node.func.id == 'range' and len(node.args)==2: - func = '__range2' - else: - func = self.visit(node.func) - - if node.keywords: - kwargs = ','.join( ['%s:%s'%(x.arg, self.visit(x.value)) for x in node.keywords] ) - if args: - return '%s(%s, %s)' %( func, ','.join(args), kwargs ) - else: - return '%s( %s )' %( func, kwargs ) - - else: - return '%s(%s)' % (func, args) - - def _visit_call_helper_var(self, node): - args = [ self.visit(a) for a in node.args ] - if self._function_stack: - fnode = self._function_stack[-1] - rem = [] - for arg in args: - if arg in fnode._local_vars: - rem.append( arg ) - else: - fnode._local_vars.add( arg ) - for arg in rem: - args.remove( arg ) - - out = [] - - if args: - out.append( 'var ' + ','.join(args) ) - if node.keywords: - for key in node.keywords: - out.append( '%s %s' %(key.value.id, key.arg) ) - - return ';'.join(out) - - def _visit_call_helper_list(self, node): - name = self.visit(node.func) - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '[]' ## the dart list builtin requires an argument - return '%s(%s)' % (name, args) - - - def _visit_call_helper_numpy_array(self, node): - simd = { - 'float32': 'Float32x4' - } - arg_name = args = None - direct = False - if isinstance(node.args[0], ast.Name): - arg_name = node.args[0].id - else: - args = ','.join( [self.visit(a) for a in node.args[0].elts] ) - if len(node.args[0].elts) == 4: ## simple rule: if there are 4 items, its a direct SIMD type - direct = True - - if node.keywords: - for key in node.keywords: - if key.arg == 'dtype': - if isinstance(key.value, ast.Attribute) and key.value.attr in simd: - if arg_name: - return 'new float32vec( %s )' %arg_name - elif direct: - return 'new %s(%s)' %(simd[key.value.attr] ,args) - else: - return 'new float32vec( [%s] )' %args - else: - raise NotImplementedError('numpy.array requires dtype is given') - - - def _visit_call_helper_instanceof(self, node): - args = map(self.visit, node.args) - if len(args) == 2: - if args[1] == 'Number': - args[1] = 'num' - return '%s is %s' %tuple(args) - else: - raise SyntaxError( args ) - - def visit_ExceptHandler(self, node): - return '\n'.join( [self.visit(n) for n in node.body] ) - - def visit_Compare(self, node): - specials = { - '<' : '__lt__', - '>' : '__gt__', - '<=' : '__lte__', - '>=' : '__gte__' - } - comp = [] - if len(node.ops) == 0: - - comp.append('(') - comp.append( self.visit(node.left) ) - comp.append( ')' ) - - else: - if self.visit(node.ops[0]) in specials: - pass - else: - comp.append('(') - comp.append( self.visit(node.left) ) - comp.append( ')' ) - - for i in range( len(node.ops) ): - op = self.visit(node.ops[i]) - - if op in specials: - comp.append( specials[op] + '(%s,' %self.visit(node.left) ) - else: - comp.append( op ) - - if isinstance(node.comparators[i], ast.BinOp): - comp.append('(') - comp.append( self.visit(node.comparators[i]) ) - comp.append(')') - else: - comp.append( self.visit(node.comparators[i]) ) - - if op in specials: - comp.append( ')' ) - - - return ' '.join( comp ) - -def main(script): - tree = ast.parse(script) - return DartGenerator().visit(tree) - - -def command(): - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - js = main( data ) - print( js ) - - -if __name__ == '__main__': - command() diff --git a/pythonjs/pythonjs_to_go.py b/pythonjs/pythonjs_to_go.py deleted file mode 100644 index c0ff87c..0000000 --- a/pythonjs/pythonjs_to_go.py +++ /dev/null @@ -1,570 +0,0 @@ -#!/usr/bin/env python -# PythonJS to Go Translator -# by Brett Hartshorn - copyright 2014 -# License: "New BSD" -import os, sys -import ast -import pythonjs - - - -class GoGenerator( pythonjs.JSGenerator ): - - def __init__(self, requirejs=False, insert_runtime=False): - pythonjs.JSGenerator.__init__(self, requirejs=False, insert_runtime=False) - - self._class_stack = list() - self._classes = dict() - self._class_props = dict() - - self._vars = set() - self._known_vars = set() - self._kwargs_type_ = dict() - - self._imports = [] - - def visit_ClassDef(self, node): - self._class_stack.append( node ) - node._parents = set() - node._struct_def = dict() - out = [] - sdef = dict() - props = set() - bases = set() - base_classes = set() - - self._classes[ node.name ] = node - self._class_props[ node.name ] = props - - - for base in node.bases: - n = self.visit(base) - if n == 'object': - continue - node._parents.add( n ) - - bases.add( n ) - if n in self._class_props: - props.update( self._class_props[n] ) - base_classes.add( self._classes[n] ) - #else: ## special case - subclassing a builtin like `list` - # continue - - for p in self._classes[ n ]._parents: - bases.add( p ) - props.update( self._class_props[p] ) - base_classes.add( self._classes[p] ) - - - for decor in node.decorator_list: ## class decorators - if isinstance(decor, ast.Call): - assert decor.func.id=='__struct__' - #props.update( [self.visit(a) for a in decor.args] ) - for kw in decor.keywords: - props.add( kw.arg ) - sdef[ kw.arg ] = kw.value.id - - node._struct_def.update( sdef ) - out.append( 'type %s struct {' %node.name) - if base_classes: - for bnode in base_classes: - ## Go only needs the name of the parent struct and all its items are inserted automatically ## - out.append('%s' %bnode.name) - - for name in sdef: - out.append('%s %s' %(name, sdef[name])) - out.append('}') - - - init = None - method_names = set() - for b in node.body: - assert isinstance(b, ast.FunctionDef) - method_names.add( b.name ) - out.append( self.visit(b) ) - if b.name == '__init__': - init = b - - - parent_init = None - if base_classes: - for bnode in base_classes: - for b in bnode.body: - if isinstance(b, ast.FunctionDef): - if b.name in method_names: - continue - if b.name == '__init__': - parent_init = {'class':bnode, 'init':b} - #continue - out.append( self.visit(b) ) - - if init or parent_init: - if parent_init: - classname = parent_init['class'].name - init = parent_init['init'] - else: - classname = node.name - - out.append( 'func __new__%s( %s ) *%s {' %(node.name, init._args_signature, node.name)) - out.append( ' ob := %s{}' %node.name ) - out.append( ' ob.__init__(%s)' %','.join(init._arg_names)) - out.append( ' return &ob') - out.append('}') - - else: - out.append( 'func __new__%s() *%s { return &%s{} }' %(node.name, node.name, node.name)) - - - self._class_stack.pop() - return '\n'.join(out) - - - def visit_Slice(self, node): - lower = upper = step = None - if node.lower: - lower = self.visit(node.lower) - if node.upper: - upper = self.visit(node.upper) - if node.step: - step = self.visit(node.step) - - if lower and upper: - return '%s:%s' %(lower,upper) - elif upper: - return ':%s' %upper - elif lower: - return '%s:'%lower - else: - raise SyntaxError('TODO slice') - - - def visit_Print(self, node): - r = [] - for e in node.values: - s = self.visit(e) - if isinstance(e, ast.List): - r.append('fmt.Println(%s);' %s[1:-1]) - else: - r.append('fmt.Println(%s);' %s) - return ''.join(r) - - def visit_Expr(self, node): - return self.visit(node.value) - - def visit_Import(self, node): - r = [alias.name.replace('__SLASH__', '/') for alias in node.names] - if r: - for name in r: - self._imports.append('import("%s");' %name) - return '' - - def visit_Module(self, node): - header = [ - 'package main', - 'import "fmt"' - ] - lines = [] - - for b in node.body: - line = self.visit(b) - - if line: - for sub in line.splitlines(): - if sub==';': - raise SyntaxError(line) - else: - lines.append( sub ) - else: - if isinstance(b, ast.Import): - pass - else: - raise SyntaxError(b) - - lines.append('type _kwargs_type_ struct {') - for name in self._kwargs_type_: - type = self._kwargs_type_[name] - lines.append( ' %s %s' %(name,type)) - lines.append( ' __use__%s bool' %name) - lines.append('}') - - lines = header + self._imports + lines - return '\n'.join( lines ) - - - def visit_Compare(self, node): - comp = [ '('] - comp.append( self.visit(node.left) ) - comp.append( ')' ) - - for i in range( len(node.ops) ): - comp.append( self.visit(node.ops[i]) ) - - if isinstance(node.comparators[i], ast.BinOp): - comp.append('(') - comp.append( self.visit(node.comparators[i]) ) - comp.append(')') - else: - comp.append( self.visit(node.comparators[i]) ) - - return ' '.join( comp ) - - def visit_For(self, node): - target = self.visit(node.target) - lines = [] - if isinstance(node.iter, ast.Call) and isinstance(node.iter.func, ast.Name): - - if node.iter.func.id == 'range': - if len(node.iter.args)==1: - iter = self.visit(node.iter.args[0]) - lines.append('for %s := 0; %s < %s; %s++ {' %(target, target, iter, target)) - elif len(node.iter.args)==2: - start = self.visit(node.iter.args[0]) - iter = self.visit(node.iter.args[1]) - lines.append('for %s := %s; %s < %s; %s++ {' %(target, start, target, iter, target)) - else: - raise SyntaxError('invalid for range loop') - - elif node.iter.func.id == 'enumerate': - iter = self.visit(node.iter.args[0]) - idx = self.visit(node.target.elts[0]) - tar = self.visit(node.target.elts[1]) - lines.append('for %s,%s := range %s {' %(idx,tar, iter)) - - else: - raise SyntaxError('invalid for loop - bad iterator') - - elif isinstance(node.target, ast.List) or isinstance(node.target, ast.Tuple): - iter = self.visit( node.iter ) - key = self.visit(node.target.elts[0]) - val = self.visit(node.target.elts[1]) - lines.append('for %s,%s := range %s {' %(key,val, iter)) - - else: - iter = self.visit( node.iter ) - lines.append('for _,%s := range %s {' %(target, iter)) - - self.push() - for b in node.body: - lines.append( self.indent()+self.visit(b) ) - self.pull() - lines.append( self.indent()+'}' ) ## end of for loop - return '\n'.join(lines) - - - def _visit_call_helper(self, node): - fname = self.visit(node.func) - if fname=='__DOLLAR__': fname = '$' - elif fname == 'range': - assert len(node.args) - fname += str(len(node.args)) - - - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '' - - if node.keywords: - if args: args += ',' - args += '_kwargs_type_{' - x = ['%s:%s' %(kw.arg,self.visit(kw.value)) for kw in node.keywords] - x.extend( ['__use__%s:true' %kw.arg for kw in node.keywords] ) - args += ','.join( x ) - args += '}' - - if node.starargs: - if args: args += ',' - args += '%s...' %self.visit(node.starargs) - - return '%s(%s)' % (fname, args) - - def _visit_call_helper_go(self, node): - name = self.visit(node.func) - if name == '__go__': - return 'go %s' %self.visit(node.args[0]) - elif name == '__go_make__': - if len(node.args)==2: - return 'make(%s, %s)' %(self.visit(node.args[0]), self.visit(node.args[1])) - elif len(node.args)==3: - return 'make(%s, %s, %s)' %(self.visit(node.args[0]), self.visit(node.args[1]), self.visit(node.args[1])) - else: - raise SyntaxError('go make requires 2 or 3 arguments') - elif name == '__go_make_chan__': - return 'make(chan %s)' %self.visit(node.args[0]) - elif name == '__go__array__': - if isinstance(node.args[0], ast.BinOp):# and node.args[0].op == '<<': ## todo assert right is `typedef` - a = self.visit(node.args[0].left) - return '[]%s' %a - else: - a = self.visit(node.args[0]) - return '[]%s{}' %a - else: - raise SyntaxError(name) - - def visit_Return(self, node): - if isinstance(node.value, ast.Tuple): - return 'return %s' % ', '.join(map(self.visit, node.value.elts)) - if node.value: - return 'return %s' % self.visit(node.value) - return 'return' - - def _visit_function(self, node): - if self._function_stack[0] is node: - self._vars = set() - self._known_vars = set() - - args_typedefs = {} - chan_args_typedefs = {} - return_type = None - for decor in node.decorator_list: - if isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == '__typedef__': - for key in decor.keywords: - #args_typedefs[ key.arg ] = key.value.id - args_typedefs[ key.arg ] = self.visit(key.value) - elif isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == '__typedef_chan__': - for key in decor.keywords: - chan_args_typedefs[ key.arg ] = self.visit(key.value) - elif isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == 'returns': - if decor.keywords: - raise SyntaxError('invalid go return type') - else: - return_type = decor.args[0].id - - - node._arg_names = [] - args = [] - oargs = [] - offset = len(node.args.args) - len(node.args.defaults) - varargs = False - varargs_name = None - is_method = False - for i, arg in enumerate(node.args.args): - arg_name = arg.id - - if arg_name not in args_typedefs.keys()+chan_args_typedefs.keys(): - if arg_name=='self': - assert i==0 - is_method = True - continue - else: - err = 'error in function: %s' %node.name - err += '\n missing typedef: %s' %arg.id - raise SyntaxError(err) - - if arg_name in args_typedefs: - arg_type = args_typedefs[arg_name] - a = '%s %s' %(arg_name, arg_type) - else: - arg_type = chan_args_typedefs[arg_name] - a = '%s chan %s' %(arg_name, arg_type) - - dindex = i - offset - - if a.startswith('__variable_args__'): ## TODO support go `...` varargs - #varargs_name = a.split('__')[-1] - #varargs = ['_vararg_%s'%n for n in range(16) ] - #args.append( '[%s]'%','.join(varargs) ) - raise SyntaxError('TODO *args') - - elif dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - self._kwargs_type_[ arg_name ] = arg_type - oargs.append( (arg_name, default_value) ) - else: - args.append( a ) - node._arg_names.append( arg_name ) - - if oargs: - #args.append( '[%s]' % ','.join(oargs) ) - #args.append( '{%s}' % ','.join(oargs) ) - args.append( '__kwargs _kwargs_type_') - node._arg_names.append( '__kwargs' ) - - if node.args.vararg: - starargs = node.args.vararg - assert starargs in args_typedefs - args.append( '%s ...%s' %(starargs, args_typedefs[starargs])) - node._arg_names.append( starargs ) - - node._args_signature = ','.join(args) - - #### - if is_method: - assert self._class_stack - method = '(self *%s) ' %self._class_stack[-1].name - else: - method = '' - out = [] - if return_type: - out.append( self.indent() + 'func %s%s(%s) %s {\n' % (method, node.name, ', '.join(args), return_type) ) - else: - out.append( self.indent() + 'func %s%s(%s) {\n' % (method, node.name, ', '.join(args)) ) - self.push() - - if oargs: - for n,v in oargs: - out.append('%s := %s' %(n,v)) - out.append('if __kwargs.__use__%s {' %n ) - out.append( ' %s = __kwargs.%s' %(n,n)) - out.append('}') - #out.append('} else { %s := %s }' %(n,v)) - - for b in node.body: - v = self.visit(b) - if v: - out.append( self.indent() + v ) - - self.pull() - out.append( self.indent()+'}' ) - return '\n'.join(out) - - def _visit_call_helper_var(self, node): - args = [ self.visit(a) for a in node.args ] - #if args: - # out.append( 'var ' + ','.join(args) ) - if node.keywords: - for key in node.keywords: - args.append( key.arg ) - - for name in args: - if name not in self._vars: - self._vars.add( name ) - - #out = [] - #for v in args: - # out.append( self.indent() + 'var ' + v + ' int') - - #return '\n'.join(out) - return '' - - def visit_With(self, node): - r = [] - is_switch = False - if isinstance( node.context_expr, ast.Name ) and node.context_expr.id == '__default__': - r.append('default:') - elif isinstance( node.context_expr, ast.Name ) and node.context_expr.id == '__select__': - r.append('select {') - is_switch = True - elif isinstance( node.context_expr, ast.Call ): - if not isinstance(node.context_expr.func, ast.Name): - raise SyntaxError( self.visit(node.context_expr)) - - if len(node.context_expr.args): - a = self.visit(node.context_expr.args[0]) - else: - assert len(node.context_expr.keywords) - ## need to catch if this is a new variable ## - name = node.context_expr.keywords[0].arg - if name not in self._known_vars: - a = '%s := %s' %(name, self.visit(node.context_expr.keywords[0].value)) - else: - a = '%s = %s' %(name, self.visit(node.context_expr.keywords[0].value)) - - if node.context_expr.func.id == '__case__': - r.append('case %s:' %a) - elif node.context_expr.func.id == '__switch__': - r.append('switch (%s) {' %self.visit(node.context_expr.args[0])) - is_switch = True - else: - raise SyntaxError( 'invalid use of with') - - - for b in node.body: - a = self.visit(b) - if a: r.append(a) - - if is_switch: - r.append('}') - - return '\n'.join(r) - - def visit_Assign(self, node): - target = node.targets[0] - if isinstance(target, ast.Tuple): - raise NotImplementedError('TODO') - - elif isinstance(node.value, ast.BinOp) and self.visit(node.value.op)=='<<' and isinstance(node.value.left, ast.Name) and node.value.left.id=='__go__send__': - target = self.visit(target) - value = self.visit(node.value.right) - return '%s <- %s;' % (target, value) - - elif not self._function_stack: - target = self.visit(target) - value = self.visit(node.value) - return 'var %s = %s;' % (target, value) - - elif isinstance(node.targets[0], ast.Name) and target.id in self._vars: - target = self.visit(target) - value = self.visit(node.value) - self._vars.remove( target ) - self._known_vars.add( target ) - return '%s := %s;' % (target, value) - - else: - target = self.visit(target) - value = self.visit(node.value) - - #if '<-' in value: - # raise RuntimeError(target+value) - - return '%s = %s;' % (target, value) - - def visit_While(self, node): - cond = self.visit(node.test) - if cond == 'true' or cond == '1': cond = '' - body = [ 'for %s {' %cond] - self.push() - for line in list( map(self.visit, node.body) ): - body.append( self.indent()+line ) - self.pull() - body.append( self.indent() + '}' ) - return '\n'.join( body ) - - def _inline_code_helper(self, s): - return s - #return 'js.Global.Call("eval", "%s")' %s ## TODO inline JS() - - - - - -def main(script, insert_runtime=True): - - if insert_runtime: - dirname = os.path.dirname(os.path.abspath(__file__)) - dirname = os.path.join(dirname, 'runtime') - runtime = open( os.path.join(dirname, 'go_builtins.py') ).read() - script = runtime + '\n' + script - - tree = ast.parse(script) - #return GoGenerator().visit(tree) - try: - return GoGenerator().visit(tree) - except SyntaxError as err: - sys.stderr.write(script) - raise err - - - -def command(): - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - out = main( data ) - print( out ) - - -if __name__ == '__main__': - command() diff --git a/pythonjs/pythonjs_to_lua.py b/pythonjs/pythonjs_to_lua.py deleted file mode 100644 index 5a0e7cf..0000000 --- a/pythonjs/pythonjs_to_lua.py +++ /dev/null @@ -1,361 +0,0 @@ -#!/usr/bin/env python -# PythonJS to Lua Translator -# by Brett Hartshorn - copyright 2014 -# License: "New BSD" -import sys -import ast -import pythonjs - -class TransformSuperCalls( ast.NodeVisitor ): - def __init__(self, node, class_names): - self._class_names = class_names - self.visit(node) - - def visit_Call(self, node): - if isinstance(node.func, ast.Attribute) and isinstance(node.func.value, ast.Name) and node.func.value.id in self._class_names: - node.func.attr = '__' + node.func.attr - -class CollectNames(ast.NodeVisitor): - def __init__(self): - self._names = [] - def visit_Name(self, node): - self._names.append( node ) - -def collect_names(node): - a = CollectNames() - a.visit( node ) - return a._names - - -class LuaGenerator( pythonjs.JSGenerator ): - - def __init__(self, requirejs=False, insert_runtime=False): - pythonjs.JSGenerator.__init__(self, requirejs=False, insert_runtime=False) - self._classes = dict() - self._class_props = dict() - - def visit_BinOp(self, node): - left = self.visit(node.left) - op = self.visit(node.op) - right = self.visit(node.right) - if op == '&': - return '(__bitops__.band(%s, %s))' %(left, right) - elif op == '|': - return '(__bitops__.bor(%s, %s))' %(left, right) - elif op == '^': - return '(__bitops__.bxor(%s, %s))' %(left, right) - elif op == '<<': - return '(__bitops__.lshift(%s, %s))' %(left, right) - elif op == '>>': - return '(__bitops__.rshift(%s, %s))' %(left, right) - else: - return '(%s %s %s)' % (left, op, right) - - def visit_Import(self, node): - for alias in node.names: - return 'require "%s"' %alias.name - - def _visit_subscript_ellipsis(self, node): - name = self.visit(node.value) - return '%s.__wrapped__' %name - - def visit_Name(self, node): - if node.id == 'None': - return 'nil' - elif node.id == 'True': - return 'true' - elif node.id == 'False': - return 'false' - elif node.id == 'null': - return 'nil' - return node.id - - def visit_And(self, node): - return ' and ' - - def visit_Or(self, node): - return ' or ' - - def visit_Not(self, node): - return ' not ' - - def visit_IsNot(self, node): - return '~=' - - def visit_NotEq(self, node): - return '~=' - - def visit_Is(self, node): - return '==' - - def visit_Subscript(self, node): - if isinstance(node.slice, ast.Ellipsis): - return self._visit_subscript_ellipsis( node ) - else: - return '%s[%s]' % (self.visit(node.value), self.visit(node.slice)) - - def _visit_call_helper_JSObject(self, node): - if node.keywords: - kwargs = map(self.visit, node.keywords) - f = lambda x: '%s = %s' % (x[0], x[1]) - out = ', '.join(map(f, kwargs)) - return '{%s}' % out - else: - return '{}' - - def _visit_call_helper_JSArray(self, node): - if node.args: - args = map(self.visit, node.args) - out = ', '.join(args) - return '{%s}' % out - else: - return '{}' - - def _visit_call_helper_var(self, node): - args = [ self.visit(a) for a in node.args ] - if self._function_stack: - fnode = self._function_stack[-1] - rem = [] - for arg in args: - if arg in fnode._local_vars: - rem.append( arg ) - else: - fnode._local_vars.add( arg ) - for arg in rem: - args.remove( arg ) - - if args: - out = ', '.join(args) - return 'local %s' % out - else: - return '' - - def _inline_code_helper(self, s): - return s - - def visit_While(self, node): - body = [ 'while %s do' %self.visit(node.test)] - self.push() - for line in list( map(self.visit, node.body) ): - body.append( self.indent()+line ) - self.pull() - body.append( self.indent() + 'end' ) - return '\n'.join( body ) - - - - def visit_Pass(self, node): - return '--pass--' - - def visit_If(self, node): - out = [] - out.append( 'if %s then' %self.visit(node.test) ) - self.push() - - for line in list(map(self.visit, node.body)): - out.append( self.indent() + line ) - - orelse = [] - for line in list(map(self.visit, node.orelse)): - orelse.append( self.indent() + line ) - - self.pull() - - if orelse: - out.append( self.indent() + 'else') - out.extend( orelse ) - - out.append( self.indent() + 'end') - - - return '\n'.join( out ) - - - def visit_List(self, node): - ## note, arrays in lua start at index 1, not zero! - return '{%s}' % ', '.join(map(self.visit, node.elts)) - - def visit_Dict(self, node): - a = [] - for i in range( len(node.keys) ): - k = self.visit( node.keys[ i ] ) - v = self.visit( node.values[i] ) - a.append( '%s=%s'%(k,v) ) - b = ','.join( a ) - return '{%s}' %b - - def visit_ClassDef(self, node): - raise NotImplementedError - - def visit_For(self, node): - if isinstance(node.target, ast.Name): - a = ['for __i,%s in pairs(%s) do' %(self.visit(node.target), self.visit(node.iter))] - elif isinstance(node.target, ast.List): - x = ','.join([self.visit(elt) for elt in node.target.elts]) - a = ['for %s in %s do' %(x, self.visit(node.iter))] - else: - raise SyntaxError( node.target ) - - for n in node.body: - a.append( self.visit(n) ) - a.append('end') - return '\n'.join(a) - - def visit_Expr(self, node): - return self.visit(node.value) - - - def visit_Print(self, node): - args = [self.visit(e) for e in node.values] - return 'print(%s)' % ', '.join(args) - - - def visit_Return(self, node): - if isinstance(node.value, ast.Tuple): - return 'return __get__(list,"__call__")({}, {pointer={%s}, length=%s});' % (', '.join([self.visit(e) for e in node.value.elts]), len(node.value.elts)) - if node.value: - return 'return %s;' % self.visit(node.value) - return 'return nil;' - - def visit_Assign(self, node): - assert len(node.targets) == 1 - target = node.targets[0] - if isinstance(target, ast.Tuple): - elts = [self.visit(e) for e in target.elts] - return '%s = %s' % (','.join(elts), self.visit(node.value)) - - else: - target = self.visit(target) - value = self.visit(node.value) - code = '%s = %s;' % (target, value) - return code - - def _visit_function(self, node): - getter = False - setter = False - klass = None - for decor in node.decorator_list: - if isinstance(decor, ast.Name) and decor.id == 'property': - getter = True - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.attr == 'setter': - setter = True - elif isinstance(decor, ast.Attribute) and isinstance(decor.value, ast.Name) and decor.attr == 'prototype': - klass = self.visit(decor) - elif isinstance(decor, ast.Call) and isinstance(decor.func, ast.Name) and decor.func.id == '__typedef__': - pass - else: - raise SyntaxError(decor) - - args = [] #self.visit(node.args) - oargs = [] - offset = len(node.args.args) - len(node.args.defaults) - varargs = False - varargs_name = None - for i, arg in enumerate(node.args.args): - a = arg.id - dindex = i - offset - - if dindex >= 0 and node.args.defaults: - default_value = self.visit( node.args.defaults[dindex] ) - oargs.append( '%s=%s' %(a, default_value) ) - else: - args.append( a ) - - if oargs: - args.extend( ','.join(oargs) ) - - buffer = self.indent() - if hasattr(node,'_prefix'): buffer += node._prefix + ' ' - - #if getter: - # buffer += 'get %s {\n' % node.name - #elif setter: - # buffer += 'set %s(%s) {\n' % (node.name, ', '.join(args)) - #else: - if klass: - buffer += '%s.%s = function(%s)\n' % (klass, node.name, ', '.join(args)) - else: - buffer += '%s = function(%s)\n' % (node.name, ', '.join(args)) - self.push() - - #if varargs: - # buffer += 'var %s = new list([]);\n' %varargs_name - # for i,n in enumerate(varargs): - # buffer += 'if (%s != null) %s.append(%s);\n' %(n, varargs_name, n) - - body = list() - for child in node.body: - if isinstance(child, ast.Str): - continue - elif isinstance(child, ast.Expr) and isinstance(child.value, ast.Str): - continue - else: - body.append( self.indent() + self.visit(child) ) - - body.append( '' ) - buffer += '\n'.join(body) - self.pull() - buffer += self.indent() + 'end' - - return buffer - - - def _visit_call_helper_instanceof(self, node): - raise NotImplementedError - - def visit_Raise(self, node): - return 'error(%s)' % self.visit(node.type) - - def visit_TryExcept(self, node): - out = ['__try__ = function()'] - self.push() - for n in node.body: - out.append( self.indent() + self.visit(n) ) - self.pull() - out.append( self.indent() + 'end' ) - - out.append( self.indent() + 'local __ok__, __exception__ = pcall(__try__)' ) - out.append( self.indent() + 'if not __ok__ then' ) - self.push() - for n in node.handlers: - out.append( self.visit(n) ) - self.pull() - out.append( self.indent() + 'end' ) - return '\n'.join( out ) - - def visit_ExceptHandler(self, node): - ## TODO check exception type - out = [] - if node.type: - out.append( self.indent() + '--exception: %s' %self.visit(node.type) ) - for n in node.body: - out.append( self.indent() + self.visit(n) ) - - return '\n'.join(out) - -def main(script): - tree = ast.parse(script) - return LuaGenerator().visit(tree) - - -def command(): - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - lua = main( data ) - print( lua ) - - -if __name__ == '__main__': - command() diff --git a/pythonjs/pythonjs_to_luajs.py b/pythonjs/pythonjs_to_luajs.py deleted file mode 100644 index a25a6a4..0000000 --- a/pythonjs/pythonjs_to_luajs.py +++ /dev/null @@ -1,62 +0,0 @@ -# _*_ coding: utf-8 _*_ -# PythonJS to LuaJS Translator -# by Brett Hartshorn - copyright 2014 -# License: "New BSD" - -import ast -import pythonjs_to_lua - -class LuajsGenerator( pythonjs_to_lua.LuaGenerator ): - - def _visit_call_helper_get_call_special(self, node): - ''' - lua.js has a bug where an extra "()" is required around `__get__(x,'__call__')({},{})` - this causes a syntax error in normal Lua. - ''' - name = self.visit(node.func) - if node.args: - args = [self.visit(e) for e in node.args] - args = ', '.join([e for e in args if e]) - else: - args = '' - return '(%s(%s))' % (name, args) - - - def visit_Import(self, node): - #for alias in node.names: - # return 'require "%s"' %alias.name - return '' - - def _inline_code_helper(self, s): - if 'function() return socket.gettime() end' in s: - s = s.replace('socket.gettime()', 'os.clock()') - return s - - - -def main(script): - tree = ast.parse(script) - return LuajsGenerator().visit(tree) - - -def command(): - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py'): - scripts.append( arg ) - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - lua = main( data ) - print( lua ) - - -if __name__ == '__main__': - command() \ No newline at end of file diff --git a/pythonjs/runtime/builtins.py b/pythonjs/runtime/builtins.py deleted file mode 100644 index 7047472..0000000 --- a/pythonjs/runtime/builtins.py +++ /dev/null @@ -1,2057 +0,0 @@ -# PythonJS builtins -# by Amirouche Boubekki and Brett Hartshorn - copyright 2013 -# License: "New BSD" - -pythonjs.configure( runtime_exceptions=False ) -pythonjs.configure( direct_operator='+' ) -pythonjs.configure( direct_operator='*' ) -pythonjs.configure( direct_keys=True ) - -_PythonJS_UID = 0 - -inline('IndexError = function(msg) {this.message = msg || "";}; IndexError.prototype = Object.create(Error.prototype); IndexError.prototype.name = "IndexError";') -inline('KeyError = function(msg) {this.message = msg || "";}; KeyError.prototype = Object.create(Error.prototype); KeyError.prototype.name = "KeyError";') -inline('ValueError = function(msg) {this.message = msg || "";}; ValueError.prototype = Object.create(Error.prototype); ValueError.prototype.name = "ValueError";') -inline('AttributeError = function(msg) {this.message = msg || "";}; AttributeError.prototype = Object.create(Error.prototype);AttributeError.prototype.name = "AttributeError";') -inline('RuntimeError = function(msg) {this.message = msg || "";}; RuntimeError.prototype = Object.create(Error.prototype);RuntimeError.prototype.name = "RuntimeError";') - -with lowlevel: - def __getfast__(ob, attr): - v = ob[ attr ] - if v is undefined: - raise AttributeError(attr) - else: - return v - - -with javascript: - def __wrap_function__(f): - f.is_wrapper = True - return f - - - def __gpu_object(cls, struct_name, data_name): - cls.prototype.__struct_name__ = struct_name - cls.prototype.__struct_data__ = data_name - with lowlevel: - gpu = { - 'object' : __gpu_object - } - - def glsljit_runtime(header): - return new( GLSLJITRuntime(header) ) - - class GLSLJITRuntime: - def __init__(self, header): - self.header = header - self.shader = [] - self.object_packagers = [] - self.struct_types = {} - self.glsltypes = ['vec2', 'vec3', 'vec4', 'mat4'] - self.matrices = [] - - def compile_header(self): - a = [] ## insert structs at top of header - for sname in self.struct_types: - if sname in self.glsltypes: - pass - else: - a.push( self.struct_types[sname]['code'] ) - - ## calls get_global_id, see WebCLGL API docs. ## - a.push('int matrix_index() { return int(get_global_id().y*%s.0); }' %self.matrices.length) - a.push('int matrix_row() { return int(get_global_id().x*4.0); }') ## returns: 0, 1, 2, 3 - - ## first class array error, can not return an array, even when the size is known ## - #a.push('float[3] floatN( float a, float b, float c) { float f[3]; f[0]=a; f[1]=b; f[2]=b; return f; }') - - ## these could be generated for each array size to reduce the mess in main, - ## TODO it would be better to upload them as uniforms. - #a.push('void floatN( float f[3], float a, float b, float c) { f[0]=a; f[1]=b; f[2]=b; }') - - ## the array can be declared in the header, but not filled with data here. - #a.push('float XXX[3];') - #a.push('floatN( XXX, 1.1, 2.2, 3.3 );') - #a.push('XXX[0]=1.1;') - - - a = '\n'.join(a) - ## code in header could be methods that reference the struct types above. - b = "\n".join(self.header) - return '\n'.join([a,b]) - - def compile_main(self): - return '\n'.join(self.shader) - - def push(self, s): - self.shader.push(s) - - - def define_structure(self, ob): - struct_name = None - #if Object.hasOwnProperty.call(ob,'__struct_name__'): - if ob.__struct_name__: - struct_name = ob.__struct_name__ - if struct_name in self.struct_types: - return struct_name - - arrays = [] - floats = [] - integers = [] - structs = [] - struct_type = [] ## fallback for javascript objects - - if struct_name and struct_name in self.glsltypes: - return struct_name - - #for key in ob.keys(): - for key in dir( ob ): - if key.length==1 and key in '0123456789': - raise RuntimeError(key) - t = typeof( ob[key] ) - if t=='object' and instanceof(ob[key], Array) and ob[key].length and typeof(ob[key][0])=='number': - struct_type.push( 'ARY_'+key ) - arrays.push(key) - elif t=='number': - struct_type.push( 'NUM_'+key) - floats.push(key) - elif instanceof(ob[key], Int16Array): - struct_type.push( 'INT_'+key) - if ob[key].length == 1: - integers.push(key) - else: - pass ## TODO int16array - elif t=='object' and ob[key].__struct_name__: - struct_type.push( 'S_'+key) - structs.push( key ) - if ob[key].__struct_name__ not in self.struct_types: - if ob[key].__struct_name__ in self.glsltypes: - pass - else: - self.define_structure( ob[key] ) - - if struct_name is None: - #print('DEGUG: new struct name', ob.__struct_name__) - #print(ob) - struct_name = ''.join( struct_type ) - ob.__struct_name__ = struct_name - - if struct_name not in self.struct_types: - member_list = [] - for key in integers: - member_list.append('int '+key+';') - for key in floats: - member_list.append('float '+key+';') - for key in arrays: - arr = ob[key] - member_list.append('float '+key+'['+arr.length+'];') - for key in structs: - subtype = ob[key].__struct_name__ - member_list.append( subtype+' '+key+';') - - if len(member_list)==0: - raise RuntimeError(struct_name) - - members = ''.join(member_list) - code = 'struct ' +struct_name+ ' {' +members+ '};' - #print('-------struct glsl code-------') - #print(code) - #print('------------------------------') - self.struct_types[ struct_name ] = { - 'arrays' : arrays, - 'floats' : floats, - 'integers': integers, - 'structs' : structs, - 'code' : code - } - return struct_name - - def structure(self, ob, name): - wrapper = None - if instanceof(ob, Object): - pass - elif ob.__class__ is dict: - wrapper = ob - ob = ob[...] - - sname = self.define_structure(ob) - if wrapper: - wrapper.__struct_name__ = sname - - args = [] - stype = self.struct_types[ sname ] - - # if stype is None: ## TODO fix me - if sname not in self.struct_types: - if sname in self.glsltypes: - if sname == 'mat4': - if ob.__struct_data__: - o = ob[ ob.__struct_data__ ] - else: - o = ob - - for i in range(o.length): - value = o[i] +'' - if '.' not in value: value += '.0' - args.push( value ) - - else: - raise RuntimeError('no method to pack structure: ' +sname) - - has_arrays = False - if stype: - if stype['arrays'].length > 0: - has_arrays = True - - for key in stype['integers']: - args.push( ob[key][0]+'' ) - - for key in stype['floats']: - value = ob[key] + '' - if '.' not in value: - value += '.0' - args.push( value ) - - for key in stype['arrays']: - #args.push( '{'+ob[key].toString()+ '}') ## this will not work - ## arrays need to be assigned to a local variable before passing - ## it to the struct constructor. - aname = '_'+key+name - self.array(ob[key], aname) - args.push( aname ) - - for key in stype['structs']: - aname = '_'+key+name - self.structure(ob[key], aname) - args.push( aname ) - - args = ','.join(args) - if has_arrays: - self.shader.push( sname + ' ' +name+ '=' +sname+ '(' +args+ ');' ) - else: - self.header.push( 'const ' + sname + ' ' +name+ '=' +sname+ '(' +args+ ');' ) - return stype - - def int16array(self, ob, name): - a = ['int ' + name + '[' + ob.length + ']'] - i = 0 - while i < ob.length: - a.push(';'+name+'['+i+']='+ob[i]) - i += 1 - - self.shader.push( ''.join(a) ) - - def array(self, ob, name): - if instanceof(ob[0], Array): - a = [] #'float ' + name + '[' + ob.length + ']'] - i = 0 - while i < ob.length: - subarr = ob[i] - subname = '%s_%s'%(name,i) - if a.length==0: - a.append('float ' + subname + '[' + subarr.length + ']') - else: - a.append(';float ' + subname + '[' + subarr.length + ']') - j = 0 - while j < subarr.length: - v = subarr[j] + '' - if '.' not in v: - v += '.0' - a.push(';'+subname+'['+j+']='+v) - j += 1 - - i += 1 - - self.shader.push( ''.join(a) ) - - elif instanceof(ob[0], Object) or ob[0].__class__ is dict: - i = 0 - while i < ob.length: - self.structure( ob[i], name+'_'+i) - i += 1 - - else: - a = ['float ' + name + '[' + ob.length + '];'] - i = 0 - while i < ob.length: - a.push(name+'['+i+']='+ob[i] + ';') - i += 1 - - self.shader.push( ''.join(a) ) - - def object(self, ob, name): - for p in self.object_packagers: - cls, func = p - if instanceof(ob, cls): - return func(ob) - - def unpack_array2d(self, arr, dims): - if typeof(dims)=='number': - return arr - - w,h = dims - row = [] - rows = [row] - for value in arr: - row.append(value) - if row.length >= w: - row = [] - rows.append(row) - rows.pop() - if rows.length != h: - print('ERROR: __unpack_array2d, invalid height.') - return rows - - def unpack_vec4(self, arr, dims): - if typeof(dims)=='number': - w = dims - h = 1 - else: - w,h = dims - rows = [] - i=0 - for y in range(h): - row = [] - rows.append( row ) - for x in range(w): - vec = [] - for j in range(4): - vec.append( arr[i]) - i += 1 - row.append( vec ) - - if rows.length != h: - print('ERROR: __unpack_vec4, invalid height.') - return rows - - def unpack_mat4(self, arr): - i = 0 - for mat in self.matrices: - for j in range(16): - mat[j] = arr[i] - i += 1 - return self.matrices - -with lowlevel: - - def __getattr__(ob, a ): - if ob.__getattr__: - return JS("ob.__getattr__(a)") - #else: - # raise AttributeError(a) - - def __test_if_true__( ob ): - if ob is True: - return True - elif ob is False: - return False - elif typeof(ob) == 'string': - return ob.length != 0 - elif not ob: - return False - elif instanceof(ob, Array): - return ob.length != 0 - elif typeof(ob) == 'function': - return True - elif ob.__class__ and ob.__class__ is dict: #isinstance(ob, dict): - return Object.keys( ob[...] ).length != 0 - elif instanceof(ob, Object): - return Object.keys(ob).length != 0 - else: - return True - - def __replace_method(ob, a, b): - ## this is required because string.replace in javascript only replaces the first occurrence - if typeof(ob) == 'string': - return ob.split(a).join(b) - else: - return ob.replace(a,b) - - def __split_method( ob, delim ): - ## special case because calling string.split() without args its not the same as python, - ## and we do not want to touch the default string.split implementation. - if typeof(ob) == 'string': - if delim is undefined: - return ob.split(' ') - else: - return ob.split( delim ) - else: - if delim is undefined: - return ob.split() - else: - return ob.split( delim ) - - -with javascript: - __dom_array_types__ = [] - if typeof(NodeList) == 'function': ## NodeList is only available in browsers - ## minimal dom array types common to allow browsers ## - __dom_array_types__ = [ NodeList, FileList, DOMStringList, HTMLCollection, SVGNumberList, SVGTransformList] - - ## extra dom array types ## - if typeof(DataTransferItemList) == 'function': ## missing in NodeWebkit - __dom_array_types__.push( DataTransferItemList ) - if typeof(HTMLAllCollection) == 'function': ## missing in Firefox - __dom_array_types__.push( HTMLAllCollection ) - if typeof(SVGElementInstanceList) == 'function':## missing in Firefox - __dom_array_types__.push( SVGElementInstanceList ) - if typeof(ClientRectList) == 'function': ## missing in Firefox-trunk - __dom_array_types__.push( ClientRectList ) - - def __is_some_array( ob ): - if __dom_array_types__.length > 0: - for t in __dom_array_types__: - if instanceof(ob, t): - return True - return False - - def __is_typed_array( ob ): - if instanceof( ob, Int8Array ) or instanceof( ob, Uint8Array ): - return True - elif instanceof( ob, Int16Array ) or instanceof( ob, Uint16Array ): - return True - elif instanceof( ob, Int32Array ) or instanceof( ob, Uint32Array ): - return True - elif instanceof( ob, Float32Array ) or instanceof( ob, Float64Array ): - return True - else: - return False - - - def __js_typed_array( t, a ): - if t == 'i': - arr = new( Int32Array(a.length) ) - - arr.set( a ) - return arr - - def __contains__( ob, a ): - t = typeof(ob) - if t == 'string': - if ob.indexOf(a) == -1: return False - else: return True - elif t == 'number': - raise TypeError - elif __is_typed_array(ob): - for x in ob: - if x == a: - return True - return False - elif ob.__contains__: - return ob.__contains__(a) - elif instanceof(ob, Object) and Object.hasOwnProperty.call(ob, a): - return True - else: - return False - - def __add_op(a, b): - ## 'number' is already checked before this gets called (ternary op) - ## but it can still appear here when called from an inlined lambda - t = typeof(a) - if t == 'string' or t == 'number': - return JS("a+b") - elif instanceof(a, Array): - c = [] - c.extend(a) - c.extend(b) - return c - elif a.__add__: - return a.__add__(b) - else: - raise TypeError('invalid objects for addition') - - def __mul_op(a, b): - t = typeof(a) - if t == 'number': - return JS("a * b") - elif t == 'string': - arr = [] - for i in range(b): - arr.append(a) - return ''.join(arr) - elif instanceof(a, Array): - c = [] - for i in range(b): - c.extend(a) - return c - elif a.__mul__: - return a.__mul__(b) - else: - raise TypeError('invalid objects for multiplication') - - - def __jsdict( items ): - d = JS("{}") - for item in items: - key = item[0] - if instanceof(key, Array): - key = JSON.stringify(key) - elif key.__uid__: - key = key.__uid__ - d[ key ] = item[1] - return d - - def __jsdict_get(ob, key, default_value): - if instanceof(ob, Object): - if instanceof(key, Array): - key = JSON.stringify(key) - if JS("key in ob"): return ob[key] - return default_value - else: ## PythonJS object instance ## - ## this works because instances from PythonJS are created using Object.create(null) ## - if default_value is not undefined: - return JS("ob.get(key, default_value)") - else: - return JS("ob.get(key)") - - def __jsdict_set(ob, key, value): - if instanceof(ob, Object): - if instanceof(key, Array): - key = JSON.stringify(key) - ob[ key ] = value - else: ## PythonJS object instance ## - ## this works because instances from PythonJS are created using Object.create(null) ## - JS("ob.set(key,value)") - - def __jsdict_keys(ob): - if instanceof(ob, Object): - ## in the case of tuple keys this would return stringified JSON instead of the original arrays, - ## TODO, should this loop over the keys and convert the json strings back to objects? - ## but then how would we know if a given string was json... special prefix character? - return JS("Object.keys( ob )") - else: ## PythonJS object instance ## - ## this works because instances from PythonJS are created using Object.create(null) ## - return JS("ob.keys()") - - def __jsdict_values(ob): - if instanceof(ob, Object): - arr = [] - for key in ob: - if ob.hasOwnProperty(key): - value = ob[key] - arr.push( value ) - return arr - else: ## PythonJS object instance ## - ## this works because instances from PythonJS are created using Object.create(null) ## - return JS("ob.values()") - - def __jsdict_items(ob): - ## `ob.items is None` is for: "self.__dict__.items()" because self.__dict__ is not actually a dict - if instanceof(ob, Object) or ob.items is undefined: ## in javascript-mode missing attributes do not raise AttributeError - arr = [] - for key in ob: - if Object.hasOwnProperty.call(ob, key): - value = ob[key] - arr.push( [key,value] ) - return arr - else: ## PythonJS object instance ## - return JS("ob.items()") - - def __jsdict_pop(ob, key, _default=None): - if instanceof(ob, Array): - if ob.length: - ## note: javascript array.pop only pops the end of an array - if key is undefined: - return inline("ob.pop()") - else: - return ob.splice( key, 1 )[0] - else: - raise IndexError(key) - - elif instanceof(ob, Object): - if JS("key in ob"): - v = ob[key] - JS("delete ob[key]") - return v - elif _default is undefined: - raise KeyError(key) - else: - return _default - else: ## PythonJS object instance ## - ## this works because instances from PythonJS are created using Object.create(null) ## - return JS("ob.pop(key, _default)") - - - def dir(ob): - if instanceof(ob, Object): - return JS("Object.keys( ob )") - else: - return __object_keys__(ob) - - def __object_keys__(ob): - ''' - notes: - . Object.keys(ob) will not work because we create PythonJS objects using `Object.create(null)` - . this is different from Object.keys because it traverses the prototype chain. - ''' - arr = [] - JS('for (var key in ob) { arr.push(key) }') - return arr - - def __bind_property_descriptors__(o, klass): - for name in klass.__properties__: - desc = {"enumerable":True} - prop = klass.__properties__[ name ] - if prop['get']: - desc['get'] = __generate_getter__(klass, o, name) - if prop['set']: - desc['set'] = __generate_setter__(klass, o, name) - - Object.defineProperty( o, name, desc ) - - for base in klass.__bases__: - __bind_property_descriptors__(o, base) - - - def __generate_getter__(klass, o, n): - return lambda : klass.__properties__[ n ]['get']([o],{}) - def __generate_setter__(klass, o, n): - return lambda v: klass.__properties__[ n ]['set']([o,v],{}) - - - def __sprintf(fmt, args): - ## note: '%sXXX%s'.split().length != args.length - ## because `%s` at the start or end will split to empty chunks ## - if instanceof(args, Array): - chunks = fmt.split('%s') - arr = [] - for i,txt in enumerate(chunks): - arr.append( txt ) - if i >= args.length: - break - item = args[i] - if typeof(item) == 'string': - arr.append( item ) - elif typeof(item) == 'number': - arr.append( ''+item ) - else: - arr.append( Object.prototype.toString.call(item) ) - return ''.join(arr) - else: - return fmt.replace('%s', args) - - def __create_class__(class_name, parents, attrs, props): - """Create a PythonScript class""" - #if attrs.__metaclass__: - # metaclass = attrs.__metaclass__ - # attrs.__metaclass__ = None - # return metaclass([class_name, parents, attrs]) - - klass = Object.create(null) - klass.__bases__ = parents - klass.__name__ = class_name - #klass.__dict__ = attrs - klass.__unbound_methods__ = Object.create(null) - klass.__all_method_names__ = [] - klass.__properties__ = props - klass.__attributes__ = attrs - for key in attrs: - if typeof( attrs[key] ) == 'function': - klass.__all_method_names__.push( key ) - f = attrs[key] - if hasattr(f, 'is_classmethod') and f.is_classmethod: - pass - elif hasattr(f, 'is_staticmethod') and f.is_staticmethod: - pass - else: - klass.__unbound_methods__[key] = attrs[key] - - if key == '__getattribute__': continue - klass[key] = attrs[key] - - ## this is needed for fast lookup of property names in __set__ ## - klass.__setters__ = [] - klass.__getters__ = [] - for name in klass.__properties__: - prop = klass.__properties__[name] - klass.__getters__.push( name ) - if prop['set']: - klass.__setters__.push( name ) - for base in klass.__bases__: - Array.prototype.push.apply( klass.__getters__, base.__getters__ ) - Array.prototype.push.apply( klass.__setters__, base.__setters__ ) - Array.prototype.push.apply( klass.__all_method_names__, base.__all_method_names__ ) - - - def __call__(): - """Create a PythonJS object""" - object = Object.create(null) ## this makes pythonjs object not compatible with things like: Object.hasOwnProperty - object.__class__ = klass - object.__dict__ = object - ## we need __dict__ so that __setattr__ can still set attributes using `old-style`: self.__dict__[n]=x - #Object.defineProperty( - # object, - # '__dict__', - # {enumerable:False, value:object, writeable:False, configurable:False} - #) - - - has_getattribute = False - has_getattr = False - for name in klass.__all_method_names__: - if name == '__getattribute__': - has_getattribute = True - elif name == '__getattr__': - has_getattr = True - else: - wrapper = __get__(object, name) - if not wrapper.is_wrapper: - print 'RUNTIME ERROR: failed to get wrapper for:',name - - ## to be safe the getters come after other methods are cached ## - if has_getattr: - __get__(object, '__getattr__') - - if has_getattribute: - __get__(object, '__getattribute__') - - __bind_property_descriptors__(object, klass) - - if object.__init__: - object.__init__.apply(this, arguments) - #object.__init__.call(this,args, kwargs) - - return object - - __call__.is_wrapper = True - klass.__call__ = __call__ - return klass - - -def type(ob_or_class_name, bases=None, class_dict=None): - ''' - type(object) -> the object's type - type(name, bases, dict) -> a new type ## broken? - TODO test - ''' - with javascript: - if bases is None and class_dict is None: - return ob_or_class_name.__class__ - else: - return create_class(ob_or_class_name, bases, class_dict) ## TODO rename create_class to _pyjs_create_class - -def hasattr(ob, attr): - ## TODO check parent classes for attr - with javascript: - return Object.hasOwnProperty.call(ob, attr) - -def getattr(ob, attr, property=False): - with javascript: - if property: - prop = _get_upstream_property( ob.__class__, attr ) - if prop and prop['get']: - return prop['get']( [ob], {} ) - else: - print "ERROR: getattr property error", prop - else: - return __get__(ob, attr) - -def setattr(ob, attr, value, property=False): - with javascript: - if property: - prop = _get_upstream_property( ob.__class__, attr ) - if prop and prop['set']: - prop['set']( [ob, value], {} ) - else: - print "ERROR: setattr property error", prop - else: - __set__(ob, attr, value) - -def issubclass(C, B): - if C is B: - return True - with javascript: bases = C.__bases__ ## js-array - i = 0 - while i < bases.length: - if issubclass( bases[i], B ): - return True - i += 1 - return False - -def isinstance( ob, klass): - with javascript: - if ob is undefined or ob is null: - return False - elif instanceof(ob, Array) and klass is list: - return True - #elif klass is dict and instanceof(ob, Object): ## this is safe because instances created with Object.create(null) are not instances-of Object - # if instanceof(ob, Array): - # return False - # elif ob.__class__: - # return False - # else: - # return True - elif not Object.hasOwnProperty.call(ob, '__class__'): - return False - - ob_class = ob.__class__ - if ob_class is undefined: - return False - else: - return issubclass( ob_class, klass ) - - - -def int(a): - with javascript: - a = Math.round(a) - if isNaN(a): - raise ValueError('not a number') - return a - -with javascript: - def int16(a): ## used by glsljit when packing structs. - arr = new(Int16Array(1)) - arr[0]=a - return arr - -def float(a): - with javascript: - if typeof(a)=='string': - if a.lower()=='nan': - return NaN - elif a.lower()=='inf': - return Infinity - - b = Number(a) - if isNaN(b): - ## invalid strings also convert to NaN, throw error ## - raise ValueError('can not convert to float: '+a) - return b - -def round(a, places=0): - with javascript: - b = '' + a - if b.indexOf('.') == -1: - return a - else: - ## this could return NaN with large numbers and large places, - ## TODO check for NaN and instead fallback to `a.toFixed(places)` - p = Math.pow(10, places) - return Math.round(a * p) / p - -def str(s): - return ''+s - -def _setup_str_prototype(): - ''' - Extend JavaScript String.prototype with methods that implement the Python str API. - The decorator @String.prototype.[name] assigns the function to the prototype, - and ensures that the special 'this' variable will work. - ''' - with javascript: - - @String.prototype.__contains__ - def func(a): - if this.indexOf(a) == -1: return False - else: return True - - @String.prototype.get - def func(index): - if index < 0: - return this[ this.length + index ] - else: - return this[ index ] - - @String.prototype.__iter__ - def func(self): - with python: - return Iterator(this, 0) - - @String.prototype.__getitem__ - def func(idx): - if idx < 0: - return this[ this.length + idx ] - else: - return this[ idx ] - - @String.prototype.__len__ - def func(): - return this.length - - @String.prototype.__getslice__ - def func(start, stop, step): - if start is undefined and stop is undefined and step == -1: - return this.split('').reverse().join('') - else: - if stop < 0: - stop = this.length + stop - return this.substring(start, stop) - - @String.prototype.splitlines - def func(): - return this.split('\n') - - @String.prototype.strip - def func(): - return this.trim() ## missing in IE8 - - @String.prototype.startswith - def func(a): - if this.substring(0, a.length) == a: - return True - else: - return False - - @String.prototype.endswith - def func(a): - if this.substring(this.length-a.length, this.length) == a: - return True - else: - return False - - @String.prototype.join - def func(a): - out = '' - if instanceof(a, Array): - arr = a - else: - arr = a[...] - i = 0 - for value in arr: - out += value - i += 1 - if i < arr.length: - out += this - return out - - @String.prototype.upper - def func(): - return this.toUpperCase() - - @String.prototype.lower - def func(): - return this.toLowerCase() - - @String.prototype.index - def func(a): - i = this.indexOf(a) - if i == -1: - raise ValueError(a + ' - not in string') - return i - - @String.prototype.find - def func(a): - return this.indexOf(a) - - @String.prototype.isdigit - def func(): - digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] - for char in this: - if char in digits: pass - else: return False - return True - - @String.prototype.isnumber - def func(): - digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'] - for char in this: - if char in digits: pass - else: return False - return True - - ## TODO - for now these are just dummy functions. - @String.prototype.decode - def func(encoding): - return this - @String.prototype.encode - def func(encoding): - return this - - @String.prototype.format - def func(fmt): - r = this - keys = Object.keys(fmt) - for key in keys: - r = r.split(key).join(fmt[key]) - r = r.split('{').join('').split('}').join('') - return r - - -_setup_str_prototype() - - -## note Arrays in javascript by default sort by string order, even if the elements are numbers. -with javascript: - def __sort_method(ob): - if instanceof(ob, Array): - def f(a,b): - if a < b: - return -1 - elif a > b: - return 1 - else: - return 0 - return JS("ob.sort( f )") - - else: - return JS("ob.sort()") - -def _setup_array_prototype(): - - with javascript: - @Array.prototype.jsify - def func(): - i = 0 - while i < this.length: - item = this[ i ] - if typeof(item) == 'object': - if item.jsify: - this[ i ] = item.jsify() - i += 1 - return this - - @Array.prototype.__contains__ - def func(a): - if this.indexOf(a) == -1: return False - else: return True - - @Array.prototype.__len__ - def func(): - return this.length - - @Array.prototype.get - def func(index): - return this[ index ] - - @Array.prototype.__getitem__ - def __getitem__(index): - if index < 0: index = this.length + index - return this[index] - - @Array.prototype.__setitem__ - def __setitem__(index, value): - if index < 0: index = this.length + index - this[ index ] = value - - @Array.prototype.__iter__ - def func(): - with python: - return Iterator(this, 0) - - @Array.prototype.__getslice__ - def func(start, stop, step): - arr = [] - - start = start | 0 - if stop is undefined: - stop = this.length - - if start < 0: - start = this.length + start - if stop < 0: - stop = this.length + stop - - #reverse = step < 0 ## in javascript `null<0` and `undefined<0` are false - #reverse = False - - if typeof(step)=='number': - #reverse = step < 0 - #if reverse: - if step < 0: - #step = Math.abs(step) - i = start - while i >= 0: - arr.push( this[i] ) - i += step - return arr - - else: - i = start - n = stop - while i < n: - arr.push( this[i] ) - i += step - return arr - - else: - i = start - n = stop - while i < n: - #arr[ i ] = this[i] ## slower in chrome - arr.push( this[i] ) - i += 1 ## this gets optimized to i++ - return arr - - #if reverse: - # arr.reverse() - - #if step == 1: - # arr = new(Array(this.length)) - # i = 0 - # while i < this.length: - # arr[ i ] = this[i] - # i += 1 ## this gets optimized to i++ - #else: - # arr = [] - # i = 0 - # while i < this.length: - # arr.push( this[i] ) - # i += step - - #if start is undefined and stop is undefined: - # if reverse: arr.reverse() - #elif reverse: - # arr = arr.slice(stop, start+1) - # arr.reverse() - #else: - # #if stop < 0: ## mozilla spec says negative indices are supported - # # stop = arr.length + stop - # arr = arr.slice(start, stop) - - #return arr - - @Array.prototype.__setslice__ - def func(start, stop, step, items): - if start is undefined: start = 0 - if stop is undefined: stop = this.length - arr = [start, stop-start] - for item in items: arr.push( item ) - this.splice.apply(this, arr ) - - @Array.prototype.append - def func(item): - this.push( item ) - return this - - @Array.prototype.extend - def extend(other): - for obj in other: - this.push(obj) - return this - - @Array.prototype.remove - def func(item): - index = this.indexOf( item ) - this.splice(index, 1) - - @Array.prototype.insert - def insert(index, obj): - if index < 0: index = this.length + index - this.splice(index, 0, obj) - - @Array.prototype.index - def index(obj): - return this.indexOf(obj) - - @Array.prototype.count - def count(obj): - a = 0 - for item in this: - if item is obj: ## note that `==` will not work here, `===` is required for objects - a += 1 - return a - - - ## set-like features ## - - @Array.prototype.bisect - def func(x, low, high): - if low is undefined: low = 0 - if high is undefined: high = this.length - while low < high: - a = low+high - mid = Math.floor(a/2) - if x < this[mid]: - high = mid - else: - low = mid + 1 - return low - - ## `-` operator - @Array.prototype.difference - def func(other): - f = lambda i: other.indexOf(i)==-1 - return this.filter( f ) - ## `&` operator - @Array.prototype.intersection - def func(other): - f = lambda i: other.indexOf(i)!=-1 - return this.filter( f ) - ## `<=` operator - @Array.prototype.issubset - def func(other): - for item in this: - if other.indexOf(item) == -1: - return False - return True - - ## non-standard utils ## - @Array.prototype.copy - def func(): - arr = [] - i = 0 - while i < this.length: - arr.push( this[i] ) - i += 1 - return arr - - -_setup_array_prototype() - - - -def _setup_nodelist_prototype(): - - with javascript: - - @NodeList.prototype.__contains__ - def func(a): - if this.indexOf(a) == -1: return False - else: return True - - @NodeList.prototype.__len__ - def func(): - return this.length - - @NodeList.prototype.get - def func(index): - return this[ index ] - - @NodeList.prototype.__getitem__ - def __getitem__(index): - if index < 0: index = this.length + index - return this[index] - - @NodeList.prototype.__setitem__ - def __setitem__(index, value): - if index < 0: index = this.length + index - this[ index ] = value - - @NodeList.prototype.__iter__ - def func(): - with python: - return Iterator(this, 0) - - @NodeList.prototype.index - def index(obj): - return this.indexOf(obj) - - -if __NODEJS__ == False and __WEBWORKER__ == False: - _setup_nodelist_prototype() - - -def bisect(a, x, low=None, high=None): - ## bisect function from bisect module of the stdlib - with javascript: - return a.bisect(x, low, high) - - -def range(num, stop, step): - """Emulates Python's range function""" - if stop is not undefined: - i = num - num = stop - else: - i = 0 - if step is undefined: - step = 1 - with javascript: - arr = [] - while i < num: - arr.push(i) - i += step - return arr - -def xrange(num, stop, step): - return range(num, stop, step) - -def sum( arr ): - a = 0 - for b in arr: - a += b - return a - -class StopIteration: ## DEPRECATED - pass - - -def len(ob): - with javascript: - if instanceof(ob, Array): - return ob.length - elif __is_typed_array(ob): - return ob.length - elif instanceof(ob, ArrayBuffer): - return ob.byteLength - elif ob.__len__: - return ob.__len__() - else: #elif instanceof(ob, Object): - return Object.keys(ob).length - - -def next(obj): - return obj.next() - - -def map(func, objs): - with javascript: arr = [] - for ob in objs: - v = func(ob) - with javascript: - arr.push( v ) - return arr - -def filter(func, objs): - with javascript: arr = [] - for ob in objs: - if func( ob ): - with javascript: - arr.push( ob ) - return arr - - -def min( lst ): - a = None - for value in lst: - if a is None: a = value - elif value < a: a = value - return a - -def max( lst ): - a = None - for value in lst: - if a is None: a = value - elif value > a: a = value - return a - -def abs( num ): - return JS('Math.abs(num)') - -def ord( char ): - return JS('char.charCodeAt(0)') - -def chr( num ): - return JS('String.fromCharCode(num)') - -with javascript: - class __ArrayIterator: - def __init__(self, arr, index): - self.arr = arr - self.index = index - self.length = arr.length - - def next(self): - index = self.index - self.index += 1 - arr = self.arr - return JS('arr[index]') - - -class Iterator: - ## rather than throwing an exception, it could be more optimized to have the iterator set a done flag, - ## and another downside is having the try/catch around this makes errors in in the loop go slient. - def __init__(self, obj, index): - self.obj = obj - self.index = index - self.length = len(obj) - self.obj_get = obj.get ## cache this for speed - - def next(self): - with javascript: - index = self.index - self.index += 1 - return self.obj_get( [index], {} ) - - -def tuple(a): - ## TODO tuple needs a solution for dict keys - with javascript: - if Object.keys(arguments).length == 0: #arguments.length == 0: - return [] - elif instanceof(a, Array): - return a.slice() - elif typeof(a) == 'string': - return a.split('') - else: - print a - print arguments - raise TypeError - - - -def list(a): - with javascript: - if Object.keys(arguments).length == 0: #arguments.length == 0: - return [] - elif instanceof(a, Array): - return a.slice() - elif typeof(a) == 'string': - return a.split('') - else: - print a - print arguments - raise TypeError - - -with javascript: - def __tuple_key__(arr): - r = [] - i = 0 - while i < arr.length: - item = arr[i] - t = typeof(item) - if t=='string': - r.append( "'"+item+"'") - elif instanceof(item, Array): - r.append( __tuple_key__(item) ) - elif t=='object': - if item.__uid__ is undefined: - raise KeyError(item) - r.append( item.__uid__ ) - else: - r.append( item ) - i += 1 - return r.join(',') - -class dict: - # http://stackoverflow.com/questions/10892322/javascript-hashtable-use-object-key - # using a function as a key is allowed, but would waste memory because it gets converted to a string - # http://stackoverflow.com/questions/10858632/are-functions-valid-keys-for-javascript-object-properties - def __init__(self, js_object=None, pointer=None): - with javascript: - self[...] = {} - - if pointer is not None: - self[...] = pointer - - elif js_object: - ob = js_object - if instanceof(ob, Array): - for o in ob: - with lowlevel: - if instanceof(o, Array): - k= o[0]; v= o[1] - else: - k= o['key']; v= o['value'] - - try: - self.__setitem__( k,v ) - except KeyError: - raise KeyError('error in dict init, bad key') - - elif isinstance(ob, dict): - for key in ob.keys(): - value = ob[ key ] - self.__setitem__( key, value ) - else: - print 'ERROR init dict from:', js_object - raise TypeError - - def jsify(self): - #keys = Object.keys( self[...] ) ## TODO check how this got broken, this should always be a low-level object? - keys = __object_keys__( self[...] ) - for key in keys: - value = self[...][key] - if typeof(value) == 'object': - if hasattr(value, 'jsify'): - self[...][key] = value.jsify() - elif typeof(value) == 'function': - raise RuntimeError("can not jsify function") - return self[...] - - def copy(self): - return dict( self ) - - def clear(self): - with javascript: - self[...] = {} - - def has_key(self, key): - __dict = self[...] - if JS("typeof(key) === 'object' || typeof(key) === 'function'"): - # Test undefined because it can be in the dict - key = key.__uid__ - - if JS("key in __dict"): - return True - else: - return False - - def update(self, other): - for key in other: - self.__setitem__( key, other[key] ) - - def items(self): - arr = [] - for key in self.keys(): - arr.append( [key, self[key]] ) - return arr - - def get(self, key, _default=None): - try: - return self[key] - except: - return _default - - def set(self, key, value): - self.__setitem__(key, value) - - def __len__(self): - __dict = self[...] - return JS('Object.keys(__dict).length') - - def __getitem__(self, key): - ''' - note: `"4"` and `4` are the same key in javascript, is there a sane way to workaround this, - that can remain compatible with external javascript? - ''' - with javascript: - __dict = self[...] - err = False - if instanceof(key, Array): - #key = JSON.stringify( key ) ## fails on objects with circular references ## - key = __tuple_key__(key) - elif JS("typeof(key) === 'object' || typeof(key) === 'function'"): - # Test undefined because it can be in the dict - if JS("key.__uid__ && key.__uid__ in __dict"): - return JS('__dict[key.__uid__]') - else: - err = True - - if __dict and JS("key in __dict"): - return JS('__dict[key]') - else: - err = True - - if err: - msg = "missing key: %s -\n" %key - raise KeyError(__dict.keys()) - - def __setitem__(self, key, value): - with javascript: - if key is undefined: - raise KeyError('undefined is invalid key type') - if key is null: - raise KeyError('null is invalid key type') - - __dict = self[...] - if instanceof(key, Array): - #key = JSON.stringify( key ) ## fails on objects with circular references ## - key = __tuple_key__(key) - if key is undefined: - raise KeyError('undefined is invalid key type (tuple)') - inline( '__dict[key] = value') - elif JS("typeof(key) === 'object' || typeof(key) === 'function'"): - if JS("key.__uid__ === undefined"): - # "" is needed so that integers can also be used as keys # - JS(u"key.__uid__ = '' + _PythonJS_UID++") - JS('__dict[key.__uid__] = value') - else: - JS('__dict[key] = value') - - def keys(self): - with lowlevel: - return Object.keys( self[...] ) - - def pop(self, key, d=None): - v = self.get(key, None) - if v is None: - return d - else: - js_object = self[...] - JS("delete js_object[key]") - return v - - def values(self): - with javascript: - keys = Object.keys( self[...] ) - out = [] - for key in keys: - out.push( self[...][key] ) - return out - - def __contains__(self, value): - try: - self[value] - return True - except: - return False - - def __iter__(self): - return Iterator(self.keys(), 0) - - - -def set(a): - ''' - This returns an array that is a minimal implementation of set. - Often sets are used simply to remove duplicate entries from a list, - and then it get converted back to a list, it is safe to use fastset for this. - - The array prototype is overloaded with basic set functions: - difference - intersection - issubset - - Note: sets in Python are not subscriptable, but can be iterated over. - - Python docs say that set are unordered, some programs may rely on this disorder - for randomness, for sets of integers we emulate the unorder only uppon initalization - of the set, by masking the value by bits-1. Python implements sets starting with an - array of length 8, and mask of 7, if set length grows to 6 (3/4th), then it allocates - a new array of length 32 and mask of 31. This is only emulated for arrays of - integers up to an array length of 1536. - - ''' - with javascript: - - hashtable = null - if a.length <= 1536: - hashtable = {} - keys = [] - if a.length < 6: ## hash array length 8 - mask = 7 - elif a.length < 22: ## 32 - mask = 31 - elif a.length < 86: ## 128 - mask = 127 - elif a.length < 342: ## 512 - mask = 511 - else: ## 2048 - mask = 2047 - - fallback = False - if hashtable: - for b in a: - if typeof(b)=='number' and b is (b|0): ## set if integer - key = b & mask - hashtable[ key ] = b - keys.push( key ) - else: - fallback = True - break - - else: - fallback = True - - s = [] - - if fallback: - for item in a: - if s.indexOf(item) == -1: - s.push( item ) - else: - keys.sort() - for key in keys: - s.push( hashtable[key] ) - - return s - - -def frozenset(a): - return set(a) - - - - -class array: - ## note that class-level dicts can only be used after the dict class has been defined above, - ## however, we can still not rely on using a dict here because dict creation relies on get_attribute, - ## and get_attribute relies on __NODEJS__ global variable to be set to False when inside NodeJS, - ## to be safe this is changed to use JSObjects - with javascript: - typecodes = { - 'c': 1, # char - 'b': 1, # signed char - 'B': 1, # unsigned char - 'u': 2, # unicode - 'h': 2, # signed short - 'H': 2, # unsigned short - 'i': 4, # signed int - 'I': 4, # unsigned int - 'l': 4, # signed long - 'L': 4, # unsigned long - 'f': 4, # float - 'd': 8, # double - 'float32':4, - 'float16':2, - 'float8' :1, - - 'int32' :4, - 'uint32' :4, - 'int16' :2, - 'uint16' :2, - 'int8' :1, - 'uint8' :1, - } - typecode_names = { - 'c': 'Int8', - 'b': 'Int8', - 'B': 'Uint8', - 'u': 'Uint16', - 'h': 'Int16', - 'H': 'Uint16', - 'i': 'Int32', - 'I': 'Uint32', - #'l': 'TODO', - #'L': 'TODO', - 'f': 'Float32', - 'd': 'Float64', - - 'float32': 'Float32', - 'float16': 'Int16', - 'float8' : 'Int8', - - 'int32' : 'Int32', - 'uint32' : 'Uint32', - 'int16' : 'Int16', - 'uint16' : 'Uint16', - 'int8' : 'Int8', - 'uint8' : 'Uint8', - } - - def __init__(self, typecode, initializer=None, little_endian=False): - self.typecode = typecode - self.itemsize = self.typecodes[ typecode ] - self.little_endian = little_endian - - if initializer: - self.length = len(initializer) - self.bytes = self.length * self.itemsize - - if self.typecode == 'float8': - self._scale = max( [abs(min(initializer)), max(initializer)] ) - self._norm_get = self._scale / 127 ## half 8bits-1 - self._norm_set = 1.0 / self._norm_get - elif self.typecode == 'float16': - self._scale = max( [abs(min(initializer)), max(initializer)] ) - self._norm_get = self._scale / 32767 ## half 16bits-1 - self._norm_set = 1.0 / self._norm_get - - else: - self.length = 0 - self.bytes = 0 - - size = self.bytes - buff = JS('new ArrayBuffer(size)') - self.dataview = JS('new DataView(buff)') - self.buffer = buff - self.fromlist( initializer ) - - def __len__(self): - return self.length - - def __contains__(self, value): - #lst = self.to_list() - #return value in lst ## this old style is deprecated - arr = self.to_array() - with javascript: - if arr.indexOf(value) == -1: return False - else: return True - - def __getitem__(self, index): - step = self.itemsize - offset = step * index - - dataview = self.dataview - func_name = 'get'+self.typecode_names[ self.typecode ] - func = JS('dataview[func_name].bind(dataview)') - - if offset < self.bytes: - value = JS('func(offset)') - if self.typecode == 'float8': - value = value * self._norm_get - elif self.typecode == 'float16': - value = value * self._norm_get - return value - else: - raise IndexError(index) - - def __setitem__(self, index, value): - step = self.itemsize - if index < 0: index = self.length + index -1 ## TODO fixme - offset = step * index - - dataview = self.dataview - func_name = 'set'+self.typecode_names[ self.typecode ] - func = JS('dataview[func_name].bind(dataview)') - - if offset < self.bytes: - if self.typecode == 'float8': - value = value * self._norm_set - elif self.typecode == 'float16': - value = value * self._norm_set - - JS('func(offset, value)') - else: - raise IndexError(index) - - def __iter__(self): - return Iterator(self, 0) - - def get(self, index): - return self[ index ] - - def fromlist(self, lst): - length = len(lst) - step = self.itemsize - typecode = self.typecode - size = length * step - dataview = self.dataview - func_name = 'set'+self.typecode_names[ typecode ] - func = JS('dataview[func_name].bind(dataview)') - if size <= self.bytes: - i = 0; offset = 0 - while i < length: - item = lst[i] - if typecode == 'float8': - item *= self._norm_set - elif typecode == 'float16': - item *= self._norm_set - - JS('func(offset,item)') - offset += step - i += 1 - else: - raise TypeError - - def resize(self, length): - buff = self.buffer - source = JS('new Uint8Array(buff)') - - new_size = length * self.itemsize - new_buff = JS('new ArrayBuffer(new_size)') - target = JS('new Uint8Array(new_buff)') - JS('target.set(source)') - - self.length = length - self.bytes = new_size - self.buffer = new_buff - self.dataview = JS('new DataView(new_buff)') - - def append(self, value): - length = self.length - self.resize( self.length + 1 ) - self[ length ] = value - - def extend(self, lst): ## TODO optimize - for value in lst: - self.append( value ) - - def to_array(self): - arr = JSArray() - i = 0 - while i < self.length: - item = self[i] - JS('arr.push( item )') - i += 1 - return arr - - def to_list(self): - return self.to_array() - - def to_ascii(self): - string = '' - arr = self.to_array() - i = 0; length = arr.length - while i < length: - JS('var num = arr[i]') - JS('var char = String.fromCharCode(num)') - string += char - i += 1 - return string - - -## file IO ## -class file: - ''' - TODO, support multiple read/writes. Currently this just reads all data, - and writes all data. - ''' - def __init__(self, path, flags): - self.path = path - - if flags == 'rb': - self.flags = 'r' - self.binary = True - elif flags == 'wb': - self.flags = 'w' - self.binary = True - else: - self.flags = flags - self.binary = False - - self.flags = flags - - def read(self, binary=False): - _fs = require('fs') - path = self.path - with javascript: - if binary or self.binary: - return _fs.readFileSync( path, encoding=None ) - else: - return _fs.readFileSync( path, {'encoding':'utf8'} ) - - def write(self, data, binary=False): - _fs = require('fs') - path = self.path - with javascript: - if binary or self.binary: - binary = binary or self.binary - if binary == 'base64': ## TODO: fixme, something bad in this if test - #print('write base64 data') - buff = new Buffer(data, 'base64') - _fs.writeFileSync( path, buff, {'encoding':None}) - - else: - #print('write binary data') - #print(binary) - _fs.writeFileSync( path, data, {'encoding':None}) - else: - #print('write utf8 data') - _fs.writeFileSync( path, data, {'encoding':'utf8'} ) - - def close(self): - pass - -def __open__( path, mode=None): ## this can not be named `open` because it replaces `window.open` - return file( path, mode ) - - -with javascript: - - ## mini json library ## - json = { - 'loads': lambda s: JSON.parse(s), - 'dumps': lambda o: JSON.stringify(o) - } - - - def __get_other_workers_with_shared_arg( worker, ob ): - a = [] - for b in threading.workers: - other = b['worker'] - args = b['args'] - if other is not worker: - for arg in args: - if arg is ob: - if other not in a: - a.append( other ) - return a - - threading = {'workers': [], '_blocking_callback':None } - - - def __start_new_thread(f, args): - worker = new(Worker(f)) - worker.__uid__ = len( threading.workers ) - threading.workers.append( {'worker':worker,'args':args} ) - - def func(event): - #print('got signal from thread') - #print(event.data) - if event.data.type == 'terminate': - worker.terminate() - elif event.data.type == 'call': - res = __module__[ event.data.function ].apply(null, event.data.args) - if res is not None and res is not undefined: - worker.postMessage({'type':'return_to_blocking_callback', 'result':res}) - - - elif event.data.type == 'append': - #print('got append event') - a = args[ event.data.argindex ] - a.push( event.data.value ) - for other in __get_other_workers_with_shared_arg(worker, a): - other.postMessage( {'type':'append', 'argindex':event.data.argindex, 'value':event.data.value} ) - - elif event.data.type == '__setitem__': - #print('got __setitem__ event') - a = args[ event.data.argindex ] - value = event.data.value - if a.__setitem__: - a.__setitem__(event.data.index, value) - else: - a[event.data.index] = value - - for other in __get_other_workers_with_shared_arg(worker, a): - #print('relay __setitem__') - other.postMessage( {'type':'__setitem__', 'argindex':event.data.argindex, 'key':event.data.index, 'value':event.data.value} ) - - - else: - raise RuntimeError('unknown event') - - worker.onmessage = func - jsargs = [] - for i,arg in enumerate(args): - if arg.jsify: - jsargs.append( arg.jsify() ) - else: - jsargs.append( arg ) - - - if instanceof(arg, Array): - __gen_worker_append(worker, arg, i) - - worker.postMessage( {'type':'execute', 'args':jsargs} ) - return worker - - - def __gen_worker_append(worker, ob, index): - def append(item): - #print('posting to thread - append') - worker.postMessage( {'type':'append', 'argindex':index, 'value':item} ) - ob.push( item ) - Object.defineProperty(ob, "append", {'enumerable':False, 'value':append, 'writeable':True, 'configurable':True}) - - ######## webworker client ######### - - def __webworker_wrap(ob, argindex): - if instanceof(ob, Array): - #ob.__argindex__ = argindex - - def func(index, item): - #print('posting to parent setitem') - postMessage({'type':'__setitem__', 'index':index, 'value':item, 'argindex':argindex}) - Array.prototype.__setitem__.call(ob, index, item) - - ## this can raise RangeError recursive overflow if the worker entry point is a recursive function - Object.defineProperty(ob, "__setitem__", {"enumerable":False, "value":func, "writeable":True, "configurable":True}) - #ob.__setitem__ =func - - def func(item): - #print('posting to parent append') - postMessage({'type':'append', 'value':item, 'argindex':argindex}) - Array.prototype.push.call(ob, item) - Object.defineProperty(ob, "append", {"enumerable":False, "value":func, "writeable":True, "configurable":True}) - #ob.append = func - elif typeof(ob) == 'object': - def func(key, item): - #print('posting to parent setitem object') - postMessage({'type':'__setitem__', 'index':key, 'value':item, 'argindex':argindex}) - ob[ key ] = item - #ob.__setitem__ = func - Object.defineProperty(ob, "__setitem__", {"enumerable":False, "value":func, "writeable":True, "configurable":True}) - - return ob - - ######### simple RPC API ######### - def __rpc__( url, func, args): - req = new( XMLHttpRequest() ) - req.open('POST', url, False) ## false is sync - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8") - req.send( JSON.stringify({'call':func, 'args':args}) ) - return JSON.parse( req.responseText ) - - def __rpc_iter__( url, attr): - req = new( XMLHttpRequest() ) - req.open('POST', url, False) ## false is sync - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8") - req.send( JSON.stringify({'iter':attr}) ) - return JSON.parse( req.responseText ) - - def __rpc_set__( url, attr, value): - req = new( XMLHttpRequest() ) - req.open('POST', url, False) ## false is sync - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8") - req.send( JSON.stringify({'set':attr, 'value':value}) ) - - def __rpc_get__( url, attr): - req = new( XMLHttpRequest() ) - req.open('POST', url, False) ## false is sync - req.setRequestHeader("Content-Type", "application/json;charset=UTF-8") - req.send( JSON.stringify({'get':attr}) ) - return JSON.parse( req.responseText ) - diff --git a/pythonjs/runtime/dart_builtins.py b/pythonjs/runtime/dart_builtins.py deleted file mode 100644 index 02c44a1..0000000 --- a/pythonjs/runtime/dart_builtins.py +++ /dev/null @@ -1,380 +0,0 @@ -# PythonJS builtins for Dart -# by Brett Hartshorn - copyright 2013 -# License: "New BSD" - -dart_import('dart:collection') -dart_import('dart:typed_data') -dart_import('dart:math', 'Math') - -__random_gen__ = new(Math.Random()) -def __random__(): return __random_gen__.nextDouble() - - -class float32vec: - def __init__(self, items): - self[...] = new( List() ) - self.length = items.length - - i = 0; s = 0 - while i < items.length: - x = items[i] - y = items[i+1] - z = items[i+2] - w = items[i+3] - vec = new( Float32x4(x,y,z,w) ) - self[...].add( vec ) - i += 4 - - - def __getitem__(self, index): - if index < 0: index = self.length + index - - float32x4 vec = self[...][ index // 4 ] - lane = index % 4 - if lane == 0: return vec.x - elif lane == 1: return vec.y - elif lane == 2: return vec.z - elif lane == 3: return vec.w - - def __setitem__(self, index, value): - if index < 0: index = self.length + index - - vec = self[...][ index // 4 ] - lane = index % 4 - if lane == 0: vec = vec.withX(value) - elif lane == 1: vec = vec.withY(value) - elif lane == 2: vec = vec.withZ(value) - elif lane == 3: vec = vec.withW(value) - - self[...][ index // 4 ] = vec - - def __add__(self, other): - arr = new( List() ) - for i, vec1 in enumerate( self[...] ): - vec2 = other[...][ i ] - arr.add( vec1+vec2 ) - - v = inline("new float32vec([])") - v.length = self.length - v[...] = arr - return v - - def __mul__(self, other): - arr = new( List() ) - for i, vec1 in enumerate( self[...] ): - vec2 = other[...][ i ] - arr.add( vec1*vec2 ) - - v = inline("new float32vec([])") - v.length = self.length - v[...] = arr - return v - - -#@dart.extends -#class list( ListBase ): -class list: - ''' - a List in Dart is growable if no size is given in the constructor, - otherwise if size is given it becomes a fixed length list. - - Notes: - https://code.google.com/p/dart/issues/detail?id=11201 - http://stackoverflow.com/questions/16247045/how-do-i-extend-a-list-in-dart - ''' - - ## dart 1.3 ## - #with inline: """ - #Iterator get iterator => new ListIterator(this); - #Iterable map(f(dynamic element)) => new MappedListIterable(this, f); - #""" - - - def __init__(self, items): - self[...] = new( List() ) - if instanceof(items, String): - self[...].addAll( items.split("") ) - elif instanceof(items, list): - self[...].addAll( items[...] ) - elif items is not None: - self[...].addAll( items ) - - @property - def length(self): - return self[...].length - @length.setter - def length(self,n): - self[...].length = n - - def __getitem__(self, index): - if index < 0: - index = self.length + index - return self[...][index] - - def __setitem__(self, index, value): - if index < 0: - index = self.length + index - self[...][index] = value - - def __getslice__(self, start, stop, step): - - if start == null and stop == null and step == null: - return list( self[...] ) - else: - if step == null: step = 1 - reverse = False - if step < 0: - step = step.abs() - reverse = True - - a = new( List() ) - i = 0 - while i < self[...].length: - a.add( self[...][i] ) - i += step - - if start == null: start = 0 - if stop == null: stop = a.length - if start < 0: - start = a.length + start - if stop < 0: - stop = a.length + stop - - if reverse: - b = new( List() ) - b.addAll( a.reversed ) - return list( b.sublist(a.length-(start+1), stop) ) - else: - return list( a.sublist(start, stop) ) - - - def __setslice__(self, start, stop, step, items): - if start == null: start = 0 - if stop == null: stop = self[...].length - stop -= start - while stop != 0: - self[...].removeAt(start) - stop -= 1 - if instanceof(items, String): - items = items.split('') - elif instanceof(items, list): - items = items[...] - self[...].insertAll(start, items) - - - def __add__(self, other): - self[...].addAll( other[...] ) - return self - - def append(self, item): - self[...].add( item ) - - def index(self, obj): - return self[...].indexOf(obj) - - def pop(self, n): - return self[...].removeAt( n ) - - def insert(self, i, o): - if i < 0: i = self.length+i - self[...].insert(i,o) - - -def tuple(a): - return list(a) - -#@dart.extends -class dict: #( HashMap ): - ''' - HashMap can not be extended anymore: - https://groups.google.com/a/dartlang.org/forum/#!msg/announce/Sj3guf3es24/YsPCdT_vb2gJ - ''' - def __init__(self, map): - #self[...] = new( Map() ) - #self[...].addAll( items ) - self[...] = map - - @property - def length(self): - return self[...].length - - def __getitem__(self, key): - return self[...][key] - - def __setitem__(self, key, value): - self[...][key] = value - - def contains(self, key): - return self[...].containsKey(key) - - def keys(self): - return self[...].keys.toList() - - def values(self): - return self[...].values - - def items(self): - r = [] - for key in self.keys(): - value = self[ key ] - r.append( [key,value] ) - return r - -def sum( arr ): - a = 0 - for b in arr: - a += b - return a - -def range(n): - r = [] - i = 0 - while i < n: - r.append( i ) - i += 1 - return r - -def __range2(start, stop): - r = [] - i = start - while i < stop: - r.append( i ) - i += 1 - return r - -def len(a): - return a.length - -def str(a): - if instanceof(a, String): - return a - elif instanceof(a, double): - return a.toStringAsFixed(6) ## TODO how to find best size for each double? - else: - return a.toString() - -def isinstance(a, klass): - ## this will not work in dart, because 'is' test fails when klass is a variable - #return JS("a is klass") - return a.runtimeType.toString() == klass.toString() - -def __getslice__(a, start, stop, step): - if instanceof(a, String): - if step != null: - b = __reverse__(a) - elif start != null and stop != null: - if start < 0: start = a.length + start - if stop < 0: stop = a.length + stop - b = a.substring( start, stop ) - elif start != null and stop == null: - if start < 0: start = a.length + start - b = a.substring( start ) - elif stop != null: - if stop < 0: stop = a.length + stop - b = a.substring( 0, stop ) - else: - b = a.substring(0) - - return b - else: - #return list.____getslice__(a, start, stop, step) - return a.__getslice__(start, stop, step) - -def __reverse__(a): - if instanceof(a, String): - buff = new( StringBuffer() ) - n = a.length - 1 - while n >= 0: - buff.write( a[n] ) - n -= 1 - return buff.toString() - -def __create_list( size ): - a = list() - for i in range(size): - a.append( None ) - return a - - - -with lowlevel: - def __test_if_true__( ob ): - if ob == True: return True - elif ob == False: return False - elif instanceof(ob, String): - return ob.length != 0 - elif instanceof(ob, Number): - return ob != 0 - elif instanceof(ob, list): - return ob.length != 0 - elif instanceof(ob, dict): - return ob.length != 0 - elif ob != null: - return True - - def __sprintf(fmt, args): - if instanceof(args, list): - i = 0 - arr = [] - for part in fmt.split('%s'): - arr.append(part) - if i >= args.length: - break - else: - arr.append( str(args[i]) ) - - i += 1 - return arr[...].join('') - - else: - return fmt.replaceFirst('%s', str(args)) - - def __replace_method(o,a,b): - if instanceof(a, String): - return o.replaceAll(a,b) - else: - return o.replace(a,b) - - def __split_method(s): - if instanceof(s, String): - return s.split(' ') - else: - return s.split() - - def __upper_method(s): - if instanceof(s, String): - return s.toUpperCase() - else: - return s.upper() - - def __lower_method(s): - if instanceof(s, String): - return s.toLowerCase() - else: - return s.lower() - - def __lt__(a,b): - if instanceof(a, String): - return JS("a.codeUnitAt(0) < b.codeUnitAt(0)") - else: - return JS("a < b") - - def __gt__(a,b): - if instanceof(a, String): - return JS("a.codeUnitAt(0) > b.codeUnitAt(0)") - else: - return JS("a > b") - - - def __lte__(a,b): - if instanceof(a, String): - return JS("a.codeUnitAt(0) <= b.codeUnitAt(0)") - else: - return JS("a <= b") - - def __gte__(a,b): - if instanceof(a, String): - return JS("a.codeUnitAt(0) >= b.codeUnitAt(0)") - else: - return JS("a >= b") - diff --git a/pythonjs/runtime/go_builtins.py b/pythonjs/runtime/go_builtins.py deleted file mode 100644 index 0cb2019..0000000 --- a/pythonjs/runtime/go_builtins.py +++ /dev/null @@ -1,57 +0,0 @@ -# PythonJS Go builtins -# by Brett Hartshorn - copyright 2014 -# License: "New BSD" - -import strconv - -inline(""" - -func str(v interface{}) string { - switch v.(type) { - case nil: - return "None" - case int: - i,_ := v.(int) - return strconv.Itoa(i) - case float64: - return "TODO float" - case bool: - b,_ := v.(bool) - if b { return "True" - } else { return "False" } - case string: - s,_ := v.(string) - return s - default: - return "TODO unknown type" - - } -} - -func range1( x int ) []int { - arr := make([]int, x) - for i := 0; i < x; i++ { - arr[i]=i - } - return arr -} - -func range2( start int, stop int ) []int { - arr := make([]int, stop-start) - for i := start; i < stop; i++ { - arr[i]=i - } - return arr -} - -func range3( start int, stop int, step int ) []int { - arr := make([]int, stop-start) - for i := start; i < stop; i+=step { - arr[i]=i - } - return arr -} - -""") - - diff --git a/pythonjs/runtime/lua_builtins.py b/pythonjs/runtime/lua_builtins.py deleted file mode 100644 index 005ced5..0000000 --- a/pythonjs/runtime/lua_builtins.py +++ /dev/null @@ -1,458 +0,0 @@ -JS(""" - -local __bitops__ = require('bit') -__NULL_OBJECT__ = {} - -__concat_tables_array = function(t1, t2) - for i=1,#t2 do - t1[ #t1+1 ] = t2[i] - end - return t1 -end - -__concat_tables = function(t1, t2) - for k,v in pairs(t2) do - t1[k] = v - end - return t1 -end - -function table.shallow_copy(t) - local t2 = {} - for k,v in pairs(t) do - t2[k] = v - end - return t2 -end - -__test_if_true__ = function( x ) - if x == true then return true - elseif x == false then return false - elseif x == nil then return false - elseif x == '' then return false - - elseif type(x) == 'number' then - if x == 0 then return false - else return true - end - - elseif x.__class__ and x.__class__.__name__ == 'list' then - if x.length > 0 then return true - else return false end - elseif x.__class__ and x.__class__.__name__ == 'dict' then - if x.keys().length > 0 then return true - else return false end - else - return true - end -end - -__set__ = function(ob, name, value) - ob[ name ] = value -end - -__get__ = function(ob, name) - if name == '__call__' then - if type(ob)=='function' then - return ob - else - return ob.__call__ - end - elseif type(ob)=='string' then - return __get__helper_string(ob,name) - elseif ob.__getters__ and ob.__getters__[name] then - return ob.__getters__[name]( ob ) --unbound method-- - elseif ob[name]==nil and ob.__getattr__ then - return ob.__getattr__( {name} ) - else - return ob[ name ] - end -end - -__sprintf = function(s, args) - if type(args)=='table' then - return string.format(s, unpack(args)) - else - return string.format(s, args) - end -end - -function string:to_array() - local i = 1 - local t = {} - for c in self:gmatch('.') do - t[ i ] = c - i = i + 1 - end - return t -end - -function string:split(sSeparator, nMax, bRegexp) - assert(sSeparator ~= '') - assert(nMax == nil or nMax >= 1) - if sSeparator == nil then - sSeparator = ' ' - end - - local aRecord = {} - - if self:len() > 0 then - local bPlain = not bRegexp - nMax = nMax or -1 - - local nField=1 nStart=1 - local nFirst,nLast = self:find(sSeparator, nStart, bPlain) - while nFirst and nMax ~= 0 do - aRecord[nField] = self:sub(nStart, nFirst-1) - nField = nField+1 - nStart = nLast+1 - nFirst,nLast = self:find(sSeparator, nStart, bPlain) - nMax = nMax-1 - end - aRecord[nField] = self:sub(nStart) - end - return aRecord -end - -__bind_methods__ = function(object, class) - for k,v in pairs( class.__attributes__ ) do - if object[k] == nil then - if type(v)=='function' then - object[ k ] = function(_args, _kwargs) - local o = {object} - if _args then - return v(__concat_tables_array(o, _args), _kwargs or {}) - else - return v(o, _kwargs or {}) - end - end - else - -- TODO class attribute should have dynamic look up. - object[ k ] = v - end - end - end - for k,v in pairs( class.__bases__ ) do - __bind_methods__( object, v ) - end -end - -__bind_properties__ = function(object, class) - for k,v in pairs( class.__properties__ ) do - assert( type(v.get)=='function' ) - if object.__getters__[k] == nil then - object.__getters__[k] = v.get --unbound method-- - end - end - for k,v in pairs( class.__bases__ ) do - __bind_properties__( object, v ) - end -end - - -__create_class__ = function(class_name, parents, attrs, props) - local class = { - __bases__ = parents, - __name__ = class_name, - __properties__ = props, - __attributes__ = attrs - } - function class.__call__( args, kwargs ) - local object = { - __class__ = class, - __dict__ = 'TODO', - __getters__ = {} - } - __bind_methods__( object, class ) - __bind_properties__( object, class ) - - for k,v in pairs( class.__attributes__ ) do - class[ k ] = v - end - - if object.__init__ then - object.__init__( args, kwargs ) - end - return object - end - return class -end - - -__add_op = function(a,b) - if type(a) == 'string' then - return a .. b - elseif type(a) == 'table' and a.__class__ then - return a.__add__({b}, {}) - else - return a + b - end -end - -__add__ = function(a,b) - if type(a) == 'string' then - return a .. b - else - return a + b - end -end - -""") - -def str(ob): - with lowlevel: - return tostring(ob) - -def int(ob): - with lowlevel: - return tonumber(ob) - -def float(ob): - with lowlevel: - return tonumber(ob) - -def len(ob): - with lowlevel: - if type(ob) == 'string': - return string.len(ob) - else: - return ob.length - -def chr(a): - with lowlevel: - return string.char(a) - -def ord(a): - with lowlevel: - return string.byte(a) - -def getattr(ob, name): - with lowlevel: - return ob[name] ## could be None (nil), no good way to raise AttributeError - -def isinstance( ob, klass ): - if ob == None: - return False - elif ob.__class__: - if ob.__class__.__name__ == klass.__name__: - return True - else: - return False - else: - return False - -def sum( arr ): - a = 0 - for b in arr: - a += b - return a - -class __iterator_string: - def __init__(self, obj, index): - with lowlevel: - self.obj = obj - self.index = index - self.length = string.len(obj) - - def next(self): - with lowlevel: - index = self.index - self.index += 1 - return string.sub( self.obj, index+1, index+1 ) - -class __iterator_list: - def __init__(self, obj, index): - self.obj = obj - self.index = index - self.length = len(obj) - - def next(self): - with lowlevel: - index = self.index - self.index += 1 - return self.obj[...][index+1] - - -class list: - ''' - Array length in Lua must be manually tracked, because a normal for loop will not - properly loop over a sparse Array with nil holes. - ''' - def __init__(self, items, pointer=None, length=0): - with lowlevel: - self.length = length - if type(items)=='string': - self[...] = string.to_array( items ) - self.length = string.len(items) - elif type(items)=='table' and items.__class__ and items.__class__.__name__=='list': - print('HIT TABLE!!!') - elif pointer: - self[...] = pointer - else: - self[...] = {} - - def __contains__(self, value): - with lowlevel: - for v in self[...]: - if v == value: - return True - return False - - def __getitem__(self, index): - with lowlevel: - if index < 0: - index = self.length + index - return self[...][index+1] - - def __setitem__(self, index, value): - with lowlevel: - if index < 0: - index = self.length + index - self[...][index+1] = value - - def __getslice__(self, start, stop, step): - if stop == None and step == None: - with lowlevel: - copy = table.shallow_copy( self[...] ) - return list( pointer=copy, length=self.length ) - elif stop < 0: ## TODO - pass - - def __iter__(self): - return __iterator_list(self, 0) - - def __add__(self, other): - with lowlevel: - ptr = table.shallow_copy( self[...] ) - copy = list( pointer=ptr, length=self.length ) - for item in other: - copy.append( item ) - return copy - - def append(self, item): - with lowlevel: - self.length += 1 - self[...][ self.length ] = item - - def index(self, obj): - with lowlevel: - i = 0 - while i < self.length: - if self[...][i+1] == obj: - return i - i += 1 - -tuple = list -## this must come after list because list.__call__ is used directly, -## and the lua compiler can not use forward references. -JS(''' - -__create_list = function(size) - return __get__(list, "__call__")({}, {pointer={},length=size}) -end - -__get__helper_string = function(s, name) - local wrapper - if name == '__getitem__' then - wrapper = function(args, kwargs) - return string.sub(s, args[1]+1, args[1]+1) - end - - elseif name == '__contains__' then - wrapper = function(args, kwargs) - if s:find( args[1] ) then return true - else return false end - end - - elseif name == '__getslice__' then - wrapper = function(args, kwargs) - if args[1]==nil and args[2]==nil and args[3]==-1 then - return s:reverse() - end - end - - elseif name == '__iter__' then - wrapper = function(args, kwargs) - return __iterator_string.__call__( {s, 0} ) - end - - elseif name == 'upper' then - wrapper = function(args, kwargs) - return string.upper(s) - end - elseif name == 'lower' then - wrapper = function(args, kwargs) - return string.lower(s) - end - elseif name == 'split' then - wrapper = function(args, kwargs) - local a - if args then - a = s:split( args[1] ) - else - a = s:split() - end - return list.__call__( {}, {pointer=a, length=#a} ) - end - else - print('ERROR: NotImplemented') - end - - return wrapper -end -''') - -def range(num, stop): - """Emulates Python's range function""" - if stop is not None: - i = num - num = stop - else: - i = 0 - arr = [] - while i < num: - arr.append(i) - i += 1 - return arr - -class dict: - def __init__(self, object, pointer=None): - with lowlevel: - self[...] = {} - if pointer: - self[...] = pointer - elif object: - for d in object: ## array - self[...][ d.key ] = d.value - - - def __getitem__(self, key): - with lowlevel: - return self[...][ key ] - - def __setitem__(self, key, value): - with lowlevel: - self[...][ key ] = value - - def keys(self): - with lowlevel: - ptr = [] - i = 1 - for k,v in pairs(self[...]): - ptr[ i ] = k - i = i + 1 - return list( pointer=ptr, length=i-1 ) - - def __iter__(self): - return self.keys().__iter__() - - def items(self): - with lowlevel: - ptr = [] - i = 1 - for k,v in pairs(self[...]): - p = [k,v] - item = list.__call__([], {pointer:p, length:2}) - ptr[ i ] = item - i = i + 1 - return list( pointer=ptr, length=i-1 ) diff --git a/pythonjs/runtime/pythonpythonjs.py b/pythonjs/runtime/pythonpythonjs.py deleted file mode 100644 index 70bbf09..0000000 --- a/pythonjs/runtime/pythonpythonjs.py +++ /dev/null @@ -1,451 +0,0 @@ -# PythonJS Low Level Runtime -# by Amirouche Boubekki and Brett Hartshorn - copyright 2013 -# License: "New BSD" - -__NULL_OBJECT__ = Object.create( null ) -__WEBWORKER__ = False -__NODEJS__ = False -__BROWSER__ = False - -## note browser and nodejs can both be true in the case of NodeWebkit -if typeof(process) != 'undefined': ## TODO check if this is true inside a nodejs webworker - __NODEJS__ = True -if typeof(window) != 'undefined': - __BROWSER__ = True -if typeof(importScripts) == 'function': - __WEBWORKER__ = True - - -def __create_array__(): ## DEPRECATED - """Used to fix a bug/feature of Javascript where new Array(number) - created a array with number of undefined elements which is not - what we want""" - var(i, array) - array = [] - i = 0 - while i < arguments.length: - array.push(arguments[i]) - i += 1 - return array - - -def __get__(object, attribute, error_message): - """Retrieve an attribute, method, property, or wrapper function. - - method are actually functions which are converted to methods by - prepending their arguments with the current object. Properties are - not functions! - - DOM support: - http://stackoverflow.com/questions/14202699/document-createelement-not-working - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof - - Direct JavaScript Calls: - if an external javascript function is found, and it was not a wrapper that was generated here, - check the function for a 'cached_wrapper' attribute, if none is found then generate a new - wrapper, cache it on the function, and return the wrapper. - """ - if object is None: - if error_message: - raise AttributeError('(`null` has no attributes) ' +error_message) - else: - raise AttributeError('null object (None) has no attribute: '+attribute) - elif object is undefined: - if error_message: - raise AttributeError('(`undefined` has no attributes) ' +error_message) - else: - raise AttributeError('undefined has no attribute: ' +attribute) - - #if attribute == '__getitem__' and instanceof(object, Array): ## NOT REQUIRED - # ## allows list comp on Array called from Python-mode ## - # def wrapper(args,kwargs): return object[ args[0] ] - # wrapper.is_wrapper = True - # return wrapper - if attribute == '__call__': - if object.pythonscript_function or object.is_wrapper: ## common case - TODO replaced by __pyfunc__ - return object - elif object.cached_wrapper: ## rare case - return object.cached_wrapper - - elif JS("{}.toString.call(object) === '[object Function]'"): - ## TODO double check that this is not a pythonjs function - def wrapper(args,kwargs): ## dyanmically wrap external javascript function - var(i, arg, keys) - if args != None: - i = 0 - while i < args.length: - arg = args[i] - #if instanceof(arg, Object): ## fails on objects created by Object.create(null) - if arg and typeof(arg) == 'object': - if arg.jsify: - args[i] = arg.jsify() - i += 1 - - if kwargs != None: - keys = __object_keys__(kwargs) - if keys.length != 0: - args.push( kwargs ) - i = 0 - while i < keys.length: - arg = kwargs[ keys[i] ] - if arg and typeof(arg) == 'object': - if arg.jsify: - kwargs[ keys[i] ] = arg.jsify() - i += 1 - - return object.apply(None, args) - - wrapper.is_wrapper = True - object.cached_wrapper = wrapper - return wrapper - - - if Object.hasOwnProperty.call(object, '__getattribute__'): - return object.__getattribute__( attribute ) - - - var(attr) - attr = object[attribute] ## this could be a javascript object with cached method - - - if __NODEJS__ is False and __WEBWORKER__ is False: - if JS("object instanceof HTMLDocument"): - #print 'DYNAMIC wrapping HTMLDocument' - if JS("typeof(attr) === 'function'"): - def wrapper(args,kwargs): return attr.apply(object, args) - wrapper.is_wrapper = True - return wrapper - else: - return attr - elif JS("object instanceof HTMLElement"): - #print 'DYNAMIC wrapping HTMLElement' - if JS("typeof(attr) === 'function'"): - def wrapper(args,kwargs): return attr.apply(object, args) - wrapper.is_wrapper = True - return wrapper - else: - return attr - - ## attr can be null and will return, undefined will raise AttributeError ## - if attr is not undefined: - if typeof(attr) == 'function': - if JS("attr.pythonscript_function === undefined && attr.is_wrapper === undefined"): ## TODO pythonscript_function will be replaced with __pyfunc__ - - ## if there is a prototype with methods, then we can be sure that the user indends to call `new` on it, - ## however rare, it is still possible that it is a constructor without a prototype of any length, - ## in that case the user must call `new` and using the full scope, because things inside a `new` - ## call are not wrapped, ie: `new(A.B.C.xxx(args))` - if instanceof(attr.prototype, Object) and Object.keys(attr.prototype).length > 0: - return attr - - def wrapper(args,kwargs): - #if instanceof(args, Array): - var(i, arg, keys) - if args != None: - i = 0 - while i < args.length: - arg = args[i] - if arg and typeof(arg) == 'object': - if arg.jsify: - args[i] = arg.jsify() - i += 1 - - if kwargs != None: - keys = __object_keys__(kwargs) - if keys.length != 0: - args.push( kwargs ) - i = 0 - while i < keys.length: - arg = kwargs[ keys[i] ] - if arg and typeof(arg) == 'object': - if arg.jsify: - kwargs[ keys[i] ] = arg.jsify() - i += 1 - - return attr.apply(object, args) - #else: ## TODO are there cases where this is needed? - # return attr.apply(object, arguments) - - wrapper.is_wrapper = True - wrapper.wrapped = attr ## this is required because some javascript API's `class-method-style` helper functions on the constructor - return wrapper - - - elif attr.is_classmethod: - - def method(): - var(args) - args = Array.prototype.slice.call(arguments) - if (JS('args[0] instanceof Array') and JS("{}.toString.call(args[1]) === '[object Object]'") and args.length == 2): - pass - else: - args = [args, JSObject()] - if object.__class__: ## if classmethod is called from an instance, force class as first argument - args[0].splice(0, 0, object.__class__) - else: - args[0].splice(0, 0, object) - return attr.apply(this, args) ## this is bound so that callback methods can use `this` from the caller - - method.is_wrapper = True - object[attribute] = method ## cache method - we assume that class methods do not change - return method - - else: - return attr - - else: - return attr - - var(__class__, bases) - - - #attr = object[ attribute ] - #if attr != None: - # return attr - - - # next check for object.__class__ - __class__ = object.__class__ - if __class__: ## at this point we can assume we are dealing with a pythonjs class instance - - if attribute in __class__.__properties__: ## @property decorators - TODO support PythonJSJS classes - return __class__.__properties__[ attribute ]['get']( [object], JSObject() ) - - if attribute in __class__.__unbound_methods__: - attr = __class__.__unbound_methods__[ attribute ] - if attr.fastdef: - def method(args,kwargs): - if arguments and arguments[0]: - arguments[0].splice(0,0,object) - return attr.apply(this, arguments) - else: - return attr( [object], {} ) - else: - def method(args,kwargs): - if arguments.length == 0: - return attr( [object], __NULL_OBJECT__ ) - elif instanceof(args,Array) and typeof(kwargs) is "object" and arguments.length==2: - args.splice(0, 0, object) - if kwargs is undefined: - return attr( args, __NULL_OBJECT__ ) - else: - return attr( args, kwargs ) - else: - args = Array.prototype.slice.call(arguments) - args.splice(0, 0, object) - args = [args, __NULL_OBJECT__] ## TODO - way to pass keyword args from javascript? - return attr.apply(this, args) ## this is bound here so that callback methods can use `this` from the caller - - method.is_wrapper = True - object[attribute] = method ## cache method - we assume that methods do not change - return method - - - attr = __class__[ attribute ] - - if attribute in __class__: - if JS("{}.toString.call(attr) === '[object Function]'"): - if attr.is_wrapper: - return attr - elif attr.fastdef: - def method(args,kwargs): - if arguments and arguments[0]: - arguments[0].splice(0,0,object) - return attr.apply(this, arguments) - else: - return attr( [object], {} ) - else: - def method(args,kwargs): - if arguments.length == 0: - return attr( [object], __NULL_OBJECT__ ) - elif instanceof(args,Array) and typeof(kwargs) is "object" and arguments.length==2: - args.splice(0, 0, object) - if kwargs is undefined: - return attr( args, __NULL_OBJECT__ ) - else: - return attr( args, kwargs ) - else: - args = Array.prototype.slice.call(arguments) - args.splice(0, 0, object) - args = [args, __NULL_OBJECT__] ## TODO - way to pass keyword args from javascript? - return attr.apply(this, args) ## this is bound here so that callback methods can use `this` from the caller - - - method.is_wrapper = True - object[attribute] = method ## cache method - we assume that methods do not change - return method - else: - return attr - - bases = __class__.__bases__ - - for base in bases: - attr = _get_upstream_attribute(base, attribute) - if attr is not undefined: - if JS("{}.toString.call(attr) === '[object Function]'"): - - if attr.fastdef: - def method(args,kwargs): - if arguments and arguments[0]: - arguments[0].splice(0,0,object) - return attr.apply(this, arguments) - else: - return attr( [object], {} ) - else: - def method(args,kwargs): - if arguments.length == 0: - return attr( [object], __NULL_OBJECT__ ) - elif instanceof(args,Array) and typeof(kwargs) is "object" and arguments.length==2: - args.splice(0, 0, object) - if kwargs is undefined: - return attr( args, __NULL_OBJECT__ ) - else: - return attr( args, kwargs ) - else: - args = Array.prototype.slice.call(arguments) - args.splice(0, 0, object) - args = [args, __NULL_OBJECT__] ## TODO - way to pass keyword args from javascript? - return attr.apply(this, args) ## this is bound here so that callback methods can use `this` from the caller - - - - method.is_wrapper = True - object[attribute] = method ## cache method - we assume that methods do not change - return method - else: - return attr - - for base in bases: ## upstream property getters come before __getattr__ - var( prop ) - prop = _get_upstream_property(base, attribute) - if prop is not undefined: - return prop['get']( [object], JSObject() ) - - if '__getattr__' in __class__: - return __class__['__getattr__']( [object, attribute], JSObject() ) - - for base in bases: - var( f ) - f = _get_upstream_attribute(base, '__getattr__') - if f is not undefined: - return f( [object, attribute], JSObject() ) - - - ## getting/setting from a normal JavaScript Object ## - if attribute == '__getitem__': - ## TODO, should object be checked if it really is an object here? - ## new rule: if value to return is `undefined` throw KeyError, - ## this could be a problem with some external js libraries but should be rare, - ## because most libraries will initalize keys to `null` - def wrapper(args,kwargs): - v = object[ args[0] ] - if v is undefined: - raise KeyError( args[0] ) - wrapper.is_wrapper = True - return wrapper - elif attribute == '__setitem__': - def wrapper(args,kwargs): object[ args[0] ] = args[1] - wrapper.is_wrapper = True - return wrapper - - if typeof(object, 'function') and object.is_wrapper: - return object.wrapped[ attribute ] - - if attribute == '__iter__' and instanceof(object, Object): - def wrapper(args, kwargs): return new( __ArrayIterator(Object.keys( object ),0) ) - wrapper.is_wrapper = True - return wrapper - - if attribute == '__contains__' and instanceof(object, Object): - def wrapper(args, kwargs): return (Object.keys( object )).indexOf( args[0] ) != -1 - wrapper.is_wrapper = True - return wrapper - - - if attr is undefined: - if error_message: - raise AttributeError(error_message) - else: - raise AttributeError(attribute) - else: - return attr - -def _get_upstream_attribute(base, attr): - if attr in base: - return base[ attr ] - for parent in base.__bases__: - return _get_upstream_attribute(parent, attr) - -def _get_upstream_property(base, attr): ## no longer required - if attr in base.__properties__: - return base.__properties__[ attr ] - for parent in base.__bases__: - return _get_upstream_property(parent, attr) - -def __set__(object, attribute, value): - ''' - __setattr__ is always called when an attribute is set, - unlike __getattr__ that only triggers when an attribute is not found, - this asymmetry is in fact part of the Python spec. - note there is no __setattribute__ - - In normal Python a property setter is not called before __setattr__, - this is bad language design because the user has been more explicit - in having the property setter. - - In PythonJS, property setters are called instead of __setattr__. - ''' - - if '__class__' in object and object.__class__.__setters__.indexOf(attribute) != -1: - object[attribute] = value - elif '__setattr__' in object: - object.__setattr__( attribute, value ) - else: - object[attribute] = value - - - -def __getargs__(func_name, signature, args, kwargs): - """Based on ``signature`` and ``args``, ``kwargs`` parameters retrieve - the actual parameters. - - This will set default keyword arguments and retrieve positional arguments - in kwargs if their called as such""" - - if args is None: args = [] - if kwargs is None: kwargs = {} - out = {} - - # if the caller did not specify supplemental positional arguments e.g. *args in the signature - # raise an error - if args.length > signature.args.length: - if signature.vararg: - pass - else: - print 'Error in function->' + func_name - print 'args:', args, 'kwargs:', kwargs, 'sig:', signature - raise TypeError("Supplemental positional arguments provided but signature doesn't accept them") - - j = 0 - while j < signature.args.length: - name = signature.args[j] - if name in kwargs: - # value is provided as a keyword argument - out[name] = kwargs[name] - elif j < args.length: - # value is positional and within the signature length - out[name] = args[j] - elif name in signature.kwargs: - # value is not found before and is in signature.length - out[name] = signature.kwargs[name] - j += 1 - - args = args.slice(j) ## note that if this fails because args is not an array, then a pythonjs function was called from javascript in a bad way. - #args = Array.prototype.slice.call(args, j) ## this fix should not be required - - if signature.vararg: - out[signature.vararg] = args - if signature.varkwarg: - out[signature.varkwarg] = kwargs - return out - diff --git a/pythonjs/translator.py b/pythonjs/translator.py deleted file mode 100755 index 0b772f9..0000000 --- a/pythonjs/translator.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python -import os, sys, traceback, json - -from python_to_pythonjs import main as python_to_pythonjs -from pythonjs import main as pythonjs_to_javascript -from pythonjs_to_dart import main as pythonjs_to_dart -from pythonjs_to_coffee import main as pythonjs_to_coffee -from pythonjs_to_lua import main as pythonjs_to_lua -from pythonjs_to_luajs import main as pythonjs_to_luajs -from pythonjs_to_go import main as pythonjs_to_go - -cmdhelp = """\ -usage: translator.py [--dart|--coffee|--lua|--go|--visjs|--no-wrapper|--analyze] file.py - -example: - translator.py --no-wrapper myscript.py > myscript.js -""" - - -def main(script, module_path=None): - if '--visjs' in sys.argv: - import python_to_visjs - return python_to_visjs.main( script ) - else: - code = '' - res = None - if '--go' in sys.argv: - a = python_to_pythonjs(script, go=True, module_path=module_path) - code = pythonjs_to_go( a ) - elif '--gopherjs' in sys.argv: - a = python_to_pythonjs(script, go=True, module_path=module_path) - code = pythonjs_to_go( a ) - - exe = os.path.expanduser('~/go/bin/gopherjs') - if not os.path.isfile(exe): - raise RuntimeError('gopherjs not installed to ~/go/bin/gopherjs') - import subprocess - path = '/tmp/gopherjs-input.go' - open(path, 'wb').write(code) - subprocess.check_call([exe, 'build', path], cwd='/tmp') - code = open('/tmp/gopherjs-input.js', 'rb').read() - - elif '--dart' in sys.argv: - a = python_to_pythonjs(script, dart=True, module_path=module_path) - code = pythonjs_to_dart( a ) - elif '--coffee' in sys.argv: - a = python_to_pythonjs(script, coffee=True, module_path=module_path) - code = pythonjs_to_coffee( a ) - elif '--lua' in sys.argv: - a = python_to_pythonjs(script, lua=True, module_path=module_path) - try: code = pythonjs_to_lua( a ) - except SyntaxError: - err = traceback.format_exc() - lineno = 0 - for line in err.splitlines(): - if "" in line: - lineno = int(line.split()[-1]) - - b = a.splitlines()[ lineno ] - sys.stderr.write( '\n'.join([err,b]) ) - - elif '--luajs' in sys.argv: ## converts back to javascript - a = python_to_pythonjs(script, lua=True, module_path=module_path) - code = pythonjs_to_luajs( a ) - else: - a = python_to_pythonjs(script, module_path=module_path) - - if isinstance(a, dict): - res = {} - for jsfile in a: - res[ jsfile ] = pythonjs_to_javascript( a[jsfile], webworker=jsfile != 'main' ) - return res - else: - ## requirejs module is on by default, this wraps the code in a `define` function - ## and returns `__module__` - ## if --no-wrapper is used, then the raw javascript is returned. - code = pythonjs_to_javascript( a, requirejs='--no-wrapper' not in sys.argv ) - - if '--analyze' in sys.argv: - dartanalyzer = os.path.expanduser('~/dart-sdk/bin/dartanalyzer') - #dart2js = os.path.expanduser('~/dart-sdk/bin/dart2js') - assert os.path.isfile( dartanalyzer ) - - x = python_to_pythonjs(script, dart=True, module_path=module_path) - dartcode = pythonjs_to_dart( x ) - path = '/tmp/debug.dart' - open(path, 'wb').write( dartcode ) - import subprocess - try: - subprocess.check_output( [dartanalyzer, path] ) - except subprocess.CalledProcessError as err: - dartcodelines = dartcode.splitlines() - for line in err.output.splitlines(): - if line.startswith('[error]'): - a,b = line.split( path ) - a = a[:-1] - print( '\x1B[0;31m' + a + '\x1B[0m' ) - lineno = int( b.split('line ')[-1].split(',')[0] ) - print('line: %s' %lineno) - print( dartcodelines[lineno-1] ) - sys.exit(1) - - if res: ## dict return - return res - else: - return code - -def command(): - if '-h' in sys.argv or '--help' in sys.argv: - print(cmdhelp) - return - - mpath = None - scripts = [] - if len(sys.argv) > 1: - for arg in sys.argv[1:]: - if arg.endswith('.py') or arg.endswith('.html'): - scripts.append( arg ) - if mpath is None: - mpath = os.path.split(arg)[0] - - if len(scripts): - a = [] - for script in scripts: - a.append( open(script, 'rb').read() ) - data = '\n'.join( a ) - else: - data = sys.stdin.read() - - js = main(data, module_path=mpath) - if isinstance(js, dict): - print( json.dumps(js) ) - else: - print(js) - - -if __name__ == '__main__': - command() diff --git a/pythonjs/typedpython.py b/pythonjs/typedpython.py deleted file mode 100644 index f5bf3f3..0000000 --- a/pythonjs/typedpython.py +++ /dev/null @@ -1,457 +0,0 @@ -types = ['str', 'list', 'dict'] - -glsl_types = ['struct*', 'int*', 'float*', 'vec2', 'vec3', 'vec4', 'mat2', 'mat3', 'mat4'] -glsl_xtypes = ['mat2x2', 'mat3x3', 'mat4x4'] ## others not supported in WebGLSL -glsl_types.extend( glsl_xtypes ) -glsl_aliases = ['floatPOINTER', 'intPOINTER', 'structPOINTER'] - -types.extend( glsl_types ) -types.extend( glsl_aliases ) - -native_number_types = ['int', 'float', 'double'] ## float and double are the same -simd_types = ['float32x4', 'int32x4'] -vector_types = ['float32vec'] -vector_types.extend( simd_types ) -number_types = ['long'] ## requires https://github.com/dcodeIO/Long.js -number_types.extend( native_number_types ) - -types.extend( number_types) -types.extend( vector_types ) - - -__whitespace = [' ', '\t'] - -GO_SPECIAL_CALLS = { - 'go' : '__go__', - 'go.channel' : '__go_make_chan__', - 'go.array' : '__go__array__', - 'go.make' : '__go_make__' -} - -def transform_source( source, strip=False ): - output = [] - output_post = None - - for line in source.splitlines(): - a = [] - hit_go_typedef = False - gotype = None - - for i,char in enumerate(line): - nextchar = None - j = i+1 - while j < len(line): - nextchar = line[j] - if nextchar.strip(): break - j += 1 - - if a and char==']' and j==i+1 and nextchar!=None and nextchar in '[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ': - assert '[' in a - gotype = [] - b = a.pop() - while b != '[': - gotype.append(b) - b = a.pop() - gotype.reverse() - gotype = ''.join(gotype) - if not gotype: - if nextchar=='[': - a.append('__go__array__<<') - else: - a.append('__go__array__(') - elif gotype.isdigit(): - a.append('__go__arrayfixed__(%s,' %gotype) - else: - assert ''.join(a[-3:])=='map' - a.pop(); a.pop(); a.pop() - a.append('__go__map__(%s,' %gotype) - hit_go_typedef = True - - elif hit_go_typedef and char=='(': - a.append(')<<(') - hit_go_typedef = False - elif hit_go_typedef and char=='{': - a.append(')<<{') - hit_go_typedef = False - elif hit_go_typedef and char==',': - #a.append(', type=True),') ## this breaks function annotations that splits on ',' - a.append('<' in c: ## python3 syntax - c, rtype = c.split('->') - c += ':' - rtype = rtype.strip()[:-1] - indent = [] - for char in c: - if char in __whitespace: - indent.append(char) - else: - break - indent = ''.join(indent) - output.append( indent + '@returns(%s)' %rtype) - - if c.startswith('import '): - if '-' in c: - c = c.replace('-', '__DASH__') - if '/' in c: - c = c.replace('/', '__SLASH__') - if '"' in c: - c = c.replace('"', '') - - - if ' new ' in c: - c = c.replace(' new ', ' __new__>>') - if '\tnew ' in c: - c = c.replace('\tnew ', ' __new__>>') - - - ## golang - - if c.strip().startswith('switch '): - c = c.replace('switch ', 'with __switch__(').replace(':', '):') - - if c.strip().startswith('default:'): - c = c.replace('default:', 'with __default__:') - - if c.strip().startswith('select:'): - c = c.replace('select:', 'with __select__:') - - if c.strip().startswith('case ') and c.strip().endswith(':'): - c = c.replace('case ', 'with __case__(').replace(':', '):') - - if '<-' in c: - if '=' in c: - c = c.replace('<-', '__go__receive__<<') - else: - ## keeping `=` allows for compatible transform to stacklessPython API, - ## this is not used now because it is not required by the Go backend. - c = c.replace('<-', '= __go__send__<<') - #c = c.replace('<-', '<<__go__send__<<') - - - ## X.method.bind(X) shortcut `->` - if '->' in c: - a,b = c.split('->') - this_name = a.split()[-1].split('=')[-1].split(':')[-1].split(',')[-1] - method_name = b.split()[0].split('(')[0] - c = c.replace('->'+method_name, '.'+method_name+'.bind(%s)'%this_name) - - ## callback=def .. inline function ## - if '=def ' in c or '= def ' in c or ': def ' in c or ':def ' in c: - if '=def ' in c: - d = '=def ' - elif '= def ' in c: - d = '= def ' - elif ': def ' in c: - d = ': def ' - elif ':def ' in c: - d = ':def ' - - if 'def (' in c: - c = c.replace('def (', 'def __NAMELESS__(') - c, tail = c.split(d) - - #if d.startswith('='): - # if '(' in c: - # c += '=lambda __INLINE_FUNCTION__: %s )' %tail.strip().split(':')[0] - # else: - # c += '=lambda __INLINE_FUNCTION__: %s' %tail.strip().split(':')[0] - # output_post = 'def %s'%tail - - if d.startswith('='): - c += '=lambda __INLINE_FUNCTION__: %s' %tail.strip().split(':')[0] - - if output_post: - if output_post[-1][-1]==',': - output_post[-1] = output_post[-1][:-1] - output[-1] += ',' - else: output_post = list() - - output.append( c ) - - c = 'def %s'%tail - - else: - c += ':lambda __INLINE_FUNCTION__: %s,' %tail.strip().split(':')[0] - output.append( c ) - if output_post: - if output_post[-1][-1]==',': - output_post[-1] = output_post[-1][:-1] - else: output_post = list() - c = 'def %s'%tail - - - ## python3 annotations - if 'def ' in c and c.count(':') > 1: - indent = 0 - for u in c: - if u == ' ' or u == '\t': - indent += 1 - else: - break - indent = '\t'*indent - - #head, tail = c.split('(') - head = c[ : c.index('(') ] - tail = c[ c.index('(')+1 : ] - args = [] - #tail, tailend = tail.split(')') - tailend = tail[ tail.rindex(')')+1 : ] - tail = tail[ : tail.rindex(')') ] - - - for x in tail.split(','): - y = x - if ':' in y: - kw = None - if '=' in y: - y, kw = y.split('=') - arg, typedef = y.split(':') - chan = False - if len(typedef.strip().split()) == 2: - chan = True - typedef = typedef.strip().split()[-1] - if '*' in arg: - arg_name = arg.split('*')[-1] - else: - arg_name = arg - - if chan: - output.append('%s@typedef_chan(%s=%s)' %(indent, arg_name, typedef)) - else: - output.append('%s@typedef(%s=%s)' %(indent, arg_name, typedef)) - if kw: - arg += '=' + kw - args.append(arg) - else: - args.append(x) - c = head +'(' + ','.join(args) + ')'+tailend - - - ## jquery ## - ## TODO ensure this is not inside quoted text - if '$(' in c: - c = c.replace('$(', '__DOLLAR__(') - if '$' in c and 'def ' in c: ## $ as function parameter - c = c.replace('$', '__DOLLAR__') - if '$.' in c: - c = c.replace('$.', '__DOLLAR__.') - - if c.strip().startswith('nonlocal '): ## Python3 syntax - c = c.replace('nonlocal ', 'global ') ## fake nonlocal with global - - if type(output_post) is list: - output_post.append( c ) - else: - output.append( c ) - - if type(output_post) is str: ## DEPRECATED - indent = 0 - for u in output[-1]: - if u == ' ' or u == '\t': - indent += 1 - else: - break - output.append( ('\t'*indent)+output_post) - output_post = True - elif output_post == True: ## DEPRECATED - if output[-1].strip()==')': - output.pop() - output_post = None - - elif type(output_post) is list: - if output_post[-1].strip().endswith( ('}',')') ): - output.append( output_post.pop() ) - indent = 0 - for u in output[-1]: - if u == ' ' or u == '\t': - indent += 1 - else: - break - for ln in output_post: - output.append( ('\t'*indent)+ln ) - - output_post = None - - r = '\n'.join(output) - return r - - -test = ''' -int a = 1 -float b = 1.1 -str c = "hi" -int d -int def xxx(): pass -if True: - float* def Y(): - pass - -A.callback = B->method -A.do_something( x,y,z, B->method ) -A.do_something( x,y,z, callback=B->method ) -A.do_something( x,y,z, callback=def cb(x): - return x+y -) -A.do_something( x,y,z, callback=def (x,y,z): - return x+y -) -a = { - 'cb1': def (x,y): - return x+y -} -def xxx(): - b = { - 'cb1': def (x,y): - return x+y, - 'cb2': def (x,y): - return x+y - } - -X.func( cb1=def (): - return 1, - cb2=def (): - return 2 -) - -c = function(x,y): - return x+y -if True: - d = a[ 'somekey' ] except KeyError: 'mydefault' - -## <- becomes __go__send__<int: - return cb(3) - -def wrapper(a:int, c:chan int): - result = longCalculation(a) - c <- result - -switch a.f(): - case 1: - print(x) - case 2: - print(y) - default: - break - -select: - case x = <- a: - y += x - case x = <- b: - y += x - -## in go becomes: []string{x,y,z} -## becomes: __go__array__(string) << (x,y,z) -a = []string(x,y,z) - -## in go becomes: [3]int{x,y,z} -## becomes: __go__arrayfixed__(3, string) << (x,y,z) -a = [3]int(x,y,z) - -## in go becomes: map[string]int{x,y,z} -## becomes: __go__map__(string, int) << {'x':x, 'y':y, 'z':z} -a = map[string]int{ - "x":x, "y":y, "z":z -} - -def f(a:int, b:int, c:int) ->int: - return a+b+c - -def f(a:int=100, b:int=100) ->int: - return a+b - -def f(*args:int, **kwargs:int) ->int: - return a+b - -a = []int(x for x in range(3)) - -y = go.make([]float64, 1000) - -def plot(id:string, latency:[]float64, xlabel:string, title:string ): - pass - -''' - -if __name__ == '__main__': - out = transform_source(test) - print(out) - import ast - print( ast.parse(out) ) \ No newline at end of file diff --git a/regtests/bargraph.pl b/regtests/bargraph.pl deleted file mode 100755 index b593388..0000000 --- a/regtests/bargraph.pl +++ /dev/null @@ -1,1811 +0,0 @@ -#!/usr/bin/perl - -# bargraph.pl: a bar graph builder that supports stacking and clustering. -# Modifies gnuplot's output to fill in bars and add a legend. -# -# Copyright (C) 2004-2012 Derek Bruening -# http://www.burningcutlery.com/derek/bargraph/ -# http://code.google.com/p/bargraphgen/ -# -# Contributions: -# * sorting by data contributed by Tom Golubev -# * legendfill= code inspired by Kacper Wysocki's code -# * =barsinbg option contributed by Manolis Lourakis -# * gnuplot 4.3 fixes contributed by Dima Kogan -# * ylabelshift contributed by Ricardo Nabinger Sanchez. -# * Error bar code contributed by Mohammad Ansari. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -# USA. - -########################################################################### -########################################################################### - -$usage = " -Usage: $0 [-gnuplot] [-fig] [-pdf] [-png [-non-transparent]] [-eps] - [-gnuplot-path ] [-fig2dev-path ] - -File format: - - - -Graph parameter types: -= -= -"; - -# Main features: -# * Stacked bars of 9+ datasets -# * Clustered bars of 8+ datasets -# * Clusters of stacked bars -# * Lets you keep your data in table format, or separated but listed in -# the same file, rather than requiring each dataset to be in a separate file -# * Custom gnuplot command pass-through for fine-grained customization -# without having a separate tool chain step outside the script -# * Color control -# * Font face control and limited font size control -# * Automatic arithmetic or harmonic mean calculation -# * Automatic legend creation -# * Automatic sorting, including sorting into SPEC CPU 2000 integer and -# floating point benchmark groups and sorting by data -# -# Multiple data sets can either be separated by =multi, -# or in a table with =table. Does support incomplete datasets, -# but issues warning. -# For clusters of stacked bars, separate your stacked data for each -# cluster with =multi or place in a table, and separate (and optionally -# name) each cluster with multimulti= -# For complete documentation see -# http://www.burningcutlery.com/derek/bargraph/ - -# This is version 4.7. -# Changes in version 4.7, released March 25, 2012: -# * added xscale= and yscale= to properly scale graphs on -# gnuplot 4.2+. Note that this may change absolute coordinates -# in existing graphs. -# * switched to boxerror to avoid the data marker for yerrorbars -# * added custfont= feature -# * fixed bugs in centering in-graph legend box -# * added fudging for capital letters to work around gnuplot weirdness -# (issue #15) -# Changes in version 4.6, released January 31, 2010: -# * added automatic legend placement, including automatically -# finding an empty spot inside the graph, via the 'inside', -# 'right', 'top', and 'center' keywords in legendx= and legendy= -# * added logscaley= to support logarithmic y values -# * added leading_space_mul=, intra_space_mul=, and barwidth= -# parameters to control spacing and bar size. as part of this change, -# bars are no longer placed in an integer-based fashion. -# * fixed gnuplot 4.0 regression -# Changes in version 4.5, released January 17, 2010: -# * changed legends to have a white background and border outline -# by default, with legendfill= option (inspired by Kacper -# Wysocki's code) to control the background fill color (and -# whether there is a fill) and =nolegoutline to turn off the -# outline -# * the legend bounding box is now much more accurately calculated -# * eliminated =patterns color with recent gnuplots -# * added legendfontsz= option -# * added =legendinbg option (legend in fg is new default) -# * added =reverseorder option (from Tom Golubev) -# * added =sortdata_ascend option (from Tom Golubev) -# * added =sortdata_descend option (from Tom Golubev) -# * added =barsinbg option (from Manolis Lourakis) -# * added horizline= option (issue #2) -# * added grouprotateby= option (issue #1) -# Changes in version 4.4, released August 10, 2009: -# * added rotateby= option -# * added xticshift= option -# * added support for gnuplot 4.3 (from Dima Kogan) -# * added ylabelshift= option (from Ricardo Nabinger Sanchez) -# * added =stackabs option -# Changes in version 4.3, released June 1, 2008: -# * added errorbar support (from Mohammad Ansari) -# * added support for multiple colors in a single dataset -# * added -non-transparent option to disable png transparency -# * added option to disable the legend -# * added datascale and datasub options -# Changes in version 4.2, released May 25, 2007: -# * handle gnuplot 4.2 fig terminal output -# Changes in version 4.1, released April 1, 2007: -# * fixed bug in handling scientific notation -# * fixed negative offset font handling bug -# Changes in version 4.0, released October 16, 2006: -# * added support for clusters of stacked bars -# * added support for font face and size changes -# * added support for negative maximum values -# Changes in version 3.0, released July 15, 2006: -# * added support for spaces and quotes in x-axis labels -# * added support for missing values in table format -# * added support for custom table delimiter -# * added an option to suppress adding of commas -# Changes in version 2.0, released January 21, 2006: -# * added pattern fill support -# * fixed errors in large numbers of datasets: -# - support > 8 clustered bars -# - fix > 9 dataset color bug -# - support > 25 stacked bars - -# we need special support for bidirectional pipe -use IPC::Open2; - -########################################################################### -########################################################################### - -# The full set of Postscript fonts supported by FIG -%fig_font = ( - 'Default' => -1, - 'Times Roman' => 0, - # alias - 'Times' => 0, - 'Times Italic' => 1, - 'Times Bold' => 2, - 'Times Bold Italic' => 3, - 'AvantGarde Book' => 4, - 'AvantGarde Book Oblique' => 5, - 'AvantGarde Demi' => 6, - 'AvantGarde Demi Oblique' => 7, - 'Bookman Light' => 8, - 'Bookman Light Italic' => 9, - 'Bookman Demi' => 10, - 'Bookman Demi Italic' => 11, - 'Courier' => 12, - 'Courier Oblique' => 13, - 'Courier Bold' => 14, - 'Courier Bold Oblique' => 15, - 'Helvetica' => 16, - 'Helvetica Oblique' => 17, - 'Helvetica Bold' => 18, - 'Helvetica Bold Oblique' => 19, - 'Helvetica Narrow' => 20, - 'Helvetica Narrow Oblique' => 21, - 'Helvetica Narrow Bold' => 22, - 'Helvetica Narrow Bold Oblique' => 23, - 'New Century Schoolbook Roman' => 24, - 'New Century Schoolbook Italic' => 25, - 'New Century Schoolbook Bold' => 26, - 'New Century Schoolbook Bold Italic' => 27, - 'Palatino Roman' => 28, - 'Palatino Italic' => 29, - 'Palatino Bold' => 30, - 'Palatino Bold Italic' => 31, - 'Symbol' => 32, - 'Zapf Chancery Medium Italic' => 33, - 'Zapf Dingbats' => 34, -); - -########################################################################### -########################################################################### - -# default is to output eps -$output = "eps"; -$gnuplot_path = "gnuplot"; -$fig2dev_path = "fig2dev"; -$debug_seefig_unmod = 0; -$png_transparent = 1; -$verbose = 0; - -# FIXME i#13: switch to GetOptions -while ($#ARGV >= 0) { - if ($ARGV[0] eq '-fig') { - $output = "fig"; - } elsif ($ARGV[0] eq '-rawfig') { - $output = "fig"; - $debug_seefig_unmod = 1; - } elsif ($ARGV[0] eq '-gnuplot') { - $output = "gnuplot"; - } elsif ($ARGV[0] eq '-pdf') { - $output = "pdf"; - } elsif ($ARGV[0] eq '-png') { - $output = "png"; - } elsif ($ARGV[0] eq '-non-transparent') { - $png_transparent = 0; - } elsif ($ARGV[0] eq '-eps') { - $output = "eps"; - } elsif ($ARGV[0] eq '-gnuplot-path') { - die $usage if ($#ARGV <= 0); - shift; - $gnuplot_path = $ARGV[0]; - } elsif ($ARGV[0] eq '-fig2dev-path') { - die $usage if ($#ARGV <= 0); - shift; - $fig2dev_path = $ARGV[0]; - } elsif ($ARGV[0] eq '-v') { - $verbose = 1; - } else { - $graph = $ARGV[0]; - shift; - last; - } - shift; -} -die $usage if ($#ARGV >= 0 || $graph eq ""); -open(IN, "< $graph") || die "Couldn't open $graph"; - -# gnuplot syntax varies by version -$gnuplot_version = `$gnuplot_path --version`; -$gnuplot_version =~ /gnuplot ([\d\.]+)/; -$gnuplot_version = $1; -$gnuplot_uses_offset = 1; -$gnuplot_uses_offset = 0 if ($gnuplot_version <= 4.0); - -# support for clusters and stacked -$stacked = 0; -$stacked_absolute = 0; -$stackcount = 1; -$clustercount = 1; -$plotcount = 1; # multi datasets to cycle colors through -$dataset = 0; -$table = 0; -# leave $column undefined by default - -# support for clusters of stacked -$stackcluster = 0; -$groupcount = 1; -$grouplabels = 0; -$groupset = 0; -$grouplabel_rotateby = 0; - -$title = ""; -$xlabel = ""; -$ylabel = ""; -$usexlabels = 1; -# xlabel rotation seems to not be supported by gnuplot - -# default is to rotate x tic labels by 90 degrees -# when tic labels are rotated, need to shift axis label down. -1 is reasonable: -$xlabelshift = "0,-1"; -$xticsopts = "rotate"; -$xticshift = "0,0"; -$ylabelshift = "0,0"; - -$sort = 0; -# sort into SPEC CPU 2000 and JVM98 groups: first, SPECFP, then SPECINT, then JVM -$sortbmarks = 0; -$sortdata_ascend = 0; # sort by data, from low to high -$sortdata_descend = 0; # sort by data, from high to low -$reverseorder = 0; # if not sorting, reverse order -$bmarks_fp = "ammp applu apsi art equake facerec fma3d galgel lucas mesa mgrid sixtrack swim wupwise"; -$bmarks_int = "bzip2 crafty eon gap gcc gzip mcf parser perlbmk twolf vortex vpr"; -$bmarks_jvm = "check compress jess raytrace db javac mpegaudio mtrt jack checkit"; - -$ymax = ""; -$ymin = 0; -$calc_min = 1; - -$lineat = ""; -$gridx = "noxtics"; -$gridy = "ytics"; -$noupperright = 0; - -# space on both ends of graph -$leading_space_mul = 0; # set below -# space between clusters -$intra_space_mul = 0; # set below -# width of bars -$barwidth = 0; # set below - -$invert = 0; - -$use_mean = 0; -$arithmean = 0; # else, harmonic -# leave $mean_label undefined by default - -$datascale = 1; -$datasub = 0; -$percent = 0; -$base1 = 0; -$yformat = "%.0f"; - -$logscaley = 0; - -$extra_gnuplot_cmds = ""; - -# if still 0 later will be initialized to default -$use_legend = 1; -$legendx = 'inside'; -$legendy = 'top'; -$legend_fill = 'white'; -$legend_outline = 1; -$legend_font_size = 0; # if left at 0 will be $font_size-1 - -# use patterns instead of solid fills? -$patterns = 0; -# there are only 22 patterns that fig supports -$max_patterns = 22; - -$custom_colors = 0; -$color_per_datum = 0; - -# fig depth: leave enough room for many datasets -# (for stacked bars we subtract 2 for each) -# but max gnuplot terminal depth for fig is 99! -# fig depth might change later via =barsinbg -$legend_depth = 0; # 100 for =legendinbg -$plot_depth = 98; - -$add_commas = 1; - -$font_face = $fig_font{'Default'}; -$font_size = 10.0; -# let user have some control over font bounding box heuristic -$bbfudge = 1.0; - -# yerrorbar support -$yerrorbars = 0; - -# are bars in the foreground (default) or background of plot? -$barsinbg = 0; - -# sentinel value -$sentinel = 999999; - -# scaling support -# targets gnuplot 4.2+ where "set size x,y" scales the chart but not -# the canvas and so ends up truncated: instead we need to set the size -# of the canvas up front (which works on older gnuplot too). -$canvas_default_x = 5.0; -$canvas_default_y = 3.0; -$canvas_min = 2; -$canvas_max = 99; -$xscale = 1.0; -$yscale = 1.0; - -while () { - next if (/^\#/ || /^\s*$/); - # line w/ = is a control line (except =>) - # FIXME i#13: switch to GetOptions - if (/=[^>]/) { - if (/^=cluster(.)/) { - $splitby = $1; - s/=cluster$splitby//; - chop; - @legend = split($splitby, $_); - $clustercount = $#legend + 1; - $plotcount = $clustercount; - } elsif (/^=stacked(.)/) { - $splitby = $1; - s/=stacked$splitby//; - chop; - @legend = split($splitby, $_); - $stackcount = $#legend + 1; - $plotcount = $stackcount; - $stacked = 1; - # reverse order of datasets - $dataset = $#legend; - } elsif (/^=stackcluster(.)/) { - $splitby = $1; - s/=stackcluster$splitby//; - chop; - @legend = split($splitby, $_); - $stackcount = $#legend + 1; - $plotcount = $stackcount; - $stackcluster = 1; - # reverse order of datasets - $dataset = $#legend; - # FIXME: two types of means: for stacked (mean bar per cluster) - # or for cluster (cluster of stacked bars) - $use_mean = 0; - } elsif (/^multimulti=(.*)/) { - if (!($groupset == 0 && $dataset == $stackcount-1)) { - $groupset++; - $dataset = $stackcount-1; - } - $groupname[$groupset] = $1; - $grouplabels = 1 if ($groupname[$groupset] ne ""); - } elsif (/^=multi/) { - die "Neither cluster nor stacked specified for multiple dataset" - if ($plotcount == 1); - if ($stacked || $stackcluster) { - # reverse order of datasets - $dataset--; - } else { - $dataset++; - } - } elsif (/^=patterns/) { - $patterns = 1; - } elsif (/^=color_per_datum/) { - $color_per_datum = 1; - } elsif (/^colors=(.*)/) { - $custom_colors = 1; - @custom_color = split(',', $1); - } elsif (/^=table/) { - $table = 1; - if (/^=table(.)/) { - $table_splitby = $1; - } else { - $table_splitby = ' '; - } - } elsif (/^column=(\S+)/) { - $column = $1; - } elsif (/^=base1/) { - $base1 = 1; - } elsif (/^=invert/) { - $invert = 1; - } elsif (/^datascale=(.*)/) { - $datascale = $1; - } elsif (/^datasub=(.*)/) { - $datasub = $1; - } elsif (/^=percent/) { - $percent = 1; - } elsif (/^=sortdata_ascend/) { - $sort = 1; - $sortdata_ascend = 1; - } elsif (/^=sortdata_descend/) { - $sort = 1; - $sortdata_descend = 1; - } elsif (/^=sortbmarks/) { - $sort = 1; - $sortbmarks = 1; - } elsif (/^=sort/) { # don't prevent match of =sort* - $sort = 1; - } elsif (/^=reverseorder/) { - $reverseorder = 1; - } elsif (/^=arithmean/) { - die "Stacked-clustered does not suport mean" if ($stackcluster); - $use_mean = 1; - $arithmean = 1; - } elsif (/^=harmean/) { - die "Stacked-clustered does not suport mean" if ($stackcluster); - $use_mean = 1; - } elsif (/^meanlabel=(.*)$/) { - $mean_label = $1; - } elsif (/^min=([-\d\.]+)/) { - $ymin = $1; - $calc_min = 0; - } elsif (/^max=([-\d\.]+)/) { - $ymax = $1; - } elsif (/^=norotate/) { - $xticsopts = ""; - # actually looks better at -1 when not rotated, too - $xlabelshift = "0,-1"; - } elsif (/^xlabelshift=(.+)/) { - $xlabelshift = $1; - } elsif (/^ylabelshift=(.+)/) { - $ylabelshift = $1; - } elsif (/^xticshift=(.+)/) { - $xticsopts .= " offset $1"; - } elsif (/^rotateby=(.+)/) { - $xticsopts = "rotate by $1"; - } elsif (/^grouprotateby=(.+)/) { - $grouplabel_rotateby = $1; - } elsif (/^title=(.*)$/) { - $title = $1; - } elsif (/^=noxlabels/) { - $usexlabels = 0; - } elsif (/^xlabel=(.*)$/) { - $xlabel = $1; - } elsif (/^ylabel=(.*)$/) { - $ylabel = $1; - } elsif (/^yformat=(.*)$/) { - $yformat = $1; - } elsif (/^=noupperright/) { - $noupperright = 1; - } elsif (/^=gridx/) { - $gridx = "xtics"; - } elsif (/^=nogridy/) { - $gridy = "noytics"; - } elsif (/^=nolegend/) { - $use_legend = 0; - } elsif (/^legendx=(\S+)/) { - $legendx = $1; - } elsif (/^legendy=(\S+)/) { - $legendy = $1; - } elsif (/^legendfill=(.*)/) { - $legend_fill = $1; - } elsif (/^=nolegoutline/) { - $legend_outline = 0; - } elsif (/^legendfontsz=(.+)/) { - $legend_font_size = $1; - } elsif (/^extraops=(.*)/) { - $extra_gnuplot_cmds .= "$1\n"; - } elsif (/^=nocommas/) { - $add_commas = 0; - } elsif (/^font=(.+)/) { - if (defined($fig_font{$1})) { - $font_face = $fig_font{$1}; - } else { - @known_fonts = keys(%fig_font); - die "Unknown font \"$1\": known fonts are @known_fonts"; - } - } elsif (/^custfont=([^=]+)=(.+)/) { - if (defined($fig_font{$1})) { - $custfont{$2} = $fig_font{$1}; - } else { - @known_fonts = keys(%fig_font); - die "Unknown font \"$1\": known fonts are @known_fonts"; - } - } elsif (/^fontsz=(.+)/) { - $font_size = $1; - } elsif (/^bbfudge=(.+)/) { - $bbfudge = $1; - } elsif (/^=yerrorbars/) { - $table = 0; - $yerrorbars = 1; - if (/^=yerrorbars(.)/) { - $yerrorbars_splitby = $1; - } else { - $yerrorbars_splitby = ' '; - } - } elsif (/^=stackabs/) { - $stacked_absolute = 1; - } elsif (/^horizline=(.+)/) { - $lineat .= "f(x)=$1,f(x) notitle lt -1,"; # put black line at $1 - } elsif (/^=barsinbg/) { - $barsinbg = 1; - } elsif (/^=legendinbg/) { - $legend_depth = 100; - } elsif (/^leading_space_mul=(.+)/) { - $leading_space_mul = $1; - } elsif (/^intra_space_mul=(.+)/) { - $intra_space_mul = $1; - } elsif (/^barwidth=(.+)/) { - $barwidth = $1; - } elsif (/^logscaley=(.+)/) { - $logscaley = $1; - } elsif (/^xscale=(.+)/) { - $xscale = $1; - # gnuplot fig terminal imposes some limits - if ($xscale*$canvas_default_x < $canvas_min) { - $xscale = $canvas_min / $canvas_default_x; - print STDERR "WARNING: minimum scale exceeded: setting to min $xscale\n"; - } elsif ($xscale*$canvas_default_x > $canvas_max) { - $xscale = $canvas_max / $canvas_default_x; - print STDERR "WARNING: maximum scale exceeded: setting to max $xscale\n"; - } - } elsif (/^yscale=(.+)/) { - $yscale = $1; - # gnuplot fig terminal imposes some limits - if ($yscale*$canvas_default_y < $canvas_min) { - $yscale = $canvas_min / $canvas_default_y; - print STDERR "WARNING: minimum scale exceeded: setting to min $yscale\n"; - } elsif ($yscale*$canvas_default_y > $canvas_max) { - $yscale = $canvas_max / $canvas_default_y; - print STDERR "WARNING: maximum scale exceeded: setting to max $yscale\n"; - } - } else { - die "Unknown command $_\n"; - } - next; - } - - # compatibility checks - die "Graphs of type stacked or stackcluster do not suport yerrorbars" - if ($yerrorbars && ($stacked || $stackcluster)); - - # this line must have data on it! - - if ($table) { - # table has to look like this, separated by $table_splitby (default ' '): - # ... - # ... - # ... - - # perl split has a special case for literal ' ' to collapse adjacent - # spaces - if ($table_splitby eq ' ') { - @table_entry = split(' ', $_); - } else { - @table_entry = split($table_splitby, $_); - } - if ($#table_entry != $plotcount) { # not +1 since bmark - print STDERR "WARNING: table format error on line $_: found $#table_entry entries, expecting $plotcount entries\n"; - } - # remove leading and trailing spaces, and escape quotes - $table_entry[0] =~ s/^\s*//; - $table_entry[0] =~ s/\s*$//; - $table_entry[0] =~ s/\"/\\\"/g; - $bmark = $table_entry[0]; - for ($i=1; $i<=$#table_entry; $i++) { - $table_entry[$i] =~ s/^\s*//; - $table_entry[$i] =~ s/\s*$//; - if ($stacked || $stackcluster) { - # reverse order of datasets - $dataset = $stackcount-1 - ($i-1); - } else { - $dataset = $i-1; - } - $val = get_val($table_entry[$i], $dataset); - if (($stacked || $stackcluster) && $dataset < $stackcount-1 && - !$stacked_absolute) { - # need to add prev bar to stick above - $entry{$groupset,$bmark,$dataset+1} =~ /([-\d\.eE]+)/; - $val += $1; - } - if ($val ne '') { - $entry{$groupset,$bmark,$dataset} = "$val"; - } # else, leave undefined - } - goto nextiter; - } - - if ($yerrorbars) { - # yerrorbars has to look like this, separated by $yerrorbars_splitby (default ' '): - # ... - # ... - # ... - - # perl split has a special case for literal ' ' to collapse adjacent - # spaces - if ($yerrorbars_splitby eq ' ') { - @yerrorbars_entry = split(' ', $_); - } else { - @yerrorbars_entry = split($yerrorbars_splitby, $_); - } - if ($#yerrorbars_entry != $plotcount) { # not +1 since bmark - print STDERR "WARNING: yerrorbars format error on line $_: found $#yerrorbars_entry entries, expecting $plotcount entries\n"; - } - # remove leading and trailing spaces, and escape quotes - $yerrorbars_entry[0] =~ s/^\s*//; - $yerrorbars_entry[0] =~ s/\s*$//; - $yerrorbars_entry[0] =~ s/\"/\\\"/g; - $bmark = $yerrorbars_entry[0]; - for ($i=1; $i<=$#yerrorbars_entry; $i++) { - $yerrorbars_entry[$i] =~ s/^\s*//; - $yerrorbars_entry[$i] =~ s/\s*$//; - if ($stacked || $stackcluster) { - # reverse order of datasets - $dataset = $stackcount-1 - ($i-1); - } else { - $dataset = $i-1; - } - $val = get_val($yerrorbars_entry[$i], $dataset); - if (($stacked || $stackcluster) && $dataset < $stackcount-1 && - !$stacked_absolute) { - # need to add prev bar to stick above - $yerror_entry{$groupset,$bmark,$dataset+1} =~ /([-\d\.eE]+)/; - $val += $1; - } - if ($val ne '') { - $yerror_entry{$groupset,$bmark,$dataset} = "$val"; - } # else, leave undefined - } - goto nextiter; - } - - # support the column= feature - if (defined($column)) { - # only support separation by spaces - my @columns = split(' ', $_); - $bmark = $columns[0]; - if ($column eq "last") { - $val_string = $columns[$#columns]; - } else { - die "Column $column out of bounds" if ($column > 1 + $#columns); - $val_string = $columns[$column - 1]; - } - } elsif (/^\s*(.+)\s+([-\d\.]+)\s*$/) { - $bmark = $1; - $val_string = $2; - # remove leading spaces, and escape quotes - $bmark =~ s/\s+$//; - $bmark =~ s/\"/\\\"/g; - } else { - if (/\S+/) { - print STDERR "WARNING: unexpected, unknown-format line $_"; - } - next; - } - - # strip out trailing % - $val_string =~ s/%$//; - if ($val_string !~ /^[-\d\.]+$/) { - print STDERR "WARNING: non-numeric value \"$val_string\" for $bmark\n"; - } - - $val = get_val($val_string, $dataset); - if (($stacked || $stackcluster) && $dataset < $stackcount-1 && - !$stacked_absolute) { - # need to add prev bar to stick above - # remember that we're walking backward - $entry{$groupset,$bmark,$dataset+1} =~ /([-\d\.]+)/; - $val += $1; - } - $entry{$groupset,$bmark,$dataset} = "$val"; - - nextiter: - if (!defined($names{$bmark})) { - $names{$bmark} = $bmark; - $order{$bmark} = $bmarks_seen++; - } -} -close(IN); - -########################################################################### -########################################################################### - -$groupcount = $groupset + 1; - -$clustercount = $bmarks_seen if ($stackcluster); - -if ($barwidth > 0) { - $boxwidth = $barwidth; -} else { - # default - $boxwidth = 0.75/$clustercount; -} - -if ($sort) { - if ($sortbmarks) { - @sorted = sort sort_bmarks (keys %names); - } elsif ($sortdata_ascend) { - @sorted = sort { $entry{0,$a,0} <=> $entry{0,$b,0}} (keys %names); - } elsif ($sortdata_descend) { - @sorted = sort { $entry{0,$b,0} <=> $entry{0,$a,0}} (keys %names); - } else { - @sorted = sort (keys %names); - } -} else { - # put into order seen in file, or reverse - if ($reverseorder) { - @sorted = sort {$order{$b} <=> $order{$a}} (keys %names); - } else { - @sorted = sort {$order{$a} <=> $order{$b}} (keys %names); - } -} - -# default spacing: increase spacing if have many clusters+bmarks -# but keep lead spacing small if only one bmark -if ($leading_space_mul != 0) { - # user-specified - $outer_space = $boxwidth * $leading_space_mul; -} else { - $outer_space = $boxwidth * (1.0 + ($clustercount-1)/4.); -} -if ($intra_space_mul != 0) { - # user-specified - $intra_space = $boxwidth * $intra_space_mul; -} else { - $intra_space = $boxwidth * (1.0 + ($clustercount-1)/10.); -} - -# clamp at 1/10 the full width, if not user-specified -$num_items = $#sorted + 1 + (($use_mean) ? 1 : 0); -$xmax = get_xval($groupcount-1, $clustercount-1, $num_items-1) - + $boxwidth/2.; -$outer_space = $xmax/10. if ($outer_space > $xmax/10. && $leading_space_mul == 0); -$intra_space = $xmax/10. if ($intra_space > $xmax/10. && $intra_space_mul == 0); - -# re-calculate now that we know $intra_space and $outer_space -$xmax = get_xval($groupcount-1, $clustercount-1, $num_items-1) - + $boxwidth/2. + $outer_space; - -if ($use_mean) { - for ($i=0; $i<$plotcount; $i++) { - if ($stacked || $stackcluster) { - $category = $plotcount-$i; - } else { - $category = $i; - } - if ($arithmean) { - die "Error calculating mean: category $category has denom 0" - if ($harnum[$i] == 0); - $harmean[$i] = $harsum[$i] / $harnum[$i]; - } else { - die "Error calculating mean: category $category has denom 0" - if ($harsum[$i] == 0); - $harmean[$i] = $harnum[$i] / $harsum[$i]; - } - if ($datasub != 0) { - $harmean[$i] -= $datasub; - } - if ($datascale != 1) { - $harmean[$i] *= $datascale; - } - if ($percent) { - $harmean[$i] = ($harmean[$i] - 1) * 100; - } elsif ($base1) { - $harmean[$i] = ($harmean[$i] - 1); - } - } - if (($stacked || $stackcluster) && !$stacked_absolute) { - for ($i=$plotcount-2; $i>=0; $i--) { - # need to add prev bar to stick above - # since reversed, prev is +1 - $harmean[$i] += $harmean[$i+1]; - } - } -} - -# x-axis labels -$xtics = ""; -for ($g=0; $g<$groupcount; $g++) { - $item = 0; - foreach $b (@sorted) { - if ($stackcluster) { - $xval = get_xval($g, $item, $item); - } else { - $xval = get_xval($g, ($clustercount-1)/2., $item); - } - if ($usexlabels) { - $label = $b; - } else { - if ($stackcluster && $grouplabels && $item==&ceil($bmarks_seen/2)-1) { - $label = $groupname[$g]; - } else { - $label = ""; - } - } - $xtics .= "\"$label\" $xval, "; - $item++; - } - if ($stackcluster && $grouplabels && $usexlabels) { - $label = sprintf("set label \"%s\" at %f,0 center rotate by %d", - $groupname[$g], get_xval($g, ($clustercount-1)/2., - ($clustercount-1)/2.), - $grouplabel_rotateby); - $extra_gnuplot_cmds .= "$label\n"; - } -} -# For stackcluster we need to find the y value for the group labels -# so we look where gnuplot put the x label. If the user specifies none, -# we add our own. -$unique_xlabel = "UNIQUEVALUETOLOOKFOR"; -if ($stackcluster && $xlabel eq "") { - $xlabel = $unique_xlabel; -} -if ($use_mean) { - if ($usexlabels) { - if (!defined($mean_label)) { - if ($arithmean) { - $mean_label = "mean"; - } else { - $mean_label = "har_mean"; - } - } - } else { - $xtics .= "\"\" $item, "; - } - if ($stackcluster) { - # FIXME: support mean and move this into $g loop - $xval = get_xval(0, $item, $item); - } else { - $xval = get_xval(0, ($clustercount-1)/2., $item); - } - $xtics .= "\"$mean_label\" $xval, "; - $item++; -} - -# lose the last comma-space -chop $xtics; -chop $xtics; - -# add space between y-axis label and y tic labels -if ($ylabel ne "") { - $yformat = " $yformat"; -} else { - # fix bounding box problem: cutting off tic labels on left if - # no axis label -- is it gnuplot bug? we're not mangling these - $yformat = " $yformat"; -} - -if ($calc_min) { - if ($logscaley > 0) { - die "Error: logscaley does not support negative values\n" if ($min < 0); - $ymin = 1; - } elsif ($min < 0) { - # round to next lower int - if ($min < 0) { - $min = int($min - 1); - } - $ymin = $min; - $lineat .= "f(x)=0,f(x) notitle lt -1,"; # put black line at 0 - } # otherwise leave ymin at 0 -} # otherwise leave ymin at user-specified value - -########################################################################### -########################################################################### - -# add dummy labels so we can extract the bounds of the legend text -# from gnuplot's text extent calculations. -# use a prefix so we can identify, process, and remove these. -# to be really thorough we should check that no user-specified string -# matches the prefix but too unlikely. -my $dummy_prefix = "BARGRAPH_TEMP_"; -my $legend_old_fontsz = 0; -my $legend_text_widest = ""; # widest legend string -my $legend_text_width = 0; # width of widest legend string -my $legend_text_height = 0; -my $legend_prefix_width = 0; -# base to subtract prefix itself -# avoid x or y of 0 since illegal for logscale -$extra_gnuplot_cmds .= "set label \"$dummy_prefix\" at 1,1\n"; -for ($i=0; $i<$plotcount; $i++) { - # no need to reverse labels: order doesn't matter - $label = sprintf("set label \"%s%s\" at %d,1", - $dummy_prefix, $legend[$i], $i + 1); - $extra_gnuplot_cmds .= "$label\n"; -} - -########################################################################### -########################################################################### - -$use_colors=1; - -# some default fig colors -$colornm{'blue'}=1; -$colornm{'green'}=2; -$colornm{'white'}=7; -# custom colors are from 32 onward, we insert them into the fig file -# the order here is the order for 9+ datasets -$basefigcolor=32; -$numfigclrs=0; -$figcolor[$numfigclrs]="#000000"; $fig_black=$colornm{'black'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#aaaaff"; $fig_light_blue=$colornm{'light_blue'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#00aa00"; $fig_dark_green=$colornm{'dark_green'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#77ff00"; $fig_light_green=$colornm{'light_green'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#ffff00"; $fig_yellow=$colornm{'yellow'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#ff0000"; $fig_red=$colornm{'red'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#dd00ff"; $fig_magenta=$colornm{'magenta'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#0000ff"; $fig_dark_blue=$colornm{'dark_blue'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#00ffff"; $fig_cyan=$colornm{'cyan'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#dddddd"; $fig_grey=$colornm{'grey'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#6666ff"; $fig_med_blue=$colornm{'med_blue'}=$basefigcolor + $numfigclrs++; -$num_nongrayscale = $numfigclrs; -# for grayscale -$figcolor[$numfigclrs]="#222222"; $fig_grey=$colornm{'grey1'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#444444"; $fig_grey=$colornm{'grey2'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#666666"; $fig_grey=$colornm{'grey3'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#888888"; $fig_grey=$colornm{'grey4'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#aaaaaa"; $fig_grey=$colornm{'grey5'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#cccccc"; $fig_grey=$colornm{'grey6'}=$basefigcolor + $numfigclrs++; -$figcolor[$numfigclrs]="#eeeeee"; $fig_grey=$colornm{'grey7'}=$basefigcolor + $numfigclrs++; - -$figcolorins = ""; -for ($i=0; $i<=$#figcolor; $i++) { - $figcolorins .= sprintf("0 %d %s\n", 32+$i, $figcolor[$i]); -} -chomp($figcolorins); - -$colorcount = $plotcount; # re-set for color_per_datum below -if ($patterns) { - $colorcount = $max_patterns if ($color_per_datum); - for ($i=0; $i<$colorcount; $i++) { - # cycle around at max - $fillstyle[$i] = 41 + ($i % $max_patterns); - # FIXME: could combine patterns and colors, we don't bother to support that - $fillcolor[$i] = 7; # white - } -} elsif ($use_colors) { - $colorcount = $num_nongrayscale if ($color_per_datum); - # colors: all solid fill - for ($i=0; $i<$colorcount; $i++) { - $fillstyle[$i]=20; - } - if ($custom_colors) { - $colorcount = $#custom_color+1 if ($color_per_datum); - for ($i=0; $i<$colorcount; $i++) { - $fillcolor[$i]=$colornm{$custom_color[$i]}; - } - } else { - # color schemes that I tested as providing good contrast when - # printed on a non-color printer. - if ($yerrorbars && $colorcount >= 5) { - # for yerrorbars we avoid using black since the errorbars are black. - # a hack where we take the next-highest set and then remove black: - $colorcount++; - } - if ($colorcount == 1) { - $fillcolor[0]=$fig_light_blue; - } elsif ($colorcount == 2) { - $fillcolor[0]=$fig_med_blue; - $fillcolor[1]=$fig_yellow; - } elsif ($colorcount == 3) { - $fillcolor[0]=$fig_med_blue; - $fillcolor[1]=$fig_yellow; - $fillcolor[2]=$fig_red; - } elsif ($colorcount == 4) { - $fillcolor[0]=$fig_med_blue; - $fillcolor[1]=$fig_yellow; - $fillcolor[2]=$fig_dark_green; - $fillcolor[3]=$fig_red; - } elsif ($colorcount == 5) { - $fillcolor[0]=$fig_black; - $fillcolor[1]=$fig_yellow; - $fillcolor[2]=$fig_red; - $fillcolor[3]=$fig_med_blue; - $fillcolor[4]=$fig_grey; - } elsif ($colorcount == 6) { - $fillcolor[0]=$fig_black; - $fillcolor[1]=$fig_dark_green; - $fillcolor[2]=$fig_yellow; - $fillcolor[3]=$fig_red; - $fillcolor[4]=$fig_med_blue; - $fillcolor[5]=$fig_grey; - } elsif ($colorcount == 7) { - $fillcolor[0]=$fig_black; - $fillcolor[1]=$fig_dark_green; - $fillcolor[2]=$fig_yellow; - $fillcolor[3]=$fig_red; - $fillcolor[4]=$fig_dark_blue; - $fillcolor[5]=$fig_cyan; - $fillcolor[6]=$fig_grey; - } elsif ($colorcount == 8) { - $fillcolor[0]=$fig_black; - $fillcolor[1]=$fig_dark_green; - $fillcolor[2]=$fig_yellow; - $fillcolor[3]=$fig_red; - $fillcolor[4]=$fig_magenta; - $fillcolor[5]=$fig_dark_blue; - $fillcolor[6]=$fig_cyan; - $fillcolor[7]=$fig_grey; - } elsif ($colorcount == 9) { - $fillcolor[0]=$fig_black; - $fillcolor[1]=$fig_dark_green; - $fillcolor[2]=$fig_light_green; - $fillcolor[3]=$fig_yellow; - $fillcolor[4]=$fig_red; - $fillcolor[5]=$fig_magenta; - $fillcolor[6]=$fig_dark_blue; - $fillcolor[7]=$fig_cyan; - $fillcolor[8]=$fig_grey; - } else { - for ($i=0; $i<$colorcount; $i++) { - # FIXME: set to programmatic spread of custom colors - # for now we simply re-use our set of colors - $fillcolor[$i]=$basefigcolor + ($i % $num_nongrayscale); - } - } - if ($yerrorbars) { - if ($colorcount >= 5) { - # a hack where we take the next-highest set and remove black, - # which we assume to be first - die "Internal color assumption error" - if ($colorcount == 5 || $fillcolor[0] != $fig_black); - $colorcount--; - for ($i=0; $i<$colorcount; $i++) { - $fillcolor[$i] = $fillcolor[$i+1]; - } - } - # double-check we have no conflicts w/ the black error bars - for ($i=0; $i<$colorcount; $i++) { - die "Internal color assumption error" - if ($fillcolor[i] == $fig_black); - } - } - } - if ($stacked || $stackcluster) { - # reverse order for stacked since we think of bottom as "first" - for ($i=0; $i<$colorcount; $i++) { - $tempcolor[$i]=$fillcolor[$i]; - } - for ($i=0; $i<$colorcount; $i++) { - $fillcolor[$i]=$tempcolor[$colorcount-$i-1]; - } - } -} else { - $colorcount = 10 if ($color_per_datum); - # b&w fills - $bwfill[0]=5; - $bwfill[1]=10; - $bwfill[2]=2; - $bwfill[3]=14; - $bwfill[4]=7; - $bwfill[5]=13; - $bwfill[6]=3; - $bwfill[7]=9; - $bwfill[8]=4; - $bwfill[9]=11; - $bwfill[10]=6; - for ($i=0; $i<$colorcount; $i++) { - if ($stacked || $stackcluster) { - # reverse order for stacked since we think of bottom as "first" - $fillstyle[$i]=$bwfill[$colorcount-$i-1]; - } else { - $fillstyle[$i]=$bwfill[$i]; - } - $fillcolor[$i]=-1; - } -} - -# "set terminal" set the default depth to $plot_depth -# we want bars in front of rest of plot -# though we will violate that rule to fit extra datasets (> 48) -$start_depth = ($plot_depth - 2 - 2*($plotcount-1)) < 0 ? - 2*$plotcount : $plot_depth; -for ($i=0; $i<$plotcount; $i++) { - $depth[$i] = $start_depth - 2 - 2*$i; -} -if ($barsinbg) { - $plot_depth = $start_depth - 2 - 2*$plotcount; - $plot_depth = 0 if ($plot_depth < 0); -} - -########################################################################### -########################################################################### - -local (*FIG, *GNUPLOT); - -# now process the resulting figure -if ($output eq "gnuplot") { - $debug_seegnuplot = 1; -} else { - $debug_seegnuplot = 0; -} - -if ($debug_seegnuplot) { - open(GNUPLOT, "| cat") || die "Couldn't open cat\n"; -} else { - # open a bidirectional pipe to gnuplot to avoid temp files - # we can read its output back using FIG filehandle - $pid = open2(\*FIG, \*GNUPLOT, "$gnuplot_path") || die "Couldn't open2 gnuplot\n"; -} - -printf GNUPLOT " -set title '%s' -# can also pass \"fontsize 12\" to fig terminal -set terminal fig color depth %d size %4.2f %4.2f metric inches -", $title, $plot_depth, $xscale*$canvas_default_x, - $yscale*$canvas_default_y; - -printf GNUPLOT " -set xlabel '%s' %s%s -set ylabel '%s' %s%s -set xtics %s (%s) -set format y \"%s\" -", $xlabel, $gnuplot_uses_offset ? "offset " : "", $xlabelshift, -$ylabel, $gnuplot_uses_offset ? "offset " : "", $ylabelshift, -$xticsopts, $xtics, $yformat; - -printf GNUPLOT " -set boxwidth %s -set xrange [0:%.2f] -set yrange[%s:%s] -set grid %s %s -", $boxwidth, $xmax, $ymin, $ymax, $gridx, $gridy; - -if ($noupperright) { - print GNUPLOT " -set xtics nomirror -set ytics nomirror -set border 3 -"; -} - -if ($logscaley > 0) { - print GNUPLOT "set logscale y $logscaley\n"; -} -if ($extra_gnuplot_cmds ne "") { - print GNUPLOT "\n$extra_gnuplot_cmds\n"; -} - -# plot data from stdin, separate style for each so can distinguish -# in resulting fig -printf GNUPLOT "plot %s ", $lineat; -for ($g=0; $g<$groupcount; $g++) { - for ($i=0; $i<$plotcount; $i++) { - if ($i != 0 || $g != 0) { - printf GNUPLOT ", "; - } - if ($patterns) { - # newer gnuplot uses colors by default so request black w/ "lt -1" - # (xref issue 3) - printf GNUPLOT "'-' notitle with boxes fs pattern %d lt -1", - ($i % $max_patterns); - } else { - printf GNUPLOT "'-' notitle with boxes lt %d", $i+3; - } - } -} - -if ($yerrorbars) { - for ($g=0; $g<$groupcount; $g++) { - for ($i=0; $i<$plotcount; $i++) { - print GNUPLOT ", '-' notitle with boxerror lt 0"; - } - } -} -print GNUPLOT "\n"; -for ($g=0; $g<$groupcount; $g++) { - for ($i=0; $i<$plotcount; $i++) { - $line = 0; - foreach $b (@sorted) { - # support missing values in some datasets - if (defined($entry{$g,$b,$i})) { - $xval = get_xval($g, $i, $line); - print GNUPLOT "$xval, $entry{$g,$b,$i}\n"; - $line++; - } else { - print STDERR "WARNING: missing value for $b in dataset $i\n"; - $line++; - } - } - # skip over missing values to put harmean at end - $line = $bmarks_seen; - if ($use_mean) { - $xval = get_xval($g, $i, $line); - print GNUPLOT "$xval, $harmean[$i]\n"; - } - # an e separates each dataset - print GNUPLOT "e\n"; - } -} -if ($yerrorbars) { - for ($g=0; $g<$groupcount; $g++) { - for ($i=0; $i<$plotcount; $i++) { - $line = 0; - foreach $b (@sorted) { - # support missing values in some datasets - if (defined($entry{$g,$b,$i})) { - $xval = get_xval($g, $i, $line); - print GNUPLOT "$xval, $entry{$g,$b,$i}, $yerror_entry{$g,$b,$i}\n"; - $line++; - } else { - print STDERR "WARNING: missing value for $b in dataset $i\n"; - $line++; - } - } - # skip over missing values to put harmean at end - $line = $bmarks_seen; - # an e separates each dataset - print GNUPLOT "e\n"; - } - } -} - -close(GNUPLOT); - -exit if ($debug_seegnuplot); - -########################################################################### -########################################################################### - -# now process the resulting figure -if ($output eq "fig") { - $fig2dev = "cat"; -} elsif ($output eq "eps") { - $fig2dev = "$fig2dev_path -L eps -n \"$title\""; -} elsif ($output eq "pdf") { - $fig2dev = "$fig2dev_path -L pdf -n \"$title\""; -} elsif ($output eq "png") { - $fig2dev = "$fig2dev_path -L png -m 2"; - $fig2dev .= " | convert -transparent white - - " if ($png_transparent); -} else { - die "Error: unknown output type $output\n"; -} - -$debug_seefig = 0; -if ($debug_seefig) { - $fig2dev = "cat"; -} - -open(FIG2DEV, "| $fig2dev") || die "Couldn't open $fig2dev\n"; - -# fig format for polyline: -# 2 1 0 1 -1 -1 10 0 6 0.000 0 0 0 0 0 5 -# line line line fill depth fill dash join cap frwrd back -# style width color color style gap style style arrws? arrws? -# fill style: 0-20: 0=darkest, 20=pure color -# arrows have another line of stats, if present - -# fig format for text: -# 4 1 0 0 -1 0 10 1.5708 0 135 1830 1386 2588 Actual text\001 -# just depth font fontsz rotation flag boundy boundx x y -# angle(rads) -# justification: 0=center, 1=left, 2=right -# flag (or-ed together): 1=rigid, 2=special, 4=PS fonts, 8=hidden -# boundy and boundx: should be calculated from X::TextExtents but -# users won't have X11::Lib installed so we use heuristics: -# boundy: 10-pt default Times font: 75 + 30 above + 30 below -# Helvetica is 90 base -# FIXME: what about Courier? -# => 135 if both above and below line chars present, 105 if only above, etc. -# boundx: 10-pt default latex font: M=150, m=120, i=45, ave lowercase=72, ave uppercase=104 -# that's ave over alphabet, a capitalized word seems to be closer to 69 ave -# if have bounds wrong then fig2dev will get eps bounding box wrong -# font size: y increases by 15 per 2-point font increase - -if ($stackcluster && $grouplabels && $usexlabels) { - # For stackcluster we need to find the y value for the group labels - # FIXME: we assume an ordering: xlabel followed by each group label, in - # that order, else we'll mess up and need multiple passes here! - $grouplabel_y = 0; - $groupset = 0; -} - -# compute bounding boxes -$graph_min_x = $sentinel; -$graph_proper_min_x = $sentinel; # ignoring text -$graph_max_x = 0; -$graph_min_y = $sentinel; -$graph_max_y = 0; -$graph_box_width = 0; -$graph_box_max_y = 0; - -my $is_polyline = 0; - -$set = -1; -$set_raw = ""; -while () { - if ($debug_seefig_unmod) { - print FIG2DEV $_; - next; - } - - # Insert our custom fig colors - s|^1200 2$|1200 2 -$figcolorins|; - - # Convert rectangles with line style N to filled rectangles. - # We put them at depth $plot_depth. - # Look for '^2 1 ... 5' to indicate a full box w/ 5 points. - if (/^2 1 \S+ \S+ (\S+) \1 $plot_depth 0 -1(\s+\S+){6}\s+5/) { - # Rather than hardcode the styles that gnuplot uses for fig (which has - # changed), we assume the plots are in sequential order. - # We assume that the coordinates are all on the subsequent line, - # so that we can use the entire first line as our key (else we should pull - # out at least line style, line color, and dash gap). - $cur_raw = $_; - # We need to not convert the plot outline, so we assume that - # the first plot box never has a fill of 0 or -1. - $cur_fill = $1; - if ($set == -1 && ($cur_fill == 0 || $cur_fill == -1)) { - # ignore: it's the plot outline - } else { - if ($cur_raw ne $set_raw || $set == -1) { - $set++; - $set_raw = $cur_raw; - if ($set < $plotcount) { - # For repeats, match the entire line - $xlate{$_} = $set; - } - } - # There are some polylines past the last plot - if ($set < $plotcount) { - $color_idx = $color_per_datum ? ($itemcount++ % ($#fillcolor+1)) : - $set; - s|^2 1 \S+ \S+ (\S+) \1 $plot_depth 0 -1 +([0-9]+).000|2 1 0 1 -1 $fillcolor[$color_idx] $depth[$set] 0 $fillstyle[$color_idx] 0.000|; - } elsif (defined($xlate{$_})) { - $repeat = $xlate{$_}; - $color_idx = $color_per_datum ? ($itemcount++ % ($#fillcolor+1)) : - $repeat; - # Handle later repeats, like for cluster of stacked - s|^2 1 \S+ \S+ (\S+) \1 $plot_depth 0 -1 +([0-9]+).000|2 1 0 1 -1 $fillcolor[$color_idx] $depth[$repeat] 0 $fillstyle[$color_idx] 0.000|; - } - } - } - - if ($yerrorbars) { - # increase thickness of dotted line errorbars - s|^2 1 (\S+) 1 0 0 $plot_depth 0 -1 4.000 0 (\S+) 0 0 0 2|2 1 $1 1 0 0 10 0 -1 0.000 0 $2 0 0 0 2|; - } - - # Process and remove dummy strings to determine legend text bounds - if (/^4(\s+[-\d\.]+){5}\s+([\d\.]+)(\s+[-\d\.]+){2}\s+([\d\.]+)\s+([\d\.]+)\s+\d+\s+\d+\s+$dummy_prefix(.*)\\001$/) { - $legend_old_fontsz = $2; - my $boundy = $4; - my $boundx = $5; - my $text = $6; - if ($text eq "") { - $legend_prefix_width = $boundx; - } else { - $legend_text_height = $boundy if ($boundy > $legend_text_height); - if ($boundx > $legend_text_width) { - $legend_text_width = $boundx; - $legend_text_widest = $text; - } - } - s/^.*$//; - } - - if ($stackcluster && $grouplabels && $usexlabels) { - if (/^4\s+.*\s+(\d+)\s+$xlabel\\001/) { - $grouplabel_y = $1; - if ($xlabel eq $unique_xlabel) { - s/^.*$//; # remove - } else { - # HACK to push below - $newy = $grouplabel_y + 160 + &font_bb_diff_y($font_size-1, $font_size); - s/(\s+)\d+(\s+$xlabel\\001)/\1$newy\2/; - } - } - if (/^4\s+.*$groupname[$groupset]\\001/) { - s/(\s+)\d+(\s+$groupname[$groupset]\\001)/\1$grouplabel_y\2/; - $groupset++; - } - } - - # Custom fonts - if (/^(4\s+\d+\s+[-\d]+\s+\d+\s+[-\d]+)\s+[-\d]+\s+([\d\.]+)\s+([-\d\.]+)\s+(\d+)\s+([\d\.]+)\s+([\d\.]+)(\s+[-\d\.]+\s+[-\d\.]+) (.*)\\001/) { - my $prefix = $1; - my $oldsz = $2; - my $orient = $3; - my $flags = $4; - my $szy = $5; - my $szx = $6; - my $text = $8; # $7 is position - my $textlen = length($text); - my $newy = $szy + &font_bb_diff_y($oldsz, $font_size); - my $newx = $szx + $textlen * &font_bb_diff_x($oldsz, $font_size, $text); - my $newfont = defined($custfont{$text}) ? $custfont{$text} : $font_face; - s|^$prefix\s+[-\d]+\s+$oldsz\s+$orient\s+$flags\s+$szy\s+$szx|$prefix $newfont $font_size $orient $flags $newy $newx|; - } elsif (/^4/) { - print STDERR "WARNING: unknown font element $_"; - } - - if ($add_commas) { - # Add commas between 3 digits for text in thousands or millions - s|^4 (.*\d)(\d{3}\S*)\\001$|4 $1,$2\\001|; - s|^4 (.*\d)(\d{3}),(\d{3}\S*)\\001$|4 $1,$2,$3\\001|; - } - - # With gnuplot 4.2, I get a red x axis in some plots w/ negative values (but - # not all: FIXME: why?): I'm turning it to black - s|^2 1 0 1 4 4 $plot_depth|2 1 0 1 0 0 $plot_depth|; - - # Bounds: we assume for polyline on 2nd line w/ leading space - # We process after above changes so we don't see temp text, etc. - if (/^(\d+)(\s+\S+){3}\s+(\S+)\s+(\S+)(\s+\S+){2}\s+(\S+)/) { - $is_polyline = ($1 == 2); - # to rule out rectangle around entire graph: can't use just - # fill style ($6) since old gnuplot doesn't fill bars so we - # check for any of line color, fill color, or fill style - $is_bar = ($is_polyline && ($3 > 0 || $4 > 0 || $6 > -1)); - } - if ($is_polyline && /^\s+\d+/) { - my @coords = split(' ', $_); - for ($i = 0; $i <= $#coords; $i++) { - if ($i % 2 == 0) { - $graph_min_x = $coords[$i] if ($coords[$i] < $graph_min_x); - $graph_proper_min_x = $coords[$i] if ($coords[$i] < $graph_proper_min_x); - $graph_max_x = $coords[$i] if ($coords[$i] > $graph_max_x); - } else { - $graph_min_y = $coords[$i] if ($coords[$i] < $graph_min_y); - $graph_max_y = $coords[$i] if ($coords[$i] > $graph_max_y); - } - } - if ($is_bar && $#coords == 9) { # verify rectangle: 5 points - my $x1 = $sentinel; - my $y1 = $sentinel; - my $x2 = 0; - my $y2 = 0; - for ($i = 0; $i <= $#coords; $i += 2) { - $x1 = $coords[$i] if ($coords[$i] < $x1); - $x2 = $coords[$i] if ($coords[$i] > $x2); - } - for ($i = 1; $i <= $#coords; $i += 2) { - $y1 = $coords[$i] if ($coords[$i] < $y1); - $y2 = $coords[$i] if ($coords[$i] > $y2); - } - print STDERR "bar $x1,$y1 $x2,$y2 <= $_" if ($verbose); - # use x1 as the key. combine data for stacked bars. - $bardata{$x1}{"x2"} = $x2; - if (defined($bardata{$x1}{"y1"})) { - $bardata{$x1}{"y1"} = $y1 if ($y1 < $bardata{$x1}{"y1"}); - } else { - $bardata{$x1}{"y1"} = $y1; - } - $graph_box_max_y = $y2 if ($y2 > $graph_box_max_y); - my $width = $x2 - $x1; - if ($graph_box_width == 0) { - $graph_box_width = $width; - } else { - die "Boxes should not be different widths ($graph_box_width vs $width)". - ": report this!\n" - # I've seen them be different by 1 - unless (abs($width - $graph_box_width) < 5); - } - } - } - if (/^4(\s+\S+){8}\s+([-\d\.]+)\s+([-\d\.]+)\s+([-\d\.]+)\s+([-\d\.]+)/) { - # boundy,boundx x,y - # FIXME: take into account rotation! no matter the orientation, - # the text bounds are given as though the text is horizontal. - my $maxx = $3 + $4; - my $maxy = $2 + $5; - $graph_min_x = $4 if ($4 < $graph_min_x); - # ignoring fonts for max x: bounds seem to be over-estimates, and even - # if x labels stick off end, fine for legend to align w/ graph itself - $graph_min_y = $5 if ($5 < $graph_min_y); - $graph_max_y = $maxy if ($maxy > $graph_max_y); - } - - print FIG2DEV $_; -} - -print STDERR "bounds are $graph_min_x,$graph_min_y $graph_max_x,$graph_max_y\n" - if ($verbose); - -# add the legend -if ($use_legend && $plotcount > 1) { - # first, compute bounding box of legend - $legend_text_width -= $legend_prefix_width; - # default is one smaller than main font so legend not so big - $legend_font_size = $font_size - 1 if ($legend_font_size == 0); - my $maxlen = 0; - for ($i=0; $i<$plotcount; $i++) { - $leglen = length $legend[$i]; - $maxlen = $leglen if ($leglen > $maxlen); - } - my $border = 50; - my $key_box_width = 121; - my $key_box_height = 116; - my $key_text_pre_space = 104; - # this should really be derived from $legend_text_height - my $key_text_line_space = 157; - my $legend_width = $border*2 + $key_box_width + $key_text_pre_space + - $legend_text_width + - $maxlen*&font_bb_diff_x($legend_old_fontsz, $legend_font_size, - $legend_text_widest); - my $legend_height = $border*2 + $plotcount*$key_text_line_space - # subtract off the extra spacing after bottom box - - ($key_text_line_space - $key_box_height); - # to get text centered where box is, shift from bottom of box - my $key_text_yshift = -5; - - my $ly = $sentinel; - my $lx = $sentinel; - - # decision: do not scale by $scalex,$scaley b/c font not scaled elsewhere - - # try to fit inside the graph - if ($legendx eq 'inside') { - my $xstart = $sentinel; - my $lastx2 = $sentinel; - my $ytall = $sentinel; - printf STDERR "legend bounds are $legend_width,$legend_height\n" if ($verbose); - foreach $x (sort (keys %bardata)) { - # we use $border*2 as a fudge factor to move below the top - # line and top x tics - die "X value $x >= sentinel!\n" if ($x >= $sentinel); - die "Y value >= sentinel!\n" if ($bardata{$x}{"y1"} >= $sentinel); - $shift = $noupperright ? 0 : $border*3; - printf STDERR "bar @ x1=$x,y=%d\n", $bardata{$x}{"y1"} if ($verbose); - if ($graph_min_y + $shift + $legend_height + $border*2 < $bardata{$x}{"y1"}) { - if ($xstart == $sentinel) { - # include space between bars: use the last bad x2, or if none, - # use the y axis (which is what $graph_proper_min_x should be) - $xstart = ($lastx2 == $sentinel) ? $graph_proper_min_x : $lastx2; - } - $ytall = $bardata{$x}{"y1"} if ($bardata{$x}{"y1"} < $ytall); - } else { - if ($xstart != $sentinel && - $x - $xstart > $legend_width + $border*2) { - printf STDERR "legend fits inside $xstart,$x\n" if ($verbose); - # center in the space - $lx = ($xstart + $x - $legend_width)/2; - $ly = (($graph_min_y + $shift) + - ($ytall - $legend_height - $border*2)) / 2; - # keep going: prefer right-most spot - } - $xstart = $sentinel; - } - $lastx2 = $bardata{$x}{"x2"}; - } - if ($xstart != $sentinel && - # $graph_max_x should be right-hand y axis - $graph_max_x - $xstart > $legend_width + $border*2) { - printf STDERR "legend fits inside $xstart,$graph_max_x\n" if ($verbose); - # center in the space - $lx = ($xstart + $graph_max_x - $legend_width)/2; - $ly = (($graph_min_y + $shift) + - ($ytall - $legend_height - $border*2)) / 2; - } - } - - if ($lx == $sentinel) { # if legendx=inside matches, it sets $lx - if ($legendx eq 'inside') { - # if inside fails, use top - $legendx = 'center'; - $legendy = 'top'; - } - if ($legendx eq 'right') { - $lx = $graph_max_x + $border*2; - } elsif ($legendx eq 'center') { - $lx = ($graph_max_x - $graph_proper_min_x - $legend_width) / 2 + - $graph_proper_min_x; - } else { - die "Invalid legendx value $legendx\n" unless ($legendx =~ /^\d+$/); - $lx = $legendx; - } - } - if ($ly == $sentinel) { # if legendx=inside matches, it sets $ly - if ($legendy eq 'top') { - $ly = $graph_min_y - $legend_height - $border*2; - } elsif ($legendy eq 'center') { - # center vertically considering only the graph area, not the labels beneath - $ly = ($graph_box_max_y - $graph_min_y - $legend_height) / 2 + $graph_min_y; - } else { - die "Invalid legendy value $legendy\n" unless ($legendy =~ /\d+/); - $ly = $legendy; - } - } - - print STDERR "legend at $lx,$ly ($outer_space)\n" if ($verbose); - - # draw boxes w/ appropriate colors - for ($i=0; $i<$plotcount; $i++) { - $dy = $i * $key_text_line_space; - printf FIG2DEV -"2 1 0 1 -1 $fillcolor[$i] $legend_depth 0 $fillstyle[$i] 0.000 0 0 0 0 0 5 -\t %d %d %d %d %d %d %d %d %d %d -", $lx+$border, $ly+$border+$key_box_height+$dy, - $lx+$border, $ly+$border+$dy, - $lx+$border+$key_box_width, $ly+$border+$dy, - $lx+$border+$key_box_width, $ly+$border+$key_box_height+$dy, - $lx+$border, $ly+$border+$key_box_height+$dy; - } - # legend text - for ($i=0; $i<$plotcount; $i++) { - # legend was never reversed, reverse it here - if ($stacked || $stackcluster) { - $legidx = $plotcount - 1 - $i; - } else { - $legidx = $i; - } - # bounds are important if legend on right to get bounding box - # for simplicity we give each line the bounds of longest line - $leglen = length $legend[$legidx]; - $maxlen = $leglen if ($leglen > $maxlen); - printf FIG2DEV -"4 0 0 %d 0 %d %d 0.0000 4 %d %d %d %d %s\\001 -", $legend_depth, $font_face, $legend_font_size, -$legend_text_height + &font_bb_diff_y($legend_old_fontsz, $legend_font_size), -$legend_text_width + $leglen*&font_bb_diff_x($legend_old_fontsz, $legend_font_size, - $legend[$legidx]), -$lx+$border+$key_box_width+$key_text_pre_space, -$ly+$border+$key_box_height+$key_text_yshift+$key_text_line_space*$i, -$legend[$legidx]; - } - if ($legend_fill ne '' || $legend_outline) { - # background fill for legend box - my $fill_color; - if ($legend_fill eq '') { - $fill_color = $colornm{'white'}; - } else { - if (defined($colornm{$legend_fill})) { - $fill_color = $colornm{$legend_fill}; - } else { - print STDERR "WARNING: unknown color $legend_fill\n"; - $fill_color = $colornm{'white'}; - } - } - my $fill_style = ($legend_fill eq '') ? -1 : 20; - my $x1 = $lx; - my $x2 = $x1 + $legend_width; - my $y1 = $ly; - my $y2 = $y1 + $legend_height; - printf FIG2DEV - "2 2 0 $legend_outline 0 $fill_color %d 0 $fill_style 0.000 0 0 0 0 0 5 -\t %d %d %d %d %d %d %d %d %d %d -", $legend_depth + 1, # UNDER legend - $x1,$y1, $x2,$y1, $x2,$y2, $x1,$y2, $x1,$y1; - } -} - -close(FIG); -close(FIG2DEV); - -waitpid($pid, 0); - -########################################################################### -########################################################################### - -# supporting subroutines - -sub get_val($, $) -{ - my ($val, $idx) = @_; - if ($invert) { - $val = 1/$val; - } - if ($use_mean) { - if ($arithmean) { - $harsum[$idx] += $val; - } else { - die "Harmonic mean cannot be computed with a value of 0!" if ($val == 0); - $harsum[$idx] += 1/$val; - } - $harnum[$idx]++; - } - if ($datasub != 0) { - $val -= $datasub; - } - if ($datascale != 1) { - $val *= $datascale; - } - if ($percent) { - $val = ($val - 1) * 100; - } elsif ($base1) { - $val = ($val - 1); - } - if (!defined($min)) { - $min = $val; - } elsif ($val < $min) { - $min = $val; - } - return $val; -} - -sub get_xval($, $, $) -{ - # item ranges from 0..plotcount-1 - my ($gset, $dset, $item) = @_; - my $xvalue; - if ($stacked || $clustercount == 1) { - $xvalue = &cluster_xval($item, 0); - } elsif ($stackcluster) { - $xvalue = &cluster_xval($gset, $item); - } else { - $xvalue = &cluster_xval($item, $dset); - } - return $xvalue; -} - -sub cluster_xval($, $) -{ - my ($base, $dset) = @_; - return $outer_space + $boxwidth/2. + - $base*($clustercount*$boxwidth + $intra_space) + - $dset*$boxwidth; -} - -sub sort_bmarks() -{ - return ((&bmark_group($a) <=> &bmark_group($b)) or ($a cmp $b)); -} - -sub bmark_group($) -{ - my ($bmark) = @_; - return 1 if ($bmarks_fp =~ $bmark); - return 2 if ($bmarks_int =~ $bmark); - return 3 if ($bmarks_jvm =~ $bmark); - return 4; # put unknowns at end -} - -sub font_bb_diff_y($,$) -{ - my ($oldsz, $newsz) = @_; - # This is an inadequate hack: font bounding boxes vary - # by 15 per 2-point font size change for smaller chars, but up - # to 30 per 2-point font size for larger chars. We try to use a - # single value here for all chars. Overestimating is better than under. - # And of course any error accumulates over larger sizes. - # The real way is to call XTextExtents. - $diff = ($newsz - $oldsz)*15*$bbfudge; - if ($font_face >= $fig_font{'Helvetica'} && - $font_face <= $fig_font{'Helvetica Narrow Bold Oblique'}) { - $diff += 15*$bbfudge; # extra height for Helvetica - } - return &ceil($diff); -} - -sub font_bb_diff_x($,$,$) -{ - my ($oldsz, $newsz, $text) = @_; - # This is an inadequate hack: font bounding boxes vary - # by 15 per 2-point font size change for smaller chars, but up - # to 30 per 2-point font size for larger chars. We try to use a - # single value here for all chars. Overestimating is better than under. - # And of course any error accumulates over larger sizes. - # The real way is to call XTextExtents. - my $scale = ($newsz < 8) ? 9 : 10; - # FIXME issue #15: even using gnuplot to add the text and then - # taking its bounding box is inaccurate for capital letters: is - # gnuplot calling XTextExtents incorrectly? For now we have a - # hack to compensate. - my $numcaps = () = ($text =~ /[A-Z][A-Z]/g); # only consecutive caps - my $numwidecaps = () = ($text =~ /[MWL][A-Z]/g); # L b/c l is so narrow - # really hacky: but long strings of caps seem to not need as much - $numcaps = $numcaps/2 if ($numcaps > 4); - $numwidecaps = $numwidecaps/2 if ($numwidecaps > 4); - return &ceil(($newsz - $oldsz)*$scale*$bbfudge + $numcaps*5 + $numwidecaps*3); -} - -sub ceil { - my ($n) = @_; - return int($n + ($n <=> 0)); -} diff --git a/regtests/bench/add.py b/regtests/bench/add.py deleted file mode 100644 index 98c5378..0000000 --- a/regtests/bench/add.py +++ /dev/null @@ -1,17 +0,0 @@ -''' -loop and add (integer) -''' - -from time import clock - - -def main(): - if PYTHON=='PYTHONJS': ## about 25% faster with normal and javascript backends - pythonjs.configure( direct_operator='+' ) - pass - - start = clock() - a = 0 - for i in range(10000000): - a = 1 + 2 - print(clock()-start) diff --git a/regtests/bench/copy_list.py b/regtests/bench/copy_list.py deleted file mode 100644 index 02a2c71..0000000 --- a/regtests/bench/copy_list.py +++ /dev/null @@ -1,29 +0,0 @@ -'''copy list micro benchmark''' - -from time import time - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pythonjs.configure( direct_keys=True ) - pass - - a = list(range(1000)) - times = [] - for i in range(4): - t0 = time() - res = copy_list(a, 10000) - tk = time() - times.append(tk - t0) - avg = sum(times) / len(times) - print(avg) - -def copy_list( a, n ): - x = [] - for i in range(n): - b = a[:] - for j in range(10): - b.append( j ) - x.append( b ) - return x - diff --git a/regtests/bench/fannkuch.py b/regtests/bench/fannkuch.py deleted file mode 100644 index 222695f..0000000 --- a/regtests/bench/fannkuch.py +++ /dev/null @@ -1,74 +0,0 @@ -# The Computer Language Benchmarks Game -# http://shootout.alioth.debian.org/ -# -# contributed by Sokolov Yura -# modified by Tupteq -# modified by hartsantler 2014 - -from time import time - -DEFAULT_ARG = 9 - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pythonjs.configure( direct_keys=True ) - pass - - times = [] - for i in range(4): - t0 = time() - #res = fannkuch(DEFAULT_ARG) - res = fannkuch(8) - tk = time() - times.append(tk - t0) - avg = sum(times) / len(times) - print(avg) - -def fannkuch(n): - count = range(1, n+1) - max_flips = 0 - m = n-1 - r = n - check = 0 - perm1 = range(n) - perm = range(n) - #perm1_ins = perm1.insert - #perm1_pop = perm1.pop - if PYTHON=='PYTHON3': - count = list(count) - perm1 = list(perm1) - perm = list(perm) - - while True: - if check < 30: - check += 1 - - while r != 1: - count[r-1] = r - r -= 1 - - if perm1[0] != 0 and perm1[m] != m: - perm = perm1[:] - flips_count = 0 - k = perm[0] - #while k: ## TODO fix for dart - while k != 0: - perm[:k+1] = perm[k::-1] - flips_count += 1 - k = perm[0] - - if flips_count > max_flips: - max_flips = flips_count - - while r != n: - #perm1_ins(r, perm1_pop(0)) - perm1.insert(r, perm1.pop(0)) - count[r] -= 1 - if count[r] > 0: - break - r += 1 - else: - return max_flips - - diff --git a/regtests/bench/float.py b/regtests/bench/float.py deleted file mode 100644 index f3869e2..0000000 --- a/regtests/bench/float.py +++ /dev/null @@ -1,69 +0,0 @@ -''' -float numbers -''' - -from time import clock -from math import sin, cos, sqrt - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pythonjs.configure( direct_operator='*' ) - pythonjs.configure( direct_keys=True ) - pass - - times = test( 3 ) - avg = sum(times) / len(times) - print( avg ) - - -class Point(object): - - def __init__(self, i): - self.x = sin(i) - self.y = cos(i) * 3 - self.z = (self.x * self.x) / 2 - - def __repr__(self): - return "Point: x=%s, y=%s, z=%s" % (self.x, self.y, self.z) - - def normalize(self): - norm = sqrt(self.x * self.x + self.y * self.y + self.z * self.z) - self.x /= norm - self.y /= norm - self.z /= norm - - def maximize(self, other): - if self.x < other.x: self.x = other.x - if self.y < other.y: self.y = other.y - if self.z < other.z: self.z = other.z - return self - - -def maximize(points): - next = points[0] - for p in points[1:]: - assert isinstance(p, Point) - next = next.maximize(p) - return next - -def benchmark(n): - points = [None] * n - for i in range(n): - points[i] = Point(i) - for p in points: - assert isinstance(p, Point) - p.normalize() - return maximize(points) - -POINTS = 100000 - -def test(arg): - times = [] - for i in range(arg): - t0 = clock() - o = benchmark(POINTS) - tk = clock() - times.append(tk - t0) - return times - diff --git a/regtests/bench/mandelbrot.py b/regtests/bench/mandelbrot.py deleted file mode 100644 index 9692a91..0000000 --- a/regtests/bench/mandelbrot.py +++ /dev/null @@ -1,60 +0,0 @@ -"""mandelbrot benchmark""" -from time import time - -def pprint(arr, w): - x = [] - for a in arr: - x.append(a) - if len(x) >= w: - print( [ round(y,2) for y in x] ) - x = [] - -def mandelbrot_numpy(size=512, exit_limit=100): - img_array = numpy.zeros([size, size], int) - for y in range(size): - for x in range(size): - c = complex(x / float(size) * 4 - 2, - y / float(size) * 4 - 2) - z = c - for i in range(exit_limit): - z = (z**2) + c - img_array[y, x] += 1 - if abs(z) > 2: - # z is escaping to infinity, so point is not in set - break - else: - # if loop is exausted, point is inside the set - img_array[y, x] = 0 - return img_array - - -def main(): - - @returns( array=[512,512] ) - @typedef( x=float, y=float, tempX=float, i=int, runaway=int, c=vec2) - @gpu.main - def gpufunc(): - c = get_global_id() - x = 0.0 - y = 0.0 - tempX = 0.0 - i = 0 - runaway = 0 - for i in range(100): - tempX = x * x - y * y + float(c.x) - y = 2.0 * x * y + float(c.y) - x = tempX - if runaway == 0 and x * x + y * y > 100.0: - runaway = i - - return float(runaway) * 0.01 - - start = time() - - if PYTHON == 'PYTHONJS': - res = gpufunc() - #pprint(res, 32) - else: - res = mandelbrot_numpy() - - print(time()-start) diff --git a/regtests/bench/nbody.py b/regtests/bench/nbody.py deleted file mode 100644 index 8f9a843..0000000 --- a/regtests/bench/nbody.py +++ /dev/null @@ -1,162 +0,0 @@ -''' -nbody sim -''' -from time import time - -# Pulled from http://shootout.alioth.debian.org/u64q/benchmark.php?test=nbody&lang=python&id=4 -# Contributed by Kevin Carson. -# Modified by Tupteq, Fredrik Johansson, and Daniel Nanz. - - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pythonjs.configure( direct_operator='*' ) - pythonjs.configure( direct_keys=True ) - pass - - times = test_nbody( 3 ) - avg = sum( times ) / 3.0 - print( avg ) - - - - -def combinations(l): - """Pure-Python implementation of itertools.combinations(l, 2).""" - result = [] - for x in range(len(l) - 1): - ls = l[x+1:] - for y in ls: - result.append((l[x],y)) - return result - - -PI = 3.14159265358979323 -SOLAR_MASS = 4 * PI * PI -DAYS_PER_YEAR = 365.24 - -BODIES = { - 'sun': ([0.0, 0.0, 0.0], [0.0, 0.0, 0.0], SOLAR_MASS), - - 'jupiter': ([4.84143144246472090e+00, - -1.16032004402742839e+00, - -1.03622044471123109e-01], - [1.66007664274403694e-03 * DAYS_PER_YEAR, - 7.69901118419740425e-03 * DAYS_PER_YEAR, - -6.90460016972063023e-05 * DAYS_PER_YEAR], - 9.54791938424326609e-04 * SOLAR_MASS), - - 'saturn': ([8.34336671824457987e+00, - 4.12479856412430479e+00, - -4.03523417114321381e-01], - [-2.76742510726862411e-03 * DAYS_PER_YEAR, - 4.99852801234917238e-03 * DAYS_PER_YEAR, - 2.30417297573763929e-05 * DAYS_PER_YEAR], - 2.85885980666130812e-04 * SOLAR_MASS), - - 'uranus': ([1.28943695621391310e+01, - -1.51111514016986312e+01, - -2.23307578892655734e-01], - [2.96460137564761618e-03 * DAYS_PER_YEAR, - 2.37847173959480950e-03 * DAYS_PER_YEAR, - -2.96589568540237556e-05 * DAYS_PER_YEAR], - 4.36624404335156298e-05 * SOLAR_MASS), - - 'neptune': ([1.53796971148509165e+01, - -2.59193146099879641e+01, - 1.79258772950371181e-01], - [2.68067772490389322e-03 * DAYS_PER_YEAR, - 1.62824170038242295e-03 * DAYS_PER_YEAR, - -9.51592254519715870e-05 * DAYS_PER_YEAR], - 5.15138902046611451e-05 * SOLAR_MASS) } - - - - - -def advance(dt, n, bodies, pairs): - for i in range(n): - for pair in pairs: - p1,p2 = pair - vec1, v1, m1 = p1 - vec2, v2, m2 = p2 - x1, y1, z1 = vec1 - x2, y2, z2 = vec2 - - dx = x1 - x2 - dy = y1 - y2 - dz = z1 - z2 - mag = dt * ((dx * dx + dy * dy + dz * dz) ** (-1.5)) - b1m = m1 * mag - b2m = m2 * mag - v1[0] -= dx * b2m - v1[1] -= dy * b2m - v1[2] -= dz * b2m - v2[0] += dx * b1m - v2[1] += dy * b1m - v2[2] += dz * b1m - - for w in bodies: - r, v, m = w - r[0] += dt * v[0] - r[1] += dt * v[1] - r[2] += dt * v[2] - - -def report_energy(bodies, pairs): - e = 0.0 - for pair in pairs: - p1,p2 = pair - vec1, v1, m1 = p1 - vec2, v2, m2 = p2 - x1, y1, z1 = vec1 - x2, y2, z2 = vec2 - - dx = x1 - x2 - dy = y1 - y2 - dz = z1 - z2 - e -= (m1 * m2) / ((dx * dx + dy * dy + dz * dz) ** 0.5) - - for w in bodies: - r, v, m = w - vx, vy, vz = v - #e += m * (vx * vx + vy * vy + vz * vz) / 2.0 ## TODO fix this - a = vx * vx + vy * vy + vz * vz - a /= 2.0 - e += m * a - return e - - -def offset_momentum(ref, bodies, px=0.0, py=0.0, pz=0.0): - for w in bodies: - r, v, m = w - vx, vy, vz = v - - px -= vx * m - py -= vy * m - pz -= vz * m - (r, v, m) = ref - v[0] = px / m - v[1] = py / m - v[2] = pz / m - - -def test_nbody(iterations): - SYSTEM = [] - for key in BODIES: SYSTEM.append( BODIES[key] ) - PAIRS = combinations(SYSTEM) - - times = [] - for _ in range(iterations): - t0 = time() - start_e = report_energy( SYSTEM, PAIRS ) - advance(0.01, 20000, SYSTEM, PAIRS) - end_e = report_energy( SYSTEM, PAIRS ) - t1 = time() - print('#start energy:', start_e) - print('#end energy:', end_e) - times.append(t1 - t0) - return times - - diff --git a/regtests/bench/new_list.py b/regtests/bench/new_list.py deleted file mode 100644 index 316466c..0000000 --- a/regtests/bench/new_list.py +++ /dev/null @@ -1,23 +0,0 @@ -'''new list micro benchmark''' - -from time import time - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pythonjs.configure( direct_keys=True ) - pass - - times = [] - a = [] - for i in range(10): - t0 = time() - for j in range(100000): - b = [1,2,3,4,5,6,7,8,9] - a.append( b ) - tk = time() - times.append(tk - t0) - avg = sum(times) / len(times) - print(avg) - - diff --git a/regtests/bench/pystone.py b/regtests/bench/pystone.py deleted file mode 100644 index bea191e..0000000 --- a/regtests/bench/pystone.py +++ /dev/null @@ -1,252 +0,0 @@ -''' -pystone -''' - -from time import clock -__version__ = "1.1" - - -def main(): - LOOPS = 100000 - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pythonjs.configure( direct_operator='*' ) - pythonjs.configure( direct_keys=True ) - pass - a = pystones( LOOPS ) - benchtime = a[0] - stones = a[1] - print( benchtime ) - print("#Pystone(%s) time for %s passes = %s" % (__version__, LOOPS, benchtime)) - print("#This machine benchmarks at pystones/second: %s" %stones) - - -def pystones(loops): - return Proc0(loops) - - -class Record: - - def __init__(self, PtrComp = None, Discr = 0, EnumComp = 0, IntComp = 0, StringComp = 0): - self.PtrComp = PtrComp - self.Discr = Discr - self.EnumComp = EnumComp - self.IntComp = IntComp - self.StringComp = StringComp - - def copy(self): - return Record( - PtrComp=self.PtrComp, - Discr=self.Discr, - EnumComp=self.EnumComp, - IntComp=self.IntComp, - StringComp=self.StringComp - ) - -TRUE = 1 -FALSE = 0 -IntGlob = 0 -BoolGlob = FALSE -Char1Glob = '\0' -Char2Glob = '\0' -PtrGlb = None -PtrGlbNext = None - -Ident1 = 1 -Ident2 = 2 -Ident3 = 3 -Ident4 = 4 -Ident5 = 5 - -def create_array1glob(n): - return [0]*51 - -def create_array2glob(n): - return [ Array1Glob[:] for i in range(n) ] - -Array1Glob = [0]*51 -Array2Glob = create_array2glob(51) - - - -def Proc0(loops): - global IntGlob - global BoolGlob - global Char1Glob - global Char2Glob - global Array1Glob - global Array2Glob - global PtrGlb - global PtrGlbNext - - starttime = clock() - for i in range(loops): - pass - nulltime = clock() - starttime - - PtrGlbNext = Record( PtrComp=None, Discr=0, EnumComp=0, IntComp=0, StringComp=0 ) - PtrGlb = Record( - PtrComp=PtrGlbNext, - Discr=Ident1, - EnumComp=Ident3, - IntComp=40, - StringComp="DHRYSTONE PROGRAM, SOME STRING" - ) - - String1Loc = "DHRYSTONE PROGRAM, 1'ST STRING" - Array2Glob[8][7] = 10 - - starttime = clock() - - for i in range(loops): - Proc5() - Proc4() - IntLoc1 = 2 - IntLoc2 = 3 - String2Loc = "DHRYSTONE PROGRAM, 2'ND STRING" - EnumLoc = Ident2 - BoolGlob = not Func2(String1Loc, String2Loc) - while IntLoc1 < IntLoc2: - IntLoc3 = 5 * IntLoc1 - IntLoc2 - IntLoc3 = Proc7(IntLoc1, IntLoc2) - IntLoc1 = IntLoc1 + 1 - Proc8(Array1Glob, Array2Glob, IntLoc1, IntLoc3) - PtrGlb = Proc1(PtrGlb) - CharIndex = 'A' - while CharIndex <= Char2Glob: - if EnumLoc == Func1(CharIndex, 'C'): - EnumLoc = Proc6(Ident1) - CharIndex = chr(ord(CharIndex)+1) - IntLoc3 = IntLoc2 * IntLoc1 - IntLoc2 = IntLoc3 / IntLoc1 - IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1 - IntLoc1 = Proc2(IntLoc1) - - benchtime = clock() - starttime - nulltime - if benchtime == 0.0: - loopsPerBenchtime = 0.0 - else: - loopsPerBenchtime = (loops / benchtime) - return benchtime, loopsPerBenchtime - -def Proc1(PtrParIn): - NextRecord = PtrGlb.copy() - PtrParIn.PtrComp = NextRecord - PtrParIn.IntComp = 5 - NextRecord.IntComp = PtrParIn.IntComp - NextRecord.PtrComp = PtrParIn.PtrComp - NextRecord.PtrComp = Proc3(NextRecord.PtrComp) - if NextRecord.Discr == Ident1: - NextRecord.IntComp = 6 - NextRecord.EnumComp = Proc6(PtrParIn.EnumComp) - NextRecord.PtrComp = PtrGlb.PtrComp - NextRecord.IntComp = Proc7(NextRecord.IntComp, 10) - else: - PtrParIn = NextRecord.copy() - NextRecord.PtrComp = None - return PtrParIn - -def Proc2(IntParIO): - IntLoc = IntParIO + 10 - while True: - if Char1Glob == 'A': - IntLoc = IntLoc - 1 - IntParIO = IntLoc - IntGlob - EnumLoc = Ident1 - if EnumLoc == Ident1: - break - return IntParIO - -def Proc3(PtrParOut): - global IntGlob - - if PtrGlb is not None: - PtrParOut = PtrGlb.PtrComp - else: - IntGlob = 100 - PtrGlb.IntComp = Proc7(10, IntGlob) - return PtrParOut - -def Proc4(): - global Char2Glob - - BoolLoc = Char1Glob == 'A' - BoolLoc = BoolLoc or BoolGlob - Char2Glob = 'B' - -def Proc5(): - global Char1Glob - global BoolGlob - - Char1Glob = 'A' - BoolGlob = FALSE - -def Proc6(EnumParIn): - EnumParOut = EnumParIn - if not Func3(EnumParIn): - EnumParOut = Ident4 - if EnumParIn == Ident1: - EnumParOut = Ident1 - elif EnumParIn == Ident2: - if IntGlob > 100: - EnumParOut = Ident1 - else: - EnumParOut = Ident4 - elif EnumParIn == Ident3: - EnumParOut = Ident2 - elif EnumParIn == Ident4: - pass - elif EnumParIn == Ident5: - EnumParOut = Ident3 - return EnumParOut - -def Proc7(IntParI1, IntParI2): - IntLoc = IntParI1 + 2 - IntParOut = IntParI2 + IntLoc - return IntParOut - -def Proc8(Array1Par, Array2Par, IntParI1, IntParI2): - global IntGlob - - IntLoc = IntParI1 + 5 - Array1Par[IntLoc] = IntParI2 - Array1Par[IntLoc+1] = Array1Par[IntLoc] - Array1Par[IntLoc+30] = IntLoc - for IntIndex in range(IntLoc, IntLoc+2): - Array2Par[IntLoc][IntIndex] = IntLoc - Array2Par[IntLoc][IntLoc-1] = Array2Par[IntLoc][IntLoc-1] + 1 - Array2Par[IntLoc+20][IntLoc] = Array1Par[IntLoc] - IntGlob = 5 - -def Func1(CharPar1, CharPar2): - CharLoc1 = CharPar1 - CharLoc2 = CharLoc1 - if CharLoc2 != CharPar2: - return Ident1 - else: - return Ident2 - -def Func2(StrParI1, StrParI2): - IntLoc = 1 - while IntLoc <= 1: - if Func1(StrParI1[IntLoc], StrParI2[IntLoc+1]) == Ident1: - CharLoc = 'A' - IntLoc = IntLoc + 1 - if CharLoc >= 'W' and CharLoc <= 'Z': - IntLoc = 7 - if CharLoc == 'X': - return TRUE - else: - if StrParI1 > StrParI2: - IntLoc = IntLoc + 7 - return TRUE - else: - return FALSE - -def Func3(EnumParIn): - EnumLoc = EnumParIn - if EnumLoc == Ident3: return TRUE - return FALSE - - - diff --git a/regtests/bench/recursive_fib.py b/regtests/bench/recursive_fib.py deleted file mode 100644 index e4e6471..0000000 --- a/regtests/bench/recursive_fib.py +++ /dev/null @@ -1,21 +0,0 @@ -''' -Fibonacci Sequence -''' - -from time import clock - -def main(): - if PYTHON=='PYTHONJS': ## about 25% faster with normal and javascript backends - pythonjs.configure( direct_operator='+' ) - pass - - start = clock() - a = F( 32 ) - print(clock()-start) - - -def F(n): - if n == 0: return 0 - elif n == 1: return 1 - else: return F(n-1)+F(n-2) - diff --git a/regtests/bench/richards.py b/regtests/bench/richards.py deleted file mode 100644 index 4d07a28..0000000 --- a/regtests/bench/richards.py +++ /dev/null @@ -1,416 +0,0 @@ -''' -Richards -''' - -# based on a Java version: -# Based on original version written in BCPL by Dr Martin Richards -# in 1981 at Cambridge University Computer Laboratory, England -# and a C++ version derived from a Smalltalk version written by -# L Peter Deutsch. -# Java version: Copyright (C) 1995 Sun Microsystems, Inc. -# Translation from C++, Mario Wolczko -# Outer loop added by Alex Jacoby - -from time import time - -# Task IDs -I_IDLE = 1 -I_WORK = 2 -I_HANDLERA = 3 -I_HANDLERB = 4 -I_DEVA = 5 -I_DEVB = 6 - -# Packet types -K_DEV = 1000 -K_WORK = 1001 - -# Packet - -BUFSIZE = 4 - -BUFSIZE_RANGE = range(BUFSIZE) - -class Packet(object): - def __init__(self,l,i,k): - self.link = l - self.ident = i - self.kind = k - self.datum = 0 - self.data = [0] * BUFSIZE - - def append_to(self,lst): - self.link = None - if lst is None: - return self - else: - p = lst - next = p.link - while next is not None: - p = next - next = p.link - p.link = self - return lst - -# Task Records - -class TaskRec(object): - pass - -class DeviceTaskRec(TaskRec): - def __init__(self): - self.pending = None - -class IdleTaskRec(TaskRec): - def __init__(self): - self.control = 1 - self.count = 10000 - -class HandlerTaskRec(TaskRec): - def __init__(self): - self.work_in = None - self.device_in = None - - def workInAdd(self,p): - self.work_in = p.append_to(self.work_in) - return self.work_in - - def deviceInAdd(self,p): - self.device_in = p.append_to(self.device_in) - return self.device_in - -class WorkerTaskRec(TaskRec): - def __init__(self): - self.destination = I_HANDLERA - self.count = 0 -# Task - -class TaskState(object): - def __init__(self): - self.packet_pending = True - self.task_waiting = False - self.task_holding = False - - def packetPending(self): - self.packet_pending = True - self.task_waiting = False - self.task_holding = False - return self - - def waiting(self): - self.packet_pending = False - self.task_waiting = True - self.task_holding = False - return self - - def running(self): - self.packet_pending = False - self.task_waiting = False - self.task_holding = False - return self - - def waitingWithPacket(self): - self.packet_pending = True - self.task_waiting = True - self.task_holding = False - return self - - def isPacketPending(self): - return self.packet_pending - - def isTaskWaiting(self): - return self.task_waiting - - def isTaskHolding(self): - return self.task_holding - - def isTaskHoldingOrWaiting(self): - return self.task_holding or (not self.packet_pending and self.task_waiting) - - def isWaitingWithPacket(self): - return self.packet_pending and self.task_waiting and not self.task_holding - - - - - -tracing = False -layout = 0 - -def trace(a): - global layout - layout -= 1 - if layout <= 0: - print() - layout = 50 - print(a) - - -TASKTABSIZE = 10 - -class TaskWorkArea(object): - def __init__(self): - self.taskTab = [None] * TASKTABSIZE - - self.taskList = None - - self.holdCount = 0 - self.qpktCount = 0 - -taskWorkArea = TaskWorkArea() - -class Task(TaskState): - - - def __init__(self,i,p,w,initialState,r): - self.link = taskWorkArea.taskList - self.ident = i - self.priority = p - self.input = w - - self.packet_pending = initialState.isPacketPending() - self.task_waiting = initialState.isTaskWaiting() - self.task_holding = initialState.isTaskHolding() - - self.handle = r - - taskWorkArea.taskList = self - taskWorkArea.taskTab[i] = self - - def fn(self,pkt,r): - #raise NotImplementedError - print('NotImplementedError') - - def addPacket(self,p,old): - if self.input is None: - self.input = p - self.packet_pending = True - if self.priority > old.priority: - return self - else: - p.append_to(self.input) - return old - - - def runTask(self): - if self.isWaitingWithPacket(): - msg = self.input - self.input = msg.link - if self.input is None: - self.running() - else: - self.packetPending() - else: - msg = None - - return self.fn(msg,self.handle) - - - def waitTask(self): - self.task_waiting = True - return self - - - def hold(self): - taskWorkArea.holdCount += 1 - self.task_holding = True - return self.link - - - def release(self,i): - t = self.findtcb(i) - t.task_holding = False - if t.priority > self.priority: - return t - else: - return self - - - def qpkt(self,pkt): - t = self.findtcb(pkt.ident) - taskWorkArea.qpktCount += 1 - pkt.link = None - pkt.ident = self.ident - return t.addPacket(pkt,self) - - - def findtcb(self,id): - t = taskWorkArea.taskTab[id] - if t is None: - print('Exception in findtcb') - return t - - -# DeviceTask - - -class DeviceTask(Task): - def __init__(self,i,p,w,s,r): - Task.__init__(self,i,p,w,s,r) - - def fn(self,pkt,r): - d = r - assert isinstance(d, DeviceTaskRec) - if pkt is None: - pkt = d.pending - if pkt is None: - return self.waitTask() - else: - d.pending = None - return self.qpkt(pkt) - else: - d.pending = pkt - if tracing: trace(pkt.datum) - return self.hold() - - - -class HandlerTask(Task): - def __init__(self,i,p,w,s,r): - Task.__init__(self,i,p,w,s,r) - - def fn(self,pkt,r): - h = r - assert isinstance(h, HandlerTaskRec) - if pkt is not None: - if pkt.kind == K_WORK: - h.workInAdd(pkt) - else: - h.deviceInAdd(pkt) - work = h.work_in - if work is None: - return self.waitTask() - count = work.datum - if count >= BUFSIZE: - h.work_in = work.link - return self.qpkt(work) - - dev = h.device_in - if dev is None: - return self.waitTask() - - h.device_in = dev.link - dev.datum = work.data[count] - work.datum = count + 1 - return self.qpkt(dev) - -# IdleTask - - -class IdleTask(Task): - def __init__(self,i,p,w,s,r): - Task.__init__(self,i,0,None,s,r) - - def fn(self,pkt,r): - i = r - assert isinstance(i, IdleTaskRec) - i.count -= 1 - if i.count == 0: - return self.hold() - elif i.control & 1 == 0: - i.control //= 2 - return self.release(I_DEVA) - else: - i.control = i.control//2 ^ 0xd008 - return self.release(I_DEVB) - - -# WorkTask - - -A = ord('A') - -class WorkTask(Task): - def __init__(self,i,p,w,s,r): - Task.__init__(self,i,p,w,s,r) - - def fn(self,pkt,r): - w = r - assert isinstance(w, WorkerTaskRec) - if pkt is None: - return self.waitTask() - - if w.destination == I_HANDLERA: - dest = I_HANDLERB - else: - dest = I_HANDLERA - - w.destination = dest - pkt.ident = dest - pkt.datum = 0 - - for i in BUFSIZE_RANGE: # xrange(BUFSIZE) - w.count += 1 - if w.count > 26: - w.count = 1 - pkt.data[i] = A + w.count - 1 - - return self.qpkt(pkt) - - -def schedule(): - t = taskWorkArea.taskList - while t is not None: - pkt = None - - if tracing: - print("tcb =",t.ident) - - if t.isTaskHoldingOrWaiting(): - t = t.link - else: - if tracing: trace(chr(ord("0")+t.ident)) - t = t.runTask() - -class Richards(object): - - def run(self, iterations): - for i in range(iterations): - taskWorkArea.holdCount = 0 - taskWorkArea.qpktCount = 0 - - IdleTask(I_IDLE, 1, 10000, TaskState().running(), IdleTaskRec()) - - wkq = Packet(None, 0, K_WORK) - wkq = Packet(wkq , 0, K_WORK) - WorkTask(I_WORK, 1000, wkq, TaskState().waitingWithPacket(), WorkerTaskRec()) - - wkq = Packet(None, I_DEVA, K_DEV) - wkq = Packet(wkq , I_DEVA, K_DEV) - wkq = Packet(wkq , I_DEVA, K_DEV) - HandlerTask(I_HANDLERA, 2000, wkq, TaskState().waitingWithPacket(), HandlerTaskRec()) - - wkq = Packet(None, I_DEVB, K_DEV) - wkq = Packet(wkq , I_DEVB, K_DEV) - wkq = Packet(wkq , I_DEVB, K_DEV) - HandlerTask(I_HANDLERB, 3000, wkq, TaskState().waitingWithPacket(), HandlerTaskRec()) - - wkq = None; - DeviceTask(I_DEVA, 4000, wkq, TaskState().waiting(), DeviceTaskRec()); - DeviceTask(I_DEVB, 5000, wkq, TaskState().waiting(), DeviceTaskRec()); - - schedule() - - if taskWorkArea.holdCount == 9297 and taskWorkArea.qpktCount == 23246: - pass - else: - return False - - return True - -def entry_point(iterations): - r = Richards() - startTime = time() - result = r.run(iterations) - if not result: - print('#ERROR incorrect results!') - return time() - startTime - -def main(): - iterations=10 - #print("#Richards benchmark (Python) starting. iterations="+str(iterations)) - total_s = entry_point(iterations) - #print("#Total time for %s iterations: %s secs" %(iterations,total_s)) - s = total_s / iterations - #print("#Average seconds per iteration:", s) - print(s) diff --git a/regtests/bench/simd_float32vec.py b/regtests/bench/simd_float32vec.py deleted file mode 100644 index 60b77ac..0000000 --- a/regtests/bench/simd_float32vec.py +++ /dev/null @@ -1,30 +0,0 @@ -"""simd float32vec micro benchmark""" -from time import time -from random import random - -## SIMD in dart broken down into multiple float32x4 instances, with multiply implemented by looping -## over each element is slower than CPython with NumPy for an array larger than 32 elements. -## 64 elements runs about half the speed of NumPy in CPython. - -def main(): - ARRAY_SIZE = 32 ## note, size must be divisible by 4 - x = [] - y = [] - z = [] - for i in range( ARRAY_SIZE ): - x.append( random()+0.5 ) - y.append( random()+0.5 ) - z.append( random()+0.5 ) - - a = numpy.array( x, dtype=numpy.float32 ) - b = numpy.array( y, dtype=numpy.float32 ) - c = numpy.array( z, dtype=numpy.float32 ) - - ## start benchmark - start = time() - - arr = [] - for i in range(20000): - arr.append( a*b*c ) - - print(time()-start) \ No newline at end of file diff --git a/regtests/bench/simd_float32x4.py b/regtests/bench/simd_float32x4.py deleted file mode 100644 index 940f022..0000000 --- a/regtests/bench/simd_float32x4.py +++ /dev/null @@ -1,15 +0,0 @@ -"""simd float32x4 micro benchmark""" -from time import time - -def main(): - start = time() - float32x4 a = numpy.array( [1.0001, 1.0002, 1.0003, 1.0004], dtype=numpy.float32 ) - float32x4 b = numpy.array( [1.00009, 1.00008, 1.00007, 1.00006], dtype=numpy.float32 ) - float32x4 c = numpy.array( [1.00005, 1.00004, 1.00003, 1.00002], dtype=numpy.float32 ) - - arr = [] - for i in range(20000): - c *= a*b - arr.append( a*b*c ) - - print(time()-start) \ No newline at end of file diff --git a/regtests/bench/typed_int.py b/regtests/bench/typed_int.py deleted file mode 100644 index afa209e..0000000 --- a/regtests/bench/typed_int.py +++ /dev/null @@ -1,46 +0,0 @@ -"""int static type""" -from time import time - -def F(i, n, arr): - int i - list arr - while i < n: - - arr.append( i*2 ) - arr.append( i*4 ) - arr.append( i*8 ) - arr.append( i*16 ) - arr.append( i*32 ) - arr.append( i*64 ) - arr.append( i*128 ) - arr.append( i*256 ) - arr.append( i*512 ) - arr.append( i*1024 ) - arr.append( i*2048 ) - arr.append( i*4096 ) - - arr.append( i//2 ) - arr.append( i//4 ) - arr.append( i//8 ) - arr.append( i//16 ) - arr.append( i//32 ) - arr.append( i//64 ) - arr.append( i//128 ) - arr.append( i//256 ) - arr.append( i//512 ) - arr.append( i//1024 ) - arr.append( i//2048 ) - arr.append( i//4096 ) - - for x in range(100): - arr.append( i+x ) - - i += 1 - - -def main(): - start = time() - F(0, 10000, []) - F(0, 10000, []) - F(0, 10000, []) - print( time()-start ) diff --git a/regtests/bench/untyped_int.py b/regtests/bench/untyped_int.py deleted file mode 100644 index a74869f..0000000 --- a/regtests/bench/untyped_int.py +++ /dev/null @@ -1,45 +0,0 @@ -"""int static type""" -from time import time - -def F(i, n, arr): - - while i < n: - - arr.append( i*2 ) - arr.append( i*4 ) - arr.append( i*8 ) - arr.append( i*16 ) - arr.append( i*32 ) - arr.append( i*64 ) - arr.append( i*128 ) - arr.append( i*256 ) - arr.append( i*512 ) - arr.append( i*1024 ) - arr.append( i*2048 ) - arr.append( i*4096 ) - - arr.append( i//2 ) - arr.append( i//4 ) - arr.append( i//8 ) - arr.append( i//16 ) - arr.append( i//32 ) - arr.append( i//64 ) - arr.append( i//128 ) - arr.append( i//256 ) - arr.append( i//512 ) - arr.append( i//1024 ) - arr.append( i//2048 ) - arr.append( i//4096 ) - - for x in range(100): - arr.append( i+x ) - - i += 1 - - -def main(): - start = time() - F(0, 10000, []) - F(0, 10000, []) - F(0, 10000, []) - print( time()-start ) diff --git a/regtests/bench/webclgl_array_mult.py b/regtests/bench/webclgl_array_mult.py deleted file mode 100644 index 868b5fc..0000000 --- a/regtests/bench/webclgl_array_mult.py +++ /dev/null @@ -1,36 +0,0 @@ -"""big array mult""" -from time import time -from random import random - -ARRAY_SIZE = 1024*1024*4 - -@returns( array=ARRAY_SIZE ) -@gpu.main -def myfunc(A, B, C, D): - float* A - float* B - float* C - float* D - vec2 n = get_global_id() ## WebCL API - return A[n] * B[n] * C[n] * D[n] - -def main(): - - a = [ random() for i in range(ARRAY_SIZE)] - b = [ random() for i in range(ARRAY_SIZE)] - c = [ random() for i in range(ARRAY_SIZE)] - d = [ random() for i in range(ARRAY_SIZE)] - - if PYTHON=='PYTHONJS': - start = time() - res = myfunc( a,b,c,d ) - #print(res) - print( time()-start ) - else: - a = numpy.array(a, dtype=numpy.float32 ) - b = numpy.array(b, dtype=numpy.float32 ) - c = numpy.array(c, dtype=numpy.float32 ) - d = numpy.array(d, dtype=numpy.float32 ) - start = time() - res = a * b * c * d - print( time()-start ) diff --git a/regtests/bench/webworker.py b/regtests/bench/webworker.py deleted file mode 100644 index d9f173b..0000000 --- a/regtests/bench/webworker.py +++ /dev/null @@ -1,81 +0,0 @@ -''' -webworker two cores -''' - -from time import time -from time import sleep -import threading - - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pass - - - def is_prime(n): - hits = 0 - for x in range(2, n): - for y in range(2, n): - if x*y == n: - hits += 1 - if hits > 1: - return False - return True - - - starttime = time() - n = 3000 - seq = [] - cache = [] - - w1 = threading.start_webworker( worker, (0, n, seq, cache) ) - i = 0 - start = 1500 - step =10 - end = start + step - while i < 10: - for j in range(start, end): - if j in cache: - pass - else: - cache.append( j ) - if is_prime(j): - seq.append( j ) - _ = start - start = end - end = _ + step - i += 1 - sleep(0.1) - - - testtime = time()-starttime - primes_per_sec = len(seq) * (1.0 / testtime) - print(primes_per_sec) - print('#total test time: %s' %testtime) - print('-----main exit') - - - -with webworker: - def worker(start, end, seq, cache): - print('------enter worker------') - for i in range(start, end): - if i in cache: - #continue ## TODO - fix continue - pass - else: - cache.append( i ) - if is_prime(i): - seq.append( i ) - print('#worker reached: %s' %i) - - def is_prime(n): - hits = 0 - for x in range(2, n): - for y in range(2, n): - if x*y == n: - hits += 1 - if hits > 1: - return False - return True diff --git a/regtests/bench/webworker_single.py b/regtests/bench/webworker_single.py deleted file mode 100644 index fa152be..0000000 --- a/regtests/bench/webworker_single.py +++ /dev/null @@ -1,54 +0,0 @@ -''' -webworker single -''' - -from time import time -from time import sleep -import threading - - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pass - - - starttime = time() - n = 3000 - seq = [] - cache = [] - - w1 = threading.start_webworker( worker, (0, n, seq, cache) ) - sleep(1.0) - - testtime = time()-starttime - primes_per_sec = len(seq) * (1.0 / testtime) - - print(primes_per_sec) - print('#total test time: %s' %testtime) - print('-----main exit') - - -with webworker: - def worker(start, end, seq, cache): - print('------enter worker------') - for i in range(start, end): - if i in cache: - #continue ## TODO - fix continue - pass - else: - cache.append( i ) - if is_prime(i): - seq.append( i ) - print('#worker reached: %s' %i) - - def is_prime(n): - hits = 0 - for x in range(2, n): - for y in range(2, n): - if x*y == n: - hits += 1 - if hits > 1: - return False - return True - diff --git a/regtests/bench/webworkers.py b/regtests/bench/webworkers.py deleted file mode 100644 index 38cdb98..0000000 --- a/regtests/bench/webworkers.py +++ /dev/null @@ -1,58 +0,0 @@ -''' -loop and add (integer) -''' - -from time import time -from time import sleep -import threading - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pass - - start = time() - n = 2000 - seq = [] - #cache = {0:True, 1:True, 2:True, 3:True} - cache = [] - - #w = worker(n,seq, cache) - w1 = threading.start_webworker( worker, (0, n, seq, cache) ) - w2 = threading.start_webworker( worker, (10, n, seq, cache) ) - #w3 = threading.start_webworker( worker, (400, n, seq, cache) ) - sleep(1.0) - - testtime = time()-start - primes_per_sec = len(seq) * (1.0 / testtime) - - #print('#%s' %len(seq)) - #seq.sort() ## TODO fix sort for numbers - print(primes_per_sec) - print('#total test time: %s' %testtime) - print('-----main exit') - - -with webworker: - def worker(start, end, seq, cache): - print('------enter worker------') - for i in range(start, end): - if i in cache: - #continue ## TODO - fix continue - pass - else: - cache.append( i ) - if is_prime(i): - seq.append( i ) - print('#worker reached: %s' %i) - - def is_prime(n): - hits = 0 - for x in range(2, n): - for y in range(2, n): - if x*y == n: - hits += 1 - if hits > 1: - return False - return True - diff --git a/regtests/calling/args.py b/regtests/calling/args.py deleted file mode 100644 index 600060d..0000000 --- a/regtests/calling/args.py +++ /dev/null @@ -1,7 +0,0 @@ -"""simple function call""" -def f(a, b, c): - return a+b+c - -def main(): - TestError( f(1,2,3) == 6) - diff --git a/regtests/calling/function_expression.py b/regtests/calling/function_expression.py deleted file mode 100644 index 9c12bc7..0000000 --- a/regtests/calling/function_expression.py +++ /dev/null @@ -1,8 +0,0 @@ -"""func expr""" - -F = function( x,y ): - return x+y - -def main(): - TestError( F(1,2) == 3 ) - diff --git a/regtests/calling/inline_def.py b/regtests/calling/inline_def.py deleted file mode 100644 index 431ffca..0000000 --- a/regtests/calling/inline_def.py +++ /dev/null @@ -1,14 +0,0 @@ -"""inline def""" - -def test( callback1=None, callback2=None ): - return {'cb1': callback1, 'cb2': callback2 } - -def main(): - o = test( callback1=def (x,y): - return x+y, - callback2 = def (x): - return x*2 - ) - TestError( o['cb1'](1,2) == 3 ) - TestError( o['cb2'](100) == 200 ) - diff --git a/regtests/calling/keyword.py b/regtests/calling/keyword.py deleted file mode 100644 index cfd5170..0000000 --- a/regtests/calling/keyword.py +++ /dev/null @@ -1,8 +0,0 @@ -"""keywords""" -def f(a, b=None, c=None): - return (a+b) * c - - -def main(): - TestError( f(1, b=2, c=3) == 9) ## inorder works in javascript mode - TestError( f(1, c=3, b=2) == 9) ## out of order fails in javascript mode diff --git a/regtests/calling/lambda.py b/regtests/calling/lambda.py deleted file mode 100644 index 00ccbab..0000000 --- a/regtests/calling/lambda.py +++ /dev/null @@ -1,43 +0,0 @@ -"""lambda function""" - -def get_lambda(): - return lambda x,y: x+y - -def get_lambdas(): - return [lambda a,b: a+b, lambda x,y: x+y] - -def call_lambda( F ): - return F() - -def call_lambda2( callback=None ): - return callback() - -def main(): - f = lambda a,b: a+b - TestError( f(1,2) == 3 ) - - TestError( (lambda a,b: a+b)(1,2) == 3 ) - - TestError( get_lambda()(1,2) == 3 ) - - funcs = get_lambdas() - TestError( funcs[0](1,2) == 3 ) - TestError( funcs[1](1,2) == 3 ) - - funcs = [lambda a,b: a+b, lambda x,y: x+y] - TestError( funcs[0](1,2) == 3 ) - TestError( funcs[1](1,2) == 3 ) - - d = { 'x':lambda a,b: a+b } - TestError( d['x'](1,2) == 3 ) - - e = ( lambda a,b: a+b, lambda x,y: x+y ) - TestError( e[0](1,2) == 3 ) - TestError( e[1](1,2) == 3 ) - - r = call_lambda( lambda : int(100) ) - TestError( r==100 ) - - - r = call_lambda2( callback = lambda : int(200) ) - TestError( r==200 ) \ No newline at end of file diff --git a/regtests/calling/param_name.py b/regtests/calling/param_name.py deleted file mode 100644 index ca0f0c9..0000000 --- a/regtests/calling/param_name.py +++ /dev/null @@ -1,11 +0,0 @@ -"""Function call with the name of a parameter without default value""" -def f1(a): - return a - -def f2(a=1): - return a - -def main(): - TestError( f2( 100 ) == 100 ) - - TestError( f1( a=100 ) == 100 ) diff --git a/regtests/calling/starargs.py b/regtests/calling/starargs.py deleted file mode 100644 index a2f6b25..0000000 --- a/regtests/calling/starargs.py +++ /dev/null @@ -1,15 +0,0 @@ -"""unpack starargs""" -def f(x, a, b, c): - return x+a+b+c - -def f2(x,y,z, w=0): - return x+y+z+w - -def main(): - a = [1,1,1] - TestError( f(1, *a) == 4) - - TestError( f2(*a, w=10) == 13) - - b = [1,1] - TestError( f2(100, *b, w=10) == 112) diff --git a/regtests/calling/variable_args.py b/regtests/calling/variable_args.py deleted file mode 100644 index 872313a..0000000 --- a/regtests/calling/variable_args.py +++ /dev/null @@ -1,11 +0,0 @@ -"""variable args""" -def f(a, *args): - c = a - for b in args: - c += b - return c - -def main(): - ## dart only supports up to a fixed number (16) of variable arguments - TestError( f(1, 2, 3, 3) == 9) - diff --git a/regtests/calling/variable_kwargs.py b/regtests/calling/variable_kwargs.py deleted file mode 100644 index be1ace4..0000000 --- a/regtests/calling/variable_kwargs.py +++ /dev/null @@ -1,11 +0,0 @@ -"""variable keywords""" - -def f2(**kw): - a = 0 - for key in kw: - a += kw[key] - return a - -def main(): - - TestError( f2(x=1,y=2) == 3 ) \ No newline at end of file diff --git a/regtests/calling/variable_kwargs_class.py b/regtests/calling/variable_kwargs_class.py deleted file mode 100644 index dff64f9..0000000 --- a/regtests/calling/variable_kwargs_class.py +++ /dev/null @@ -1,11 +0,0 @@ -"""variable keywords""" -class A: - def f2(self, **kw): - a = 0 - for key in kw: - a += kw[key] - return a - -def main(): - a = A() - TestError( a.f2(x=1,y=2) == 3 ) \ No newline at end of file diff --git a/regtests/calling/variable_kwargs_class_init.py b/regtests/calling/variable_kwargs_class_init.py deleted file mode 100644 index 8086762..0000000 --- a/regtests/calling/variable_kwargs_class_init.py +++ /dev/null @@ -1,11 +0,0 @@ -"""variable keywords""" -class A: - def __init__(self, **kw): - a = 0 - for key in kw: - a += kw[key] - self.value = a - -def main(): - a = A(x=1,y=2) - TestError( a.value == 3 ) \ No newline at end of file diff --git a/regtests/class/__add__.py b/regtests/class/__add__.py deleted file mode 100644 index 075d401..0000000 --- a/regtests/class/__add__.py +++ /dev/null @@ -1,15 +0,0 @@ -"""custom addition""" - -class A: - def __init__(self): - self.x = 5 - def __add__(self, other): - return self.x + other.x - - -def main(): - a = A() - b = A() - c = a + b - TestError( c == 10 ) - diff --git a/regtests/class/__call__.py b/regtests/class/__call__.py deleted file mode 100644 index 5f03499..0000000 --- a/regtests/class/__call__.py +++ /dev/null @@ -1,13 +0,0 @@ -"""custom callable""" - -class A: - def __init__(self): - self.x = 5 - def __call__(self): - return 'XXX' - - -def main(): - a = A() - TestError(a.x == 5) - TestError( a()=='XXX' ) \ No newline at end of file diff --git a/regtests/class/__getattr__.py b/regtests/class/__getattr__.py deleted file mode 100644 index 2fe1820..0000000 --- a/regtests/class/__getattr__.py +++ /dev/null @@ -1,49 +0,0 @@ -''' -__getattr__, @property, and class attributes -''' -class A: - X = 'A' - - def __getattr__(self, name): - if name == 'hello': - return 100 - elif name == 'world': - return 200 - else: - return 300 - -class B(A): - Y = 'B' - - @property - def y(self): - return self._y - -class C( B ): - Z = 'C' - - def __init__(self, x,y,z): - self.x = x - self._y = y - self._z = z - - @property - def z(self): - return self._z - - - -def main(): - a = C(1,2,3) - TestError( a.X == 'A' ) - TestError( a.Y == 'B' ) - TestError( a.Z == 'C' ) - - TestError( a.x == 1 ) - TestError( a.y == 2 ) - TestError( a.z == 3 ) - - b = a.hello - TestError( b == 100 ) - TestError( a.world == 200 ) - TestError( a.XXX == 300 ) diff --git a/regtests/class/__mul__.py b/regtests/class/__mul__.py deleted file mode 100644 index 1890efe..0000000 --- a/regtests/class/__mul__.py +++ /dev/null @@ -1,15 +0,0 @@ -"""custom multiplication""" - -class A: - def __init__(self): - self.x = 5 - def __mul__(self, other): - return self.x * other.x - - -def main(): - a = A() - b = A() - c = a * b - TestError( c == 25 ) - diff --git a/regtests/class/attr.py b/regtests/class/attr.py deleted file mode 100644 index c7036d9..0000000 --- a/regtests/class/attr.py +++ /dev/null @@ -1,29 +0,0 @@ -"""instance attributes""" - -class A: - g = 6 - def __init__(self): - self.b = 5 - -def main(): - a = A() - - TestError(a.b == 5) - TestError(a.g == 6) - try: - x = a.c - TestError(not 'No exception: on undefined attribute') - except AttributeError: - pass - - b = a - TestError(getattr(b, 'b') == 5) - TestError(getattr(b, 'g') == 6) - try: - getattr(b, 'c') - TestError(not 'No exception: getattr on undefined attribute') - except AttributeError: - pass - - b.g = 100 - TestError( A.g == 6) \ No newline at end of file diff --git a/regtests/class/init_keyword.py b/regtests/class/init_keyword.py deleted file mode 100644 index 3a01559..0000000 --- a/regtests/class/init_keyword.py +++ /dev/null @@ -1,11 +0,0 @@ -''' -test __init__ with keyword arg -''' - -def main(): - class Cell: - def __init__(self, x=1): - self.x = x - - a = Cell(x=2) - TestError(a.x == 2) \ No newline at end of file diff --git a/regtests/class/isinstance.py b/regtests/class/isinstance.py deleted file mode 100644 index 64d4347..0000000 --- a/regtests/class/isinstance.py +++ /dev/null @@ -1,27 +0,0 @@ -''' -builtin isinstance -''' -class A: - pass - -class B: - pass - -def main(): - a = A() - b = B() - TestError( isinstance(a,A)==True ) - TestError( isinstance(a,B)==False ) - TestError( isinstance(a,dict)==False ) - - TestError( isinstance(b,B)==True ) - TestError( isinstance(b,A)==False ) - - c = [1,2] - TestError( isinstance(c, list)==True ) - TestError( isinstance(c, dict)==False ) - TestError( isinstance(c, A)==False ) - - d = {'a':1, 'b':2} - TestWarning( isinstance(d, dict)==True ) ## in javascript-mode this will fail - TestError( isinstance(d, A)==False ) diff --git a/regtests/class/mi.py b/regtests/class/mi.py deleted file mode 100644 index 5c1a591..0000000 --- a/regtests/class/mi.py +++ /dev/null @@ -1,34 +0,0 @@ -''' -multiple inheritance -''' -class A: - def foo(self) -> int: - return 1 - -class B: - def bar(self) -> int: - return 2 - -class C( A, B ): - def call_foo_bar(self) -> int: - a = self.foo() - a += self.bar() - return a - - ## extend foo ## - def foo(self) -> int: - a = A.foo(self) - a += 100 - return a - -def main(): - a = A() - TestError( a.foo()==1 ) - b = B() - TestError( b.bar()==2 ) - - c = C() - TestError( c.foo()==101 ) - TestError( c.bar()==2 ) - - TestError( c.call_foo_bar()==103 ) diff --git a/regtests/class/mi__getattr__.py b/regtests/class/mi__getattr__.py deleted file mode 100644 index cd05258..0000000 --- a/regtests/class/mi__getattr__.py +++ /dev/null @@ -1,41 +0,0 @@ -''' -__getattr__ and @property -''' -class Root: - def __getattr__(self, name): - if name == 'x': - return self._x - elif name == 'y': - return self._y - else: - return name - -class A( Root ): - def __init__(self): - self._x = 1 - self._y = 2 - -class B( A ): - @property - def w(self): - return 'XXX' - -def unknown(u): - return u - - - -def main(): - a = A() - b = unknown( a ) - TestError( b.x==1 ) - TestError( b.y==2 ) - TestError( b.z=='z' ) - TestError( b.w=='w' ) - - c = B() - d = unknown( c ) - TestError( d.x==1 ) - TestError( d.y==2 ) - TestError( d.z=='z' ) - TestError( d.w=='XXX' ) diff --git a/regtests/class/mi_override.py b/regtests/class/mi_override.py deleted file mode 100644 index d36fb6f..0000000 --- a/regtests/class/mi_override.py +++ /dev/null @@ -1,32 +0,0 @@ -''' -multiple inheritance -''' -class A: - def foo(self) -> int: - return 1 - -class B: - def bar(self) -> int: - return 2 - -class C( A, B ): - def call_foo_bar(self) -> int: - a = self.foo() - a += self.bar() - return a - - ## override foo ## - def foo(self) -> int: - return 100 - -def main(): - a = A() - TestError( a.foo()==1 ) - b = B() - TestError( b.bar()==2 ) - - c = C() - TestError( c.foo()==100 ) - TestError( c.bar()==2 ) - - TestError( c.call_foo_bar()==102 ) diff --git a/regtests/class/simple.py b/regtests/class/simple.py deleted file mode 100644 index e4010ca..0000000 --- a/regtests/class/simple.py +++ /dev/null @@ -1,9 +0,0 @@ -"""simple class""" - -class A: - def __init__(self): - self.x = 5 - -def main(): - a = A() - TestError(a.x == 5) diff --git a/regtests/dict/contains.py b/regtests/dict/contains.py deleted file mode 100644 index 0f0857b..0000000 --- a/regtests/dict/contains.py +++ /dev/null @@ -1,7 +0,0 @@ -"""key in dict""" - -def main(): - a = {'2': 22, 3:33} - TestError( '2' in a ) - TestError( 3 in a ) - diff --git a/regtests/dict/dict_inline_def.py b/regtests/dict/dict_inline_def.py deleted file mode 100644 index e4ad9cb..0000000 --- a/regtests/dict/dict_inline_def.py +++ /dev/null @@ -1,17 +0,0 @@ -"""dict inline def""" - - -def main(): - - d = { 'callback': def (x,y): - return x+y - } - TestError( d['callback'](1,2) == 3 ) - - a = { 'cb1': def (x,y): - return x+y, - 'cb2' : def (x): - return x*2 - } - TestError( a['cb1'](1,2) == 3 ) - TestError( a['cb2'](100) == 200 ) diff --git a/regtests/dict/if_empty.py b/regtests/dict/if_empty.py deleted file mode 100644 index 803f09d..0000000 --- a/regtests/dict/if_empty.py +++ /dev/null @@ -1,22 +0,0 @@ -"""if empty dict then false""" -def main(): - d = {} - if d: - err1 = 1 - else: - err1 = 0 - - if {}: - err2 = 1 - else: - err2 = 0 - - d['x'] = 'xxx' - if d: - err3 = 0 - else: - err3 = 1 - - TestError( err1 == 0 ) - TestError( err2 == 0 ) - TestError( err3 == 0 ) diff --git a/regtests/dict/init.py b/regtests/dict/init.py deleted file mode 100644 index 0a8e85e..0000000 --- a/regtests/dict/init.py +++ /dev/null @@ -1,16 +0,0 @@ -"""Defined with {}""" -def f(): - pass -class G(object): - def __init__(self): - #"""XXX: Without __init__ the translation with javascript fail""" - pass - -def main(): - g = G() - a = {'2': 22, 3:33, f:44, G:55, g:66} - TestError(a['2'] == 22) - TestError(a[3] == 33) - TestError(a[f] == 44) - TestError(a[G] == 55) - TestError(a[g] == 66) diff --git a/regtests/dict/item.py b/regtests/dict/item.py deleted file mode 100644 index 4da3dd7..0000000 --- a/regtests/dict/item.py +++ /dev/null @@ -1,21 +0,0 @@ -"""__getitem__""" -def f(): - pass -class G(object): - def __init__(self): - """XXX: Without __init__ the translation with javascript fail""" - pass -def main(): - g = G() - a = {'2': 22, 3:33} - a[f] = 44 - a[g] = 66 - a[G] = 55 - TestError(a['2'] == 22) - TestError(a[3] == 33) - TestError(a[f] == 44) - TestError(a[G] == 55) - TestError(a[g] == 66) - - TestError(a.get('none', 'default') == 'default') - diff --git a/regtests/dict/keys.py b/regtests/dict/keys.py deleted file mode 100644 index c7ccdf6..0000000 --- a/regtests/dict/keys.py +++ /dev/null @@ -1,6 +0,0 @@ -"""dict.keys()""" - -def main(): - a = {'foo':'bar'} - keys = a.keys() - TestError( 'foo' in keys ) diff --git a/regtests/dict/tuple_keys.py b/regtests/dict/tuple_keys.py deleted file mode 100644 index 7d3dea0..0000000 --- a/regtests/dict/tuple_keys.py +++ /dev/null @@ -1,34 +0,0 @@ -"""dict tuple key""" - -class A: pass -class B: - def __init__(self): - pass - -def main(): - s = ("1", "2", "3") - a = (1,2,3) - b = (1,2,3) - c = ( a, b, 'XXX' ) - d = ('1', 2, 3) - - D = { d:100, s: 11, a: 22, c:44 } - TestError( D[ d ] == 100) - TestError( D[ s ] == 11) - TestError( D[ a ] == 22) - TestError( D[ b ] == 22) - TestError( D[ c ] == 44) - - aa = A() - bb = B() - ab = ( A(), B() ) - D2 = { aa: 'hello', bb: 'world', ab:'XXX' } - TestError( D2[aa]=='hello' ) - TestError( D2[bb]=='world' ) - TestError( D2[ab]=='XXX') - - r = { s:1, a:aa } - r2 = {} - for x in [ s, a ]: - r2[ x ] = r[ x ] - TestError( r[s] is r2[s] ) \ No newline at end of file diff --git a/regtests/exceptions/AttributeError.py b/regtests/exceptions/AttributeError.py deleted file mode 100644 index bb302ae..0000000 --- a/regtests/exceptions/AttributeError.py +++ /dev/null @@ -1,13 +0,0 @@ -"""catch AttributeError""" - -class A: pass - -def main(): - a = A() - b = False - try: - b = a.xxx - except AttributeError: - b = True - - TestError( b == True ) diff --git a/regtests/exceptions/KeyError.py b/regtests/exceptions/KeyError.py deleted file mode 100644 index f48ec0d..0000000 --- a/regtests/exceptions/KeyError.py +++ /dev/null @@ -1,11 +0,0 @@ -"""catch KeyError""" - -def main(): - D = {} - a = False - try: - a = D['XXX'] - except KeyError: - a = True - - TestError( a == True ) diff --git a/regtests/go/arrays.py b/regtests/go/arrays.py deleted file mode 100644 index 76d84e5..0000000 --- a/regtests/go/arrays.py +++ /dev/null @@ -1,22 +0,0 @@ -"""array types""" - -def main(): - a = []int(1,2,3) - TestError( a[0]==1 ) - TestError( len(a)==3 ) - - b = [2]int(100,200) - TestError( b[0]==100 ) - TestError( b[1]==200 ) - - c = a[:2] - TestError( len(c)==2 ) - - d = range(10) - TestError(len(d)==10) - - #e = range(2,10) - #TestError(len(e)==8) - - #f = range(2,10, 2) - #TestError(len(f)==4) diff --git a/regtests/go/chan-transfer-speed.py b/regtests/go/chan-transfer-speed.py deleted file mode 100644 index 9b0c7fb..0000000 --- a/regtests/go/chan-transfer-speed.py +++ /dev/null @@ -1,107 +0,0 @@ -# based on the go test by Dennis Francis -# https://github.com/dennisfrancis/gopherjs-channeltransfer-speed - - -import "github.com/gopherjs/gopherjs/js" - - -data_chan = go.channel(int) - -document = js.Global.Get("document") - -def main(): - js.Global.Get("window").Set("onload", setup) - -def setup(): - - go( receive() ) - bt = document.Call("getElementById", "startbt") - bt.Set("onclick", runtests) - - -def runtests(): - var bt = document.Call("getElementById", "startbt") - bt.Set("disabled", true) - - #go func() { - # test_calldepth() - # test_localmem() - #}() - - go( test_calldepth() ) - go( test_localmem() ) - - -def test_calldepth(): - - latency = go.make([]float64, 1000) - perf = js.Global.Get("performance") - #for cd := 1; cd <= 1000; cd++ { - for cd in range(1, 1000): - t0 = perf.Call("now").Float() - #for ii:=0; ii<50; ii++ { - for ii in range(50): - send_func(cd, 1, ii) - t1 = perf.Call("now").Float() - latency[cd-1] = (t1 - t0)/50.0 - print("test1 calldepth =", cd) - plot("ctsgraph1", latency, "Call depth", "Variation of Kilo Channel Transfers per second (KCTps) with call depth") - -def test_localmem(): - - latency = go.make([]float64, 1000) - perf = js.Global.Get("performance") - #for varsz := 1; varsz <= 1000; varsz++ { - for varsz in range(1, 1000): - t0 = perf.Call("now").Float() - #for ii:=0; ii<50; ii++ { - for ii in range(50): - send_func(1, varsz, ii) - - t1 = perf.Call("now").Float() - latency[varsz-1] = (t1 - t0)/50.0 - plot("ctsgraph2", latency, "Local variable size", "Variation of Kilo Channel Transfers per second (KCTps) with local variable size") - - -def plot(id:string, latency:[]float64, xlabel:string, title:string ): - - div = document.Call("getElementById", id) - #options = map[string]interface{}{ - options = map[string]interface{ - #"legend" : "always", - "title" : title, - "showRoller" : true, - "rollPeriod" : 1, - "ylabel" : "KCTps", - "labels" : []string("x", "CTS"), - } - - data = go.make([][]float64, len(latency)) - - #for rowid := 0; rowid < len(latency); rowid++ { - for rowid in range(len(latency)): - data[rowid] = []float64( - float64(rowid + 1), - 1.0/latency[rowid] - ) - - - js.Global.Get("Dygraph").New(div, data, options) - - -def send_func(call_depth:int, varsize:int, data:int ): - locvar = go.make([]int, varsize) - - if call_depth <= 1: - data_chan <- data - return - - send_func(call_depth-1, varsize, data) - - print(locvar) - -def receive(): - int data = 0 - while True: - data = <-data_chan - print("Received data =", data) diff --git a/regtests/go/chan.py b/regtests/go/chan.py deleted file mode 100644 index fdf6e02..0000000 --- a/regtests/go/chan.py +++ /dev/null @@ -1,16 +0,0 @@ -"""send int over channel""" - -def wrapper(a:int, c: chan int): - result = 100 - c <- result - -def main(): - c = go.channel(int) - - go( wrapper(17, c) ) - - # Do other work in the current goroutine until the channel has a result. - - x = <-c - print(x) - TestError(x==100) diff --git a/regtests/go/class.py b/regtests/go/class.py deleted file mode 100644 index 316ca2f..0000000 --- a/regtests/go/class.py +++ /dev/null @@ -1,31 +0,0 @@ -''' -simple class -''' -class A: - { - x:int, - y:int, - z:int, - } - def __init__(self, x:int, y:int, z:int=1): - self.x = x - self.y = y - self.z = z - - def mymethod(self, m:int) -> int: - return self.x * m - -def call_method( cb:func(int)(int), mx:int ) ->int: - return cb(mx) - -def main(): - a = A( 100, 200, z=9999 ) - print( a.x ) - print( a.y ) - print( a.z ) - - b = a.mymethod(3) - print( b ) - - c = call_method( a.mymethod, 4 ) - print( c ) \ No newline at end of file diff --git a/regtests/go/func_calls.py b/regtests/go/func_calls.py deleted file mode 100644 index bfcd797..0000000 --- a/regtests/go/func_calls.py +++ /dev/null @@ -1,20 +0,0 @@ -"""function call""" -def f(a:int, b:int, c:int) ->int: - return a+b+c - -def f2(a:int=1, b:int=2, c:int=3) ->int: - return a+b+c - -def f3( *args:int ) ->int: - return args[0] + args[1] + args[2] - - -def main(): - TestError( f(1,2,3) == 6) - - x = f2( b=100 ) - TestError(x==104) - - arr = [1,2,3] - y = f3( *arr ) - TestError( y==6 ) \ No newline at end of file diff --git a/regtests/go/list_comprehension.py b/regtests/go/list_comprehension.py deleted file mode 100644 index 75c7f7a..0000000 --- a/regtests/go/list_comprehension.py +++ /dev/null @@ -1,11 +0,0 @@ -''' -go list comprehensions -''' - -def main(): - a = []int(x for x in range(3)) - - TestError( len(a)==3 ) - TestError( a[0]==0 ) - TestError( a[1]==1 ) - TestError( a[2]==2 ) diff --git a/regtests/go/loop_arrays.py b/regtests/go/loop_arrays.py deleted file mode 100644 index b1ec850..0000000 --- a/regtests/go/loop_arrays.py +++ /dev/null @@ -1,34 +0,0 @@ -''' -array loop -''' - -def main(): - - a = [1,2,3] - y = 0 - for x in a: - y += x - TestError( y==6 ) - - z = '' - arr = ['a', 'b', 'c'] - for v in arr: - z += v - TestError( z == 'abc' ) - - b = 0 - for i in range(10): - b += 1 - TestError( b == 10 ) - - c = '' - d = 0 - for i,v in enumerate(arr): - c += v - d += i - TestError( c == 'abc' ) - - e = 0 - for i in range( len(arr) ): - e += 1 - TestError( e == 3 ) diff --git a/regtests/go/loop_map.py b/regtests/go/loop_map.py deleted file mode 100644 index 403647d..0000000 --- a/regtests/go/loop_map.py +++ /dev/null @@ -1,14 +0,0 @@ -''' -map loop -''' - -def main(): - a = {'x':100, 'y':200} - b = '' - c = 0 - for key,value in a: - b += key - c += value - - print( b ) - print( c ) \ No newline at end of file diff --git a/regtests/go/maps.py b/regtests/go/maps.py deleted file mode 100644 index 23248a3..0000000 --- a/regtests/go/maps.py +++ /dev/null @@ -1,24 +0,0 @@ -"""map types""" - -def main(): - a = map[string]int{ - 'x': 1, - 'y': 2, - 'z': 3, - } - - #print( a['x'] ) - TestError( a['x']==1 ) - - b = map[int]string{ 0:'a', 1:'b' } - #print( b[0] ) - #print( b[1] ) - TestError( b[0]=='a' ) - TestError( b[1]=='b' ) - - c = {'x':100, 'y':200} - #print( c['x'] ) - #print( c['y'] ) - - TestError( c['x']==100 ) - TestError( c['y']==200 ) diff --git a/regtests/go/print.py b/regtests/go/print.py deleted file mode 100644 index 363f081..0000000 --- a/regtests/go/print.py +++ /dev/null @@ -1,4 +0,0 @@ -"""hello world""" - -def main(): - print "hi" diff --git a/regtests/go/select.py b/regtests/go/select.py deleted file mode 100644 index 6bcb8fe..0000000 --- a/regtests/go/select.py +++ /dev/null @@ -1,43 +0,0 @@ -"""go select""" - -def send_data( A:chan int, B:chan int, X:int, Y:int): - while True: - print('sending data..') - A <- X - B <- Y - -def select_loop(A:chan int, B:chan int, W:chan int) -> int: - print('starting select loop') - y = 0 - while True: - print('select loop:',y) - select: - case x = <- A: - y += x - W <- y - case x = <- B: - y += x - W <- y - print('end select loop', y) - return y - -def main(): - a = go.channel(int) - b = go.channel(int) - w = go.channel(int) - - go( - select_loop(a,b, w) - ) - - - go( - send_data(a,b, 5, 10) - ) - - z = 0 - while z < 100: - z = <- w - print('main loop', z) - - print('end test') \ No newline at end of file diff --git a/regtests/go/subclass.py b/regtests/go/subclass.py deleted file mode 100644 index 69e87b9..0000000 --- a/regtests/go/subclass.py +++ /dev/null @@ -1,43 +0,0 @@ -''' -simple class -''' -class A: - { - x:int, - y:int, - z:int, - } - def __init__(self, x:int, y:int, z:int=1): - self.x = x - self.y = y - self.z = z - - def mymethod(self, m:int) -> int: - return self.x * m - -class B(A): - { - w:string - } - - def method2(self, v:string) ->string: - self.w = v - return self.w - -def call_method( cb:func(int)(int), mx:int ) ->int: - return cb(mx) - -def main(): - a = A( 100, 200, z=9999 ) - print( a.x ) - print( a.y ) - print( a.z ) - - b = a.mymethod(3) - print( b ) - - c = call_method( a.mymethod, 4 ) - print( c ) - - x = B(1,2,z=3) - print( x.method2('hello world') ) \ No newline at end of file diff --git a/regtests/go/vars.py b/regtests/go/vars.py deleted file mode 100644 index 86c1722..0000000 --- a/regtests/go/vars.py +++ /dev/null @@ -1,6 +0,0 @@ -"""var assignment :=, and reassignment =""" - -def main(): - a = 1 - a = 2 - TestError( a==2 ) \ No newline at end of file diff --git a/regtests/html/date.html b/regtests/html/date.html deleted file mode 100644 index 97b3f50..0000000 --- a/regtests/html/date.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/regtests/html/dddom.py b/regtests/html/dddom.py deleted file mode 100644 index 0335b5e..0000000 --- a/regtests/html/dddom.py +++ /dev/null @@ -1,799 +0,0 @@ -# PythonJS WebGL/CSS3D Hybrid Toolkit -# by Brett Hartshorn - copyright 2014 -# You may destribute this file using the "New BSD" or MIT license -# requires: Twitter Bootstrap and jQuery - -pythonjs.configure(javascript=True) - -def __setup_slider_class( $ ): - - def PPSliderClass(el, opts): - var element = $(el); - var options = opts; - var isMouseDown = false; - var currentVal = 0; - - element.wrap('
') - var container = $(el).parent(); ## this requires that the slider html element has a parent - - container.addClass('pp-slider'); - container.addClass('clearfix'); - - container.append('
-
+
'); - - #if (typeof(options) != 'undefined' && typeof(options.hideTooltip) != 'undefined' && options.hideTooltip == true) - #{ - # container.find('.pp-slider-tooltip').hide(); - #} - - if typeof(options.width) != 'undefined': - container.css('width',(options.width+'px')); - - container.find('.pp-slider-scale').css('width',(container.width()-30)+'px'); - - def startSlide(e): - nonlocal isMouseDown, startMouseX, lastElemLeft - isMouseDown = true; - var pos = getMousePosition(e); - startMouseX = pos.x; - lastElemLeft = ($(this).offset().left - $(this).parent().offset().left); - updatePosition(e); - return False - - def getMousePosition(e): - var posx = 0; - var posy = 0; - if not e: e = window.event; - if (e.pageX or e.pageY): - posx = e.pageX; - posy = e.pageY; - elif (e.clientX or e.clientY): - posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; - posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; - - return { 'x': posx, 'y': posy } - - def updatePosition(e): - var pos = getMousePosition(e); - var spanX = (pos.x - startMouseX); - var newPos = (lastElemLeft + spanX) - var upperBound = (container.find('.pp-slider-scale').width()-container.find('.pp-slider-button').width()); - newPos = Math.max(0,newPos); - newPos = Math.min(newPos,upperBound); - currentVal = Math.round((newPos/upperBound)*100,0); - container.find('.pp-slider-button').css("left", newPos); - container.find('.pp-slider-tooltip').html(currentVal+'%'); - container.find('.pp-slider-tooltip').css('left', newPos-6); - if typeof(options.onInput) == 'function': - options.onInput( newPos/upperBound ) - - def moving(e): - if isMouseDown: - updatePosition(e); - return False - - def dropCallback(e): - nonlocal isMouseDown - isMouseDown = False - element.val(currentVal); - if typeof(options.onChanged) == 'function': - options.onChanged.call(this, null); - - container.find('.pp-slider-button').bind('mousedown',startSlide); - - $(document).mousemove( lambda e: moving(e) ) - $(document).mouseup( lambda e: dropCallback(e) ) - - if options.value: - w = container.find('.pp-slider-scale').width()-container.find('.pp-slider-button').width() - container.find('.pp-slider-button').css( - "left", - w * options.value - ) - - - def __init__(options): - var opts = $.extend({}, $.fn.PPSlider.defaults, options); - return this.each( lambda: new PPSliderClass($(this), opts) ) - $.fn.PPSlider = __init__ - - $.fn.PPSlider.defaults = { - 'width': 300 - }; - -__setup_slider_class( jQuery ) - -__sid = 0 - -class TabMenuWrapper: - ## provides a workaround for bootstrap failing to update the active page when a tab is clicked - def __init__(self, manager): - self.manager = manager - self.root = document.createElement('div') - self.root.setAttribute('class', 'tabbable tabs-left') - self.tabs = document.createElement('ul') - self.tabs.setAttribute('class', 'nav nav-tabs') - self.root.appendChild( self.tabs ) - #container.appendChild( menu ) - - self.pages_container = document.createElement('div') - self.pages_container.id = '_' + manager.newid() ## scroll bars will show on this div - self.pages_container.setAttribute('class', 'tab-content') - self.root.appendChild( self.pages_container ) - - ## setting the tab page container to 100% width and height breaks twitter-bootstrap - #self.pages_container.style.width = '100%' - #self.pages_container.style.height = '100%' - ## for some reason, bootstrap appears to do something "funky" on the tab-content div, - ## `scrollTop` can be read on the source tab-content div, but not written to the clone. - - ## this cheat will not work either, scrollTop on the clone is readonly and zero ## - #def onscroll(evt): - # print(this.scrollTop) - # if this._clone: - # print(this._clone) - # this._clone.scrollTop = this.scrollTop - #self.pages_container.onscroll = onscroll - - ## workaround to disable scrollbars - self.pages_container.style.overflow = 'hidden' - - - self._tab_pages = [] - - - def add_tab(self, tabname): - - tab = document.createElement('li') - taba = document.createElement('a') - #taba.setAttribute('href', '#'+tabid) ## not required - taba.setAttribute('data-toggle', 'tab') - - tab.appendChild( taba ) - self.tabs.appendChild( tab ) - taba.appendChild( document.createTextNode(tabname) ) - - - page = document.createElement('div') - a = 'tab-pane' - if len(self._tab_pages)==0: a += ' active' - page.setAttribute('class', a) - - #page.setAttribute('id', self.manager.newid() ) ## required to sync scrollbars - - self.pages_container.appendChild( page ) - self._tab_pages.append( page ) - - ## TODO force page to be full size, or sync scroll bars - page.style.width = '100%' ## this fails to force the window to resize - page.style.height = '100%' - - _tab_pages = self._tab_pages - def clicktab(): - for other in _tab_pages: - other.setAttribute('class', 'tab-pane') - this._tab_page.setAttribute('class', 'tab-pane active') - - taba._tab_page = page - taba.onclick = clicktab - - return page - - - -def create_slider(value, onchange=None, width=200): - slider = document.createElement('input') - - ## the native slider looks different on each platform, - ## and it is not clickable, because the camera controls preventDefault? - ## however, if focused the keyboard arrow keys, can still change the slider values. - ## to be safe, instead of using a native slider, we use the custom jquery/css slider. - ##slider.setAttribute('type', 'range') ## do not use native slider - #slider.setAttribute('min', 0) - #slider.setAttribute('max', 100) - #slider.setAttribute('step', 1) - #slider.setAttribute('value', 100) - - slider.setAttribute('type', 'hidden') - #$("#"+id).PPSlider( width=300, onInput=onchange, value=value ) - - div = document.createElement('div') ## a parent container is required - div.appendChild( slider ) - $( slider ).PPSlider( width=width, onInput=onchange, value=value ) - - slider.onclick = lambda : slider.focus() - - return div - -def create_textarea(): - global __sid - __sid += 1 - ta = document.createElement('textarea') - ta.setAttribute('id', '__sid'+__sid) - def func(): ta.focus() ## this allows normal keyboard input - ta.onclick = func - ta.style.backgroundColor = 'black' - ta.style.color = 'green' - ta.style.fontWeight = 'bold' - ta.setAttribute('class', 'focused alert alert-info') - return ta - -def create_checkbox( checked, onchange=None ): - ## no special hacks required for checkboxes ## - c = document.createElement('input') - c.setAttribute('type', 'checkbox') - if checked: c.setAttribute('checked', 'true') - if onchange: c.onchange = onchange - return c - -def create_number_input(value, step=1, onchange=None): - input = document.createElement('input') - input.setAttribute('type', 'number') - input.setAttribute('step', step) - input.value = value - input.style.width = 64 - input.style.height = 32 - input.onclick = lambda : this.focus() - if onchange: input.onchange = onchange - return input - -def create_float_input(value, step=0.01, onchange=None): - input = document.createElement('input') - input.setAttribute('type', 'number') - input.setAttribute('step', step) - input.value = value - input.style.width = 64 - input.style.height = 32 - input.onclick = lambda : this.focus() - if onchange: input.onchange = onchange - return input - - -def create_dropdown_button( name, options ): - div = document.createElement('div') - div.setAttribute('class', 'btn-group') - - b = document.createElement('button') - b.setAttribute('class', 'btn dropdown-toggle') - b.setAttribute('data-toggle', 'dropdown') - caret = document.createElement('span') - caret.setAttribute('class', 'caret') - b.appendChild( document.createTextNode(name)) - b.appendChild(caret) - - ## the darkstrap css fails to properly expand the options, - ## TODO - fix darkstrap or convert this to a 3D dropdown. - ul = document.createElement('ul') - ul.setAttribute('class', 'dropdown-menu') - for opt in options: - li = document.createElement('li') - a = document.createElement('a') - a.appendChild( document.createTextNode(opt) ) - li.appendChild( a ) - ul.appendChild( li ) - - div.appendChild(b) - div.appendChild(ul) - return div - - -CLICKABLES = [] -class SelectManager: - def __init__(self, camera): - self.camera = camera - document.addEventListener('mouseup', self.on_mouse_up.bind(self), false) - - def on_mouse_up(self, evt): - x = ( event.clientX / window.innerWidth ) * 2 - 1; - y = - ( event.clientY / window.innerHeight ) * 2 + 1; - vector = new THREE.Vector3( x, y, 0.5 ); - projector = new THREE.Projector(); - projector.unprojectVector( vector, self.camera ); - raycaster = new THREE.Raycaster( self.camera.position, vector.sub( self.camera.position ).normalize() ); - intersects = raycaster.intersectObjects( CLICKABLES ); - #if intersects.length > 0: - # ob = intersects[0].object - for inter in intersects: - ob = inter.object - print(ob) - if hasattr(ob, 'onclick'): - ob.onclick( inter ) - - - -class Window3D: - def __init__(self, element, scene, shadow_scene, interact_scene, position, scale ): - ## required for select dropdowns because `selectedIndex` is not updated by `e.cloneNode()` ## - self._sid = 0 - self.interact_scene = interact_scene - self.shadow_scene = shadow_scene - self.object = object = new THREE.CSS3DObject( element ) - self.position = object.position - self.rotation = object.rotation - self.scale = object.scale - - self.shadow = new THREE.CSS3DObject( element.cloneNode() ) - self.element = element - self.active = False - self.collasped = False - - ## shadow_images is required because every frame the entire dom is cloned to be rendered under webgl layer, - ## image data is lazy loaded, so even if the image is shown on the top interactive layer and cloned, - ## it still takes time before the clone will lazy load the image data, - ## below shadow_images holds a mapping of url and image, these must be inserted into the cloned dom each update. - self.shadow_images = {} - self.clone_videos = {} - self._video_textures = [] ## list of : {texture, video, context} - self.clone_iframes = {} ## this will not work, iframes are not lazy in the same way as images and videos. - - self.dropdown = None - self._scrollbars = {} - - x,y,z = position - self.object.position.set(x,y,z+1) - self.shadow.position.set(x,y,z) - - x,y,z = scale - self.object.scale.set(x,y,z) - self.shadow.scale.set(x,y,z) - - shadow_scene.add( self.shadow ) - interact_scene.add( self.object ) - - self.root = new THREE.Object3D() - scene.add( self.root ) - - self.create_windowframe() - - def newid(self): - self._sid += 1 - return self._sid - - def create_tab_menu(self): - return TabMenuWrapper( self ) - - - def create_iframe( self, url, element ): - ## this currently only renders on the top layer transparent layer, - ## to make iframes visible the top layer needs to become semi-transparent or opaque. - ## `element` is the DOM element that will have its opacity adjusted on mouse enter/leave - iframe = document.createElement('iframe') - iframe.setAttribute('src', url) - iframe.style.width = '100%' - iframe.style.height = '100%' - iframe.style.border = 0 - self._sid += 1 - id = '__fid'+self._sid - iframe.setAttribute('id', id) - - def f1(evt): - print('mouse enter') - element.style.opacity = 0.8 - def f2(evt): - print('mouse leave') - element.style.opacity = 0.2 - iframe.onmouseenter = f1 - iframe.onmouseleave = f2 - - return iframe - - def create_video( self, mp4=None, ogv=None ): - self._sid += 1 - id = '__vid'+self._sid - v = document.createElement('video') - v.setAttribute('id', id) - #v.setAttribute('autoplay', 'true') ## this must not be set, otherwise the clone will also play - #v.setAttribute('style', "color: rgba(255, 255, 0, 1)") ## this will not work - #v.setAttribute('style', "opacity: 2") ## this will not work either - - ## for some reason play/pause can not be forced on the clone, - ## this might have something to do with the clone always being reparented. - #def onclick_not_working(evt): - # vclone = self.clone_videos[ id ] - # print(vclone) - # if vclone.paused: - # print('playing...') - # vclone.play() - # else: - # vclone.pause() - # print('pause!') - - def onclick(evt): - print('video clicked') - if v.paused: - print('playing...') - v.play() - else: - v.pause() - print('pause!') - - v.onclick = onclick.bind(self) - - def onmetaload(evt): - print('video metadata loaded...') - - image = document.createElement( 'canvas' ); - image.width = v.videoWidth; - image.height = v.videoHeight; - - imageContext = image.getContext( '2d' ); - imageContext.fillStyle = '#000000'; - imageContext.fillRect( 0, 0, v.videoWidth, v.videoHeight ); - - texture = new THREE.Texture( image ); - texture.minFilter = THREE.LinearFilter; - texture.magFilter = THREE.LinearFilter; - - material = new THREE.MeshBasicMaterial( map=texture, overdraw=true ) - #plane = new THREE.PlaneGeometry( v.videoWidth, v.videoHeight, 4, 4 ); - plane = new THREE.PlaneGeometry( 1, 1, 4, 4 ); - mesh = new THREE.Mesh( plane, material ); - H = v.videoHeight - X = v.offsetLeft / 2 - Y = ((self.element.clientHeight-H) / 2) - v.offsetTop - #mesh.position.x = v.offsetLeft ## TODO - mesh.position.y = Y - mesh.position.z = 1 - mesh.scale.x = v.videoWidth - mesh.scale.y = v.videoHeight - - self.root.add( mesh ) - - - self._video_textures.append( {'texture':texture, 'video':v, 'context':imageContext, 'image':image} ) - - - v.addEventListener('loadedmetadata', onmetaload.bind(self), false) - - if mp4: - s = document.createElement('source') - s.setAttribute('src', mp4) - s.setAttribute('type', 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"') - v.appendChild( s ) - if ogv: - s = document.createElement('source') - s.setAttribute('src', ogv) - s.setAttribute('type', 'video/ogg; codecs="theora, vorbis"') - v.appendChild( s ) - - return v - - - def display_dropdown(self, e, options): - if not self.dropdown: - self.create_dropdown( e, options ) - else: - self.object.remove( self.dropdown ) - self.shadow.remove( self.dropdown_clone ) - self.root.remove( self._ddmesh1 ) - self.root.remove( self._ddmesh2 ) - self.dropdown = None - - def hide_dropdown(self): ## not working, three.js bug? - self.dropdown.visible = false - self.dropdown_clone.visible = false - - - def create_dropdown(self, e, options): - #global sel, g - #g = e - sel = document.createElement('select') - sel.setAttribute('multiple', 'multiple') - self._sid += 1 - id = '_sid'+self._sid - sel.setAttribute('id', id) - self._scrollbars[ id ] = 0 - - - for i,opt in enumerate(options): - o = document.createElement('option') - o.setAttribute('index', i) - o.appendChild( document.createTextNode(opt) ) - sel.appendChild( o ) - - ##print('clientHeight', sel.clientHeight) - ## sel.clientHeight can not be used here because the dom has not been updated, - ## as a simple workaround guess height based on number of options, - ## this needs to be done anyways because `sel` must be given a height in pixels, - ## to force it to display all the options, and not display a scroll bar (which are not synced). - H = 12 * options.length - if H < 100: H = 100 - sel.style.height = int(H * 0.95) - X = e.offsetLeft / 2 - Y = ((self.element.clientHeight-H) / 2) - (e.offsetHeight + e.offsetTop) - - ## create dropdown css object and add it to self.object, - ## this makes it part of the interactive scene, - ## it is also needs its own shadow clone to be updated. - self.dropdown = new THREE.CSS3DObject( sel ) - self.object.add( self.dropdown ) - self.dropdown_clone = new THREE.CSS3DObject(sel.cloneNode()) - self.shadow.add( self.dropdown_clone ) - - self.dropdown.position.x = X - self.dropdown.position.y = Y - self.dropdown.position.z += 20 - self.dropdown_clone.position.copy( self.dropdown.position ) - self.dropdown_clone.position.z -= 1 - - sel.focus() # required? - - ## this is used to capture a click on the dropdown popup, and copy selectedIndex - ## from the clone to the source, and if the source has an onchange callback, call it. - def onclick(evt): - #sel.focus() ## this triggers a bug that offsets the interactive layer - print(evt.toElement.getAttribute('index')) - e.selectedIndex = sel.selectedIndex = int(evt.toElement.getAttribute('index')) - ## setting `selectedIndex` on the source e will not trigger its `onchange` callback to fire, - ## so call onchange directly. Note that the event `evt` from the clone is passed the source - ## as the first argument. end-user code inside e.onchange should not modify elements referenced in the event. - ## note that the calling context is set to the source by `e.onchange(evt)` so it is safe to use `this` - ## inside of onchange. - if e.onchange: - e.onchange( evt ) - sel.onclick = onclick - - def onscroll(evt): ## this hack is required to capture the scroll position - self.dropdown_clone.element.scrollTop = sel.scrollTop - sel.onscroll = onscroll.bind(self) - - geo = new THREE.BoxGeometry( 1.1, H*1.1, 3 ); - mat = new THREE.MeshBasicMaterial( {'color': 0x00ffff, 'transparent':true, 'opacity':0.18, 'blending':THREE.AdditiveBlending } ); - self._ddmesh1 = m = new THREE.Mesh( geo, mat ); - self.root.add( m ); - m.castShadow = true; - m.position.x = X - m.position.y = Y - m.position.y += 10 - m.position.z = 1 - m.scale.x = e.clientWidth - - geo = new THREE.BoxGeometry( 1.07, H, 3 ); - mat = new THREE.MeshBasicMaterial( {'color': 0xffffff, 'transparent':true, 'opacity':0.48, 'blending':THREE.SubtractiveBlending } ); - self._ddmesh2 = m = new THREE.Mesh( geo, mat ); - self.root.add( m ); - m.castShadow = true; - m.position.x = X - m.position.y = Y - m.position.y += 10 - m.position.z = 15 - m.scale.x = e.clientWidth - - - def create_select_dropdown(self, options ): - self._sid += 1 - a = document.createElement('select') - a.setAttribute('id', '_sid'+self._sid) - - def onclick(e): - a.focus() ## allows the enter key to display options - self.display_dropdown(a, options) - a.onclick = onclick.bind(self) - - for opt in options: - o = document.createElement('option') - o.appendChild(document.createTextNode(opt)) - a.appendChild(o) - - return a - - def hide_windowframe(self): - self.mask.visible = False - self.shaded_border.visible = False - self.glowing_border.visible = False - - def create_windowframe(self): - geo = new THREE.BoxGeometry( 1, 1, 1 ); - mat = new THREE.MeshBasicMaterial( color=0x000000, opacity=0 ) - mat.blending = THREE.NoBlending - self.mask = r = new THREE.Mesh( geo, mat ); - self.root.add( r ); - #r.position.copy( self.object.position ) - r.position.z -= 5 - - geo = new THREE.BoxGeometry( 0.7, 1, 20 ); - mat = new THREE.MeshPhongMaterial( {'color': 0xffffff, 'transparent':true, 'opacity':0.8, 'blending':THREE.AdditiveBlending } ); - self.shaded_border = m = new THREE.Mesh( geo, mat ); - r.add( m ); - m.position.z -= 12 - m.castShadow = true; - m.receiveShadow = true; - - geo = new THREE.BoxGeometry( 1.1, 1.1, 1 ); - mat = new THREE.MeshBasicMaterial( {'color': 0x00ffff, 'transparent':true, 'opacity':0.18, 'blending':THREE.AdditiveBlending } ); - self.glowing_border = m = new THREE.Mesh( geo, mat ); - r.add( m ); - m.position.z -= 2 - - geo = new THREE.BoxGeometry( 1.1, 1.1, 50 ); - mat = new THREE.MeshBasicMaterial( {'color': 0x00ffff, 'transparent':true, 'opacity':0.28, 'blending':THREE.AdditiveBlending, 'wireframe':true } ); - m = new THREE.Mesh( geo, mat ); - r.add( m ); - m.position.z -= 40 - - - geo = new THREE.BoxGeometry( 0.025, 0.5, 30 ); - mat = new THREE.MeshPhongMaterial( {'color': 0xffffff } ); - self.right_bar = m = new THREE.Mesh( geo, mat ); - r.add( m ); - m.position.y += 0.3 - m.position.x -= 0.55 - m.position.z -= 10 - m.castShadow = true; - CLICKABLES.append( m ) - def expand(inter): - self.expand() - m.onclick = expand.bind(self) - - geo = new THREE.BoxGeometry( 0.9, 0.1, 20 ); - mat = new THREE.MeshPhongMaterial( color=0xffff00, transparent=True, opacity=0.84 ); - self.footer = m = new THREE.Mesh( geo, mat ); - r.add( m ); - m.position.y -= 0.6 - m.position.z -= 5 - m.castShadow = true; - CLICKABLES.append( m ) - - def clickfooter(inter): - self.active = True - if self.collasped: - self.expand() - m.onclick = clickfooter.bind(self) - - geo = new THREE.BoxGeometry( 0.2, 0.1, 10 ); - mat = new THREE.MeshPhongMaterial( {'color': 0xffff00 } ); - self.minimize_object = m = new THREE.Mesh( geo, mat ); - r.add( m ); - m.position.y += 0.8 - m.position.x += 0.45 - m.position.z -= 2 - m.castShadow = true; - CLICKABLES.append( m ) - def collaspe(inter): - self.collaspe() - m.onclick = collaspe.bind(self) - - def collaspe(self): - self.collasped = True - self.active = False - self.object.rotation.x = -Math.PI / 2 - self.object.position.y = 0 - - def expand(self): - self.collasped = False - self.active = True - self.object.rotation.x = 0 - - def spin90(self): - self.object.rotation.y += Math.PI / 2 - - def update(self): - if self.shadow.element.parentNode: - self.shadow.element.parentNode.removeChild( self.shadow.element ) - - if self.active and self.object.position.y < 400: - self.object.position.y += 10 - - self.root.position.copy( self.object.position ) - self.root.rotation.copy( self.object.rotation ) - - self.shadow.position.copy( self.object.position ) - self.shadow.rotation.copy( self.object.rotation ) - - w = self.element.clientWidth * 0.01 - h = self.element.clientHeight * 0.01 - - self.mask.scale.x = w*99 - self.mask.scale.y = h*99 - - ## this is just to display content, cloneNode(true) ensures deep copy - self.shadow.element = self.element.cloneNode(true) - - ## sync scrollbars of any div with an id, - ## note: this will not work with tab-content div's. - a = self.element.getElementsByTagName('DIV') - b = self.shadow.element.getElementsByTagName('DIV') - c = {} - for d in b: - if not d.id: continue - c[ d.id ] = d - - for d in a: - if not d.id: continue - clone = c[ d.id ] - #d._clone = clone ## no help for tab-content - if d.scrollTop: - clone.scrollTop = d.scrollTop - - ################################################ - - a = self.element.getElementsByTagName('SELECT') - b = self.shadow.element.getElementsByTagName('SELECT') - c = {} - for sel in b: - c[ sel.getAttribute('id') ] = sel - - for sel in a: - id = sel.getAttribute('id') - clone = c[ id ] - clone.selectedIndex = sel.selectedIndex - if sel.scrollTop: ## select `multiple` type boxes. (note: self.dropdown is not updated here) - clone.scrollTop = sel.scrollTop - - - a = self.element.getElementsByTagName('TEXTAREA') - b = self.shadow.element.getElementsByTagName('TEXTAREA') - c = {} - for sel in b: - c[ sel.getAttribute('id') ] = sel - - for sel in a: - c[ sel.getAttribute('id') ].value = sel.value - - - ## do not load iframes in the clone ## - iframes = self.shadow.element.getElementsByTagName('IFRAME') - for iframe in iframes: - iframe.src = None - - ## insert lazy loading iframes into shadow dom ## - ## it appears that this will not work, because when an iframe is reparented, - ## it triggers a reload of the iframe, there might be a way to cheat around this, - ## (possible workaround: block dom clone update until iframe has fully loaded) - ## but it would be better to have a different solution anyways that only single - ## renders the iframe - workaround: on mouse enter/leave adjust opacity of top css3d layer. - if False: - iframes = self.shadow.element.getElementsByTagName('IFRAME') - for frame in iframes: - #if frame.src in self.clone_iframes: - # lazy = self.clone_iframes[ frame.src ] - # frame.parentNode.replaceChild(lazy, frame) - if frame.getAttribute('srcHACK') in self.clone_iframes: - #lazy = self.clone_iframes[ frame.getAttribute('srcHACK') ] - #frame.parentNode.replaceChild(lazy, frame) - pass - else: - #self.clone_iframes[ frame.src ] = frame - iframe = document.createElement('iframe') - #iframe.setAttribute('src', frame.src) - #iframe.setAttribute('src', frame.getAttribute('srcHACK')) - #iframe.src = 'file://'+frame.getAttribute('srcHACK') - iframe.setAttribute('src','http://localhost:8000/') - iframe.style.width = '100%' - iframe.style.height = '100%' - iframe.style.zIndex = 100 - #self.clone_iframes[ frame.src ] = iframe - self.clone_iframes[ frame.getAttribute('srcHACK') ] = iframe - print('new iframe---') - print(iframe) - - - - - ## insert lazy loading images into shadow dom ## - images = self.shadow.element.getElementsByTagName('IMG') - for img in images: - if img.src in self.shadow_images: - lazy = self.shadow_images[ img.src ] - img.parentNode.replaceChild(lazy, img) - else: - self.shadow_images[ img.src ] = img - - ## this is still required because when the video lazy loads it sets - ## the proper size for the clone. - videos = self.shadow.element.getElementsByTagName('VIDEO') - for vid in videos: - id = vid.getAttribute('id') - if id in self.clone_videos: - lazy = self.clone_videos[ id ] - vid.parentNode.replaceChild(lazy, vid) - else: - #vid.setAttribute('autoplay', 'true') ## no help - #vid.play() ## no help - self.clone_videos[ id ] = vid - - for d in self._video_textures: - video = d['video'] - if video.readyState == video.HAVE_ENOUGH_DATA: - d['context'].drawImage( video, 0, 0 ) - d['texture'].needsUpdate = True diff --git a/regtests/html/three_basic_geoms.html b/regtests/html/three_basic_geoms.html deleted file mode 100644 index 6432a72..0000000 --- a/regtests/html/three_basic_geoms.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/regtests/html/three_catmull_clark.html b/regtests/html/three_catmull_clark.html deleted file mode 100644 index 3b5a5a4..0000000 --- a/regtests/html/three_catmull_clark.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/regtests/html/threepy.py b/regtests/html/threepy.py deleted file mode 100644 index 18de547..0000000 --- a/regtests/html/threepy.py +++ /dev/null @@ -1,504 +0,0 @@ -# Three.js HTML UI Generator -# by Brett Hartshorn - copyright 2014 -# You may destribute this file using the "New BSD" or MIT license - -pythonjs.configure(javascript=True) -from dddom import * ## provides Window3D and SelectManager - - -class Editor( Window3D ): - def __init__(self, engine, position=None): - element = document.createElement( 'div' ) - Window3D.__init__(self, element, engine.scene, engine.scene2, engine.scene3, position, [1,1,1] ) - element.setAttribute('class', 'well') - self.engine = engine - - b = document.createElement('button') - b.appendChild(document.createTextNode('run script')) - b.setAttribute('class', 'btn btn-inverse btn-small') - element.appendChild(b) - - opts = ['javascript', 'python'] - element.appendChild(document.createTextNode(' mode:')) - element.appendChild( self.create_select_dropdown(opts) ) - - element.appendChild(document.createElement('br')) - - con = document.createElement('div') - element.appendChild(con) - ta = create_textarea() - con.appendChild( ta ) - - def ondrop(evt): - print(evt) - evt.preventDefault() - if evt.dataTransfer.files.length==0: - url = evt.dataTransfer.getData("text/plain") - self.open_iframe(url) - else: - self.handle_drop_event(evt.dataTransfer.files) - - element.ondrop = ondrop.bind( self ) - element.ondragover = lambda evt: evt.preventDefault() - - - def onclick(evt): - eval( ta.value ) - b.onclick = onclick.bind(self) - - def open_iframe(self, url): - iframe = self.create_iframe( url, self.engine.renderer3.domElement ) - self.element.appendChild(iframe) - - def _gen_material_ui(self, model): - print(model.material) - div = document.createElement('div') - - ## Material.js - faceopts = ['FrontSide', 'BackSide', 'DoubleSide'] - div.appendChild(document.createTextNode(' face direction:')) - dd = self.create_select_dropdown(faceopts) - div.appendChild( dd ) - div.appendChild( document.createElement('br') ) - def onchange(evt): - opt = faceopts[this.selectedIndex] - print(opt) - model.material.side = eval('THREE.'+opt) - dd.onchange = onchange - - blendopts = ['NormalBlending', 'AdditiveBlending', 'SubtractiveBlending', 'NoBlending'] - div.appendChild(document.createTextNode(' blending:')) - dd = self.create_select_dropdown(blendopts) - div.appendChild( dd ) - div.appendChild( document.createElement('br') ) - def change_blending(evt): - opt = blendopts[this.selectedIndex] - print(opt) - model.material.blending = eval('THREE.'+opt) - dd.onchange = change_blending - - def change_wireframe(evt): model.material.wireframe = this.checked - div.appendChild(document.createTextNode(' wireframe:')) - checkbox = create_checkbox( model.material.wireframe, onchange=change_wireframe ) - div.appendChild( checkbox ) - - def change_wireframe_width(val): model.material.wireframeLinewidth = val * 10 - slider = create_slider( model.material.wireframeLinewidth*0.1, onchange=change_wireframe_width ) - div.appendChild( slider ) - - div.appendChild( document.createElement('br') ) - - - def change_opacity(val): - model.material.opacity = val - slider = create_slider( model.material.opacity, onchange=change_opacity ) - div.appendChild( document.createTextNode('opacity:') ) - div.appendChild( slider ) - - div.appendChild( document.createElement('br') ) - - - well = document.createElement('div') - well.setAttribute('class', 'well') - div.appendChild( well ) - - ## MeshBasicMaterial.js - well.appendChild(document.createTextNode(' diffuse:')) - input = document.createElement('input') - input.setAttribute('type', 'color') - input.style.width=64; input.style.height=32 - well.appendChild( input ) - def change_diffuse(evt): - hex = int( '0x'+this.value[1:] ) - model.material.color.setHex( hex ) - print(model.material.color) - ## oninput fails, can only get update after use has picked color - input.onchange = change_diffuse - - - ## MeshPhongMaterial.js - if hasattr(model.material, 'ambient'): - well.appendChild(document.createTextNode(' ambient:')) - input = document.createElement('input') - input.setAttribute('type', 'color') - input.style.width=64; input.style.height=32 - well.appendChild( input ) - def change_ambient(evt): - hex = int( '0x'+this.value[1:] ) - model.material.ambient.setHex( hex ) - print(model.material.ambient) - input.onchange = change_ambient - - if hasattr(model.material, 'emissive'): - well.appendChild(document.createTextNode(' emissive:')) - input = document.createElement('input') - input.setAttribute('type', 'color') - input.style.width=64; input.style.height=32 - well.appendChild( input ) - def change_emissive(evt): - hex = int( '0x'+this.value[1:] ) - model.material.emissive.setHex( hex ) - print(model.material.emissive) - input.onchange = change_emissive - - if hasattr(model.material, 'specular'): - #div.appendChild( document.createElement('br') ) - - div.appendChild(document.createTextNode(' specular:')) - - def change_shininess(val): - model.material.shininess = val * 100 - slider = create_slider( model.material.shininess*0.01, onchange=change_shininess ) - #div.appendChild( document.createTextNode(' shininess:') ) - div.appendChild( slider ) - - input = document.createElement('input') - input.setAttribute('type', 'color') - input.style.width=64; input.style.height=32 - div.appendChild( input ) - def change_specular(evt): - hex = int( '0x'+this.value[1:] ) - model.material.specular.setHex( hex ) - print(model.material.specular) - input.onchange = change_specular - - - - return div - - - def _gen_ui_single(self, model): - div = document.createElement('div') - div.setAttribute('class', 'well') - #h3 = document.createElement('h3') - #h3.appendChild( document.createTextNode(model.name) ) - #div.appendChild( h3 ) - - div.appendChild( document.createTextNode(' position:') ) - - def set_pos_x(evt): model.position.x = this.value - input = create_float_input( model.position.x, onchange=set_pos_x) - div.appendChild( input ) - - def set_pos_y(evt): model.position.y = this.value - input = create_float_input( model.position.y, onchange=set_pos_y) - div.appendChild( input ) - - def set_pos_z(evt): model.position.z = this.value - input = create_float_input( model.position.z, onchange=set_pos_z) - div.appendChild( input ) - - div.appendChild( document.createElement('br') ) - - div.appendChild( document.createTextNode(' rotation:') ) - - def set_rot_x(evt): model.rotation.x = this.value - input = create_float_input( model.rotation.x, onchange=set_rot_x) - div.appendChild( input ) - - def set_rot_y(evt): model.rotation.y = this.value - input = create_float_input( model.rotation.y, onchange=set_rot_y) - div.appendChild( input ) - - def set_rot_z(evt): model.rotation.z = this.value - input = create_float_input( model.rotation.z, onchange=set_rot_z) - div.appendChild( input ) - - div.appendChild( document.createElement('br') ) - - div.appendChild( document.createTextNode(' scale:') ) - - def set_scale_x(evt): model.scale.x = this.value - input = create_float_input( model.scale.x, onchange=set_scale_x) - div.appendChild( input ) - - def set_scale_y(evt): model.scale.y = this.value - input = create_float_input( model.scale.y, onchange=set_scale_y) - div.appendChild( input ) - - def set_scale_z(evt): model.scale.z = this.value - input = create_float_input( model.scale.z, onchange=set_scale_z) - div.appendChild( input ) - - - - - if hasattr(model, 'material'): ## could be THREE.Mesh or THREE.SkinnedMesh - ui = self._gen_material_ui(model) - div.appendChild( ui ) - return div - - def _gen_ui_multi(self, arr): - menu = self.create_tab_menu() - for i,model in enumerate(arr): - page = menu.add_tab( model.name ) - div = self._gen_ui_single( model ) - page.appendChild( div ) - return menu.root - - def _gen_ui(self, o): - - if instanceof(o, Array): - return self._gen_ui_multi(o) - elif instanceof(o, THREE.Object3D): - return self._gen_ui_single(o) - else: - raise RuntimeError('can not generate ui for type:'+o) - - - - def handle_drop_event(self, files): - self.engine.pointlight1.position.copy( self.position ) - self.engine.pointlight1.position.z += 40 - self.engine.gizmo.attach( self.right_bar ) - - images = [] - videos = [] - for file in files: - ## note: `file.path` is only available in NodeWebkit, - ## for simple testing we will fake it here. - file.path = '/home/brett/Desktop/'+file.name - - if file.path.endswith('.dae'): - loader = new THREE.ColladaLoader(); - loader.options.convertUpAxis = true; - #def on_load(collada): - # print(collada) - # element3D.root.add( collada.scene ) - #loader.load( 'http://localhost:8000'+file.path, on_load ) - - def onload(evt): - parser = new DOMParser() - collada = loader.parse( parser.parseFromString(evt.target.result, "application/xml") ) - print(collada.scene) - collada.scene.scale.set(0.25, 0.25, 0.25) - collada.scene.position.set(0, -100, 200) - self.root.add( collada.scene ) - self.collada = collada.scene - - self.element.appendChild( self._gen_ui(collada.scene.children) ) - - reader = new FileReader() - reader.onload = onload.bind(self) - reader.readAsText( file ) - - elif file.path.endswith('.html'): - iframe = element3D.create_iframe( file.path, renderer3.domElement ) - self.element.appendChild(iframe) - - elif file.path.endswith('.css'): - print( 'TODO css' ) - elif file.path.endswith('.js'): - print( 'TODO js' ) - elif file.path.endswith('.jpg') or file.path.endswith('.png') or file.path.endswith('.gif'): - - li = document.createElement('li') - images.append(li) - img = document.createElement('img') - img.setAttribute('src', file.path) - img.setAttribute('class', 'well img-rounded') - li.appendChild( img ) - - - elif file.path.endswith('.mp4'): - li = document.createElement('li') - video = self.create_video( mp4=file.path ) - li.appendChild( video ) - videos.append( li ) - - ## note, nodewebkit is missing libffmpegsumo, then it only plays ogv videos - elif file.path.endswith('.ogv'): - #li = document.createElement('li') - video = self.create_video( ogv=file.path ) - self.element.appendChild(video) - #li.appendChild( video ) - #videos.append( li ) - - elif file.path.endswith('.py'): - def on_load(event): - contents = event.target.result - py_body_editor.setValue( contents ) - - Reader.onload = on_load - Reader.readAsText( file ) - - if images: - print('loading images') - ul = document.createElement('ul') - self.element.appendChild(ul) - for li in images: - ul.appendChild(li) - - if videos: - print('loading videos') - ul = document.createElement('ul') - self.element.appendChild(ul) - for li in videos: - ul.appendChild(li) - - - -class Engine: - def Editor(self, **kw): - e = Editor(self, **kw) - self.windows.append( e ) - return e - - - def __init__(self): - self.windows = [] - - SCREEN_WIDTH = window.innerWidth - SCREEN_HEIGHT = window.innerHeight - - self.camera = camera = new THREE.PerspectiveCamera( 35, window.innerWidth / window.innerHeight, 1, 10000 ); - camera.position.set( 200, 250, 800 ); - - self._selectman = SelectManager(self.camera) - - self.controls = controls = new THREE.TrackballControls( camera ); - camera.smooth_target = controls.target.clone() - camera.smooth_target.y = 300 - - controls.rotateSpeed = 1.0; - controls.zoomSpeed = 1.2; - controls.panSpeed = 0.8; - - controls.noZoom = false; - controls.noPan = false; - - controls.staticMoving = false; - controls.dynamicDampingFactor = 0.3; - - controls.keys = [ 65, 83, 68 ]; - - self.scene = scene = new THREE.Scene(); - self.scene3 = scene3 = new THREE.Scene(); - - - self.renderer = renderer = new THREE.WebGLRenderer(alpha=True); - renderer.shadowMapEnabled = true - renderer.shadowMapType = THREE.PCFSoftShadowMap - renderer.shadowMapSoft = true - - - renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.domElement.style.position = 'absolute'; - renderer.domElement.style.top = 0; - renderer.domElement.style.zIndex = 1; - - self.gizmo = new THREE.TransformControls( camera, renderer.domElement ) - scene.add( self.gizmo ) - - self.spotlight = light = new( - THREE.SpotLight( 0xffffff, 1, 0, Math.PI / 2, 1 ) - ) - light.position.set( 0, 1400, 400 ) - light.target.position.set( 0, 0, 0 ) - - light.castShadow = True - light.shadowCameraNear = 400 - light.shadowCameraFar = 1900 - light.shadowCameraFov = 64 - light.shadowCameraVisible = True - - light.shadowBias = 0.0001 - light.shadowDarkness = 0.4 - - light.shadowMapWidth = 512 - light.shadowMapHeight = 512 - - scene.add( light ); - - self.pointlight1 = pointlight = new( THREE.PointLight(0xffffff, 2, 500) ) - pointlight.position.set( 10, 100, 300 ) - scene.add( pointlight ) - - self.pointlight2 = pointlight = new( THREE.PointLight(0xffffff, 2, 500) ) - pointlight.position.set( -10, -100, 200 ) - scene.add( pointlight ) - - renderer.sortObjects = false - renderer.autoClear = false - - renderTarget = new( - THREE.WebGLRenderTarget( - SCREEN_WIDTH, - SCREEN_HEIGHT, - minFilter = THREE.LinearFilter, - magFilter = THREE.LinearFilter, - format = THREE.RGBAFormat, ## RGBA format is required to composite over css3d render - stencilBuffer = false - ) - ) - - - hblur = new(THREE.ShaderPass( THREE.HorizontalTiltShiftShader )) - vblur = new(THREE.ShaderPass( THREE.VerticalTiltShiftShader )) - - bluriness = 1.7; - hblur.uniforms[ 'h' ].value = bluriness / SCREEN_WIDTH; - vblur.uniforms[ 'v' ].value = bluriness / SCREEN_HEIGHT; - - hblur.uniforms[ 'r' ].value = 0.1 - vblur.uniforms[ 'r' ].value = 0.1 - - - self.composer = composer = new(THREE.EffectComposer( renderer, renderTarget )) - - renderModel = new(THREE.RenderPass( scene, camera )) - - vblur.renderToScreen = true; - composer.addPass( renderModel ); - composer.addPass( hblur ); - composer.addPass( vblur ); - - - self.scene2 = scene2 = new THREE.Scene(); - - - self.renderer2 = renderer2 = new THREE.CSS3DRenderer(); - renderer2.setSize( window.innerWidth, window.innerHeight ); - renderer2.domElement.style.position = 'absolute'; - renderer2.domElement.style.top = 0; - renderer2.domElement.style.zIndex = 0; - document.body.appendChild( renderer2.domElement ); - - self.renderer3 = renderer3 = new THREE.CSS3DRenderer(); - renderer3.setSize( window.innerWidth, window.innerHeight ); - renderer3.domElement.style.position = 'absolute'; - renderer3.domElement.style.top = 0; - renderer3.domElement.style.opacity = 0.1; - renderer3.domElement.style.zIndex=4; - - document.body.appendChild( renderer2.domElement ); - document.body.appendChild( renderer.domElement ); - document.body.appendChild( renderer3.domElement ); - - - - def animate(self): - requestAnimationFrame( self.animate.bind(self) ); - self.gizmo.update() - - d = self.camera.smooth_target.clone() - d.sub(self.controls.target) - self.controls.target.add( d.multiplyScalar(0.03) ) - self.controls.update() - - for win in self.windows: win.update() - self.renderer2.render( self.scene2, self.camera ) - self.renderer.clear() - self.composer.render( self.scene, self.camera ) - self.renderer3.render( self.scene3, self.camera ) - - def run(self): - #self.animate() - setTimeout(self.animate.bind(self), 1000) - -threepy = { - 'Engine' : lambda : Engine(), -} - -#pythonjs.configure(javascript=False) -#threepy.Editor = lambda **kw: Engine(**kw) diff --git a/regtests/html/webgl_css3d_domshadow.html b/regtests/html/webgl_css3d_domshadow.html deleted file mode 100644 index df6d9c3..0000000 --- a/regtests/html/webgl_css3d_domshadow.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/regtests/html/webgl_css3d_editor.html b/regtests/html/webgl_css3d_editor.html deleted file mode 100644 index 2154bf3..0000000 --- a/regtests/html/webgl_css3d_editor.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/regtests/html/webgl_css3d_sandbox.html b/regtests/html/webgl_css3d_sandbox.html deleted file mode 100644 index bd2ade9..0000000 --- a/regtests/html/webgl_css3d_sandbox.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/regtests/html/webgl_css3d_simple_editor.html b/regtests/html/webgl_css3d_simple_editor.html deleted file mode 100644 index f81cbdb..0000000 --- a/regtests/html/webgl_css3d_simple_editor.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/regtests/lang/builtins.py b/regtests/lang/builtins.py deleted file mode 100644 index 61cbd2a..0000000 --- a/regtests/lang/builtins.py +++ /dev/null @@ -1,28 +0,0 @@ -''' -builtin functions -''' - - -def main(): - n = float('1.1') - TestError( n==1.1 ) - - n = float('NaN') - TestError( isNaN(n)==True ) - - r = round( 1.1234, 2) - #print(r) - TestError( str(r) == '1.12' ) - - r = round( 100.001, 2) - TestError( r == 100 ) - - i = int( 100.1 ) - TestError( i == 100 ) - - r = round( 5.49 ) - TestError( r == 5 ) - - r = round( 5.49, 1 ) - TestError( r == 5.5 ) - diff --git a/regtests/lang/equality.py b/regtests/lang/equality.py deleted file mode 100644 index f5c273d..0000000 --- a/regtests/lang/equality.py +++ /dev/null @@ -1,31 +0,0 @@ -''' -== -''' -# https://github.com/PythonJS/PythonJS/issues/129 - -def main(): - TestError( 0==0 ) - TestError( 1==1 ) - TestError( 1.0==1 ) - TestError('a'=='a') - - - a = [6] - b = [6] - t = a==b - TestError( t==True ) - - a = (6,) - b = (6,) - t = a==b - TestError( t==True ) - - t = ''==0 ## javascript gotcha - TestError( t==False ) - - t = [1,2]==[1,2] ## javascript gotcha - TestError( t==True ) - - t = ["1","2"] != [1,2] ## javascript gotcha - TestError( t==True ) - diff --git a/regtests/lang/eval.py b/regtests/lang/eval.py deleted file mode 100644 index f68b971..0000000 --- a/regtests/lang/eval.py +++ /dev/null @@ -1,12 +0,0 @@ -''' -eval -''' - -def foo(): return 42 -bar = lambda: 42 - -def main(): - eval('a = bar()') # This one works - eval('b = foo()') # 'foo' is undefined in normal mode under NodeJS but works in NodeWebkit and Chrome!? - TestError( a==42 ) - TestError( b==42 ) diff --git a/regtests/lang/eval_order.py b/regtests/lang/eval_order.py deleted file mode 100644 index 149ec0e..0000000 --- a/regtests/lang/eval_order.py +++ /dev/null @@ -1,8 +0,0 @@ -''' -evaluation order -''' -# https://github.com/PythonJS/PythonJS/issues/131 - -def main(): - a = False and (False or True) - TestError( a==False ) \ No newline at end of file diff --git a/regtests/lang/if_else.py b/regtests/lang/if_else.py deleted file mode 100644 index aa42c79..0000000 --- a/regtests/lang/if_else.py +++ /dev/null @@ -1,46 +0,0 @@ -''' -if/else -''' - -def func(x=None, callback=None): - a = False - if x: - a = False - else: - a = True - - TestError( a==True ) - - a = False - if callback: - a = True - else: - a = False - TestError( a==True ) - -def main(): - a = False - if 1: - a = True - TestError( a==True ) - - a = False - if False: - a = False - else: - a = True - - TestError( a==True ) - - a = False - if None: - a = False - else: - a = True - - TestError( a==True ) - - cb = lambda : 1+1 - func( callback=cb ) - - diff --git a/regtests/lang/if_not.py b/regtests/lang/if_not.py deleted file mode 100644 index 7d4371b..0000000 --- a/regtests/lang/if_not.py +++ /dev/null @@ -1,30 +0,0 @@ -"""if not""" - -def main(): - a = False - b = False - if not a: - b = True - - TestError( b == True ) - - a = 0 - b = False - if not a: - b = True - - TestError( b == True ) - - a = 0.0 - b = False - if not a: - b = True - - TestError( b == True ) - - a = None - b = False - if not a: - b = True - - TestError( b == True ) diff --git a/regtests/lang/in.py b/regtests/lang/in.py deleted file mode 100644 index e868b70..0000000 --- a/regtests/lang/in.py +++ /dev/null @@ -1,16 +0,0 @@ -''' -in (contains) -''' - -def func( word, custom={} ): - if word in custom: - return True - else: - return False - -def main(): - TestError( func('x', custom={'x':1})==True ) - - TestError( func('y', custom={'x':1})==False ) - - diff --git a/regtests/lang/inline.py b/regtests/lang/inline.py deleted file mode 100644 index 7a8e3e4..0000000 --- a/regtests/lang/inline.py +++ /dev/null @@ -1,5 +0,0 @@ -"""inline""" - -def main(): - JS("now = new Date()") - inline("now = new Date()") diff --git a/regtests/lang/javascript_mode.py b/regtests/lang/javascript_mode.py deleted file mode 100644 index 3a1ecfb..0000000 --- a/regtests/lang/javascript_mode.py +++ /dev/null @@ -1,5 +0,0 @@ -"""@javaScript decorator in JS mode""" -def main(): - if PYTHON == 'PYTHONJS': - @javascript - def dummy(): return "" \ No newline at end of file diff --git a/regtests/lang/new.py b/regtests/lang/new.py deleted file mode 100644 index b65296b..0000000 --- a/regtests/lang/new.py +++ /dev/null @@ -1,8 +0,0 @@ -''' -js new keyword -''' - -def main(): - #a = new Date() ## this also works - a = JS(' new Date()') - TestError( a.getFullYear()==2014 ) diff --git a/regtests/lang/raise.py b/regtests/lang/raise.py deleted file mode 100644 index 6a19207..0000000 --- a/regtests/lang/raise.py +++ /dev/null @@ -1,28 +0,0 @@ -''' -raise and catch error -''' - -def main(): - a = False - try: - raise TypeError - except TypeError: - a = True - - TestError( a==True ) - - b = False - try: - b = True - except: - b = False - - TestError( b==True ) - - c = False - try: - raise AttributeError('name') - except AttributeError: - c = True - - TestError( c==True ) diff --git a/regtests/lang/switch.py b/regtests/lang/switch.py deleted file mode 100644 index 75aca9f..0000000 --- a/regtests/lang/switch.py +++ /dev/null @@ -1,17 +0,0 @@ -''' -switch case default -''' - -def main(): - x = None - a = 2 - switch a: - case 1: - x = 'fail' - case 2: - x = 'ok' - default: - break - - TestError( x=='ok' ) - diff --git a/regtests/lang/try_except.py b/regtests/lang/try_except.py deleted file mode 100644 index 5359aff..0000000 --- a/regtests/lang/try_except.py +++ /dev/null @@ -1,14 +0,0 @@ -''' -try except -''' - -def main(): - a = [1,2,3] - b = False - try: - a.no_such_method() - b = 'this should not happen' - except: - b = True - TestError( b == True ) - diff --git a/regtests/list/comp.py b/regtests/list/comp.py deleted file mode 100644 index 2f2d33f..0000000 --- a/regtests/list/comp.py +++ /dev/null @@ -1,10 +0,0 @@ -''' -list comprehensions -''' - -def main(): - a = [x for x in range(3)] - TestError( len(a)==3 ) - TestError( a[0]==0 ) - TestError( a[1]==1 ) - TestError( a[2]==2 ) diff --git a/regtests/list/concatenate.py b/regtests/list/concatenate.py deleted file mode 100644 index 50e21e8..0000000 --- a/regtests/list/concatenate.py +++ /dev/null @@ -1,12 +0,0 @@ -"""concatenate lists""" - -def main(): - a = [1,2] - b = [3,4] - c = a + b - - TestError( len(c)==4 ) - TestError( c[0]==1 ) - TestError( c[1]==2 ) - TestError( c[2]==3 ) - TestError( c[3]==4 ) diff --git a/regtests/list/contains.py b/regtests/list/contains.py deleted file mode 100644 index 17266cc..0000000 --- a/regtests/list/contains.py +++ /dev/null @@ -1,7 +0,0 @@ -"""if x in list""" -def main(): - a = ['foo', 'bar'] - TestError( 'foo' in a ) - - b = [0, 1, 2] - TestError( 2 in b ) diff --git a/regtests/list/if_empty.py b/regtests/list/if_empty.py deleted file mode 100644 index 04634be..0000000 --- a/regtests/list/if_empty.py +++ /dev/null @@ -1,35 +0,0 @@ -"""if empty list then false""" - -class A: - pass - -def main(): - d = [] - if d: - err1 = 1 - else: - err1 = 0 - - if []: - err2 = 1 - else: - err2 = 0 - - d.append('xxx') - if d: - err3 = 0 - else: - err3 = 1 - - TestError( err1 == 0 ) - TestError( err2 == 0 ) - TestError( err3 == 0 ) - - a = A() - a.x = [] - if a.x: - err4 = 1 - else: - err4 = 0 - - TestError( err4 == 0 ) diff --git a/regtests/list/index.py b/regtests/list/index.py deleted file mode 100644 index ced1e0b..0000000 --- a/regtests/list/index.py +++ /dev/null @@ -1,7 +0,0 @@ -"""list indices""" -def main(): - a = [1,2,3,4] - idx = 1 - TestError( a[0]==1 ) - TestError( a[idx]==2 ) - TestError( a.index(3)==2 ) diff --git a/regtests/list/insert.py b/regtests/list/insert.py deleted file mode 100644 index 8596ce4..0000000 --- a/regtests/list/insert.py +++ /dev/null @@ -1,12 +0,0 @@ -"""insert""" -def main(): - a = [1,2,3,4] - TestError( len(a)==4 ) - - a.insert(0, 'hi') - TestError( len(a)==5 ) - TestError( a[0]=='hi' ) - - a.insert(1, a.pop(0)) - TestError( a[0]==1 ) - TestError( a[1]=='hi' ) diff --git a/regtests/list/loop.py b/regtests/list/loop.py deleted file mode 100644 index 68b61aa..0000000 --- a/regtests/list/loop.py +++ /dev/null @@ -1,22 +0,0 @@ -''' -simple for loop -''' - -def main(): - a = [1,2,3] - y = 0 - for x in a: - y += x - TestError( y==6 ) - - b = range(3) - z = 0 - for x in b: - z += x - TestError( z==3 ) - - w = 0 - for i in a: - for j in b: - w += 1 - TestError( w==9 ) diff --git a/regtests/list/mul.py b/regtests/list/mul.py deleted file mode 100644 index 5938f4d..0000000 --- a/regtests/list/mul.py +++ /dev/null @@ -1,9 +0,0 @@ -"""list multiplication""" - - -def main(): - a = ['hi'] - b = a * 2 - TestError( len(b)==2 ) - TestError( b[0]=='hi' ) - TestError( b[1]=='hi' ) diff --git a/regtests/list/neg_index.py b/regtests/list/neg_index.py deleted file mode 100644 index 7569a1f..0000000 --- a/regtests/list/neg_index.py +++ /dev/null @@ -1,6 +0,0 @@ -"""negative list indices""" -def main(): - a = [1,2,3,4] - idx = -2 - TestError( a[-1]==4 ) ## this works in javascript mode because the translator knows index is negative - TestError( a[idx]==3 ) ## this fails in javascript mode. diff --git a/regtests/list/pop.py b/regtests/list/pop.py deleted file mode 100644 index c9e1558..0000000 --- a/regtests/list/pop.py +++ /dev/null @@ -1,13 +0,0 @@ -"""list.pop(n)""" - - -def main(): - a = list(range(10)) - b = a.pop() - TestError( b==9 ) - c = a.pop(0) - TestError( c==0 ) - - d = ['A', 'B'] - TestError( d.pop(1)=='B' ) - TestError( len(d)==1 ) \ No newline at end of file diff --git a/regtests/list/range.py b/regtests/list/range.py deleted file mode 100644 index a553042..0000000 --- a/regtests/list/range.py +++ /dev/null @@ -1,12 +0,0 @@ -"""range""" -def main(): - a = range(10) - TestError( len(a)==10 ) - TestError( a[0] == 0 ) - TestError( a[9] == 9 ) - - b = range(1,10) - TestError( len(b)==9 ) - TestError( b[0] == 1 ) - TestError( b[8] == 9 ) - diff --git a/regtests/list/remove.py b/regtests/list/remove.py deleted file mode 100644 index 337afd2..0000000 --- a/regtests/list/remove.py +++ /dev/null @@ -1,7 +0,0 @@ -"""remove""" - -def main(): - a = [1,2] - a.remove(1) - TestError( len(a) == 1 ) - diff --git a/regtests/list/set_slice.py b/regtests/list/set_slice.py deleted file mode 100644 index c09c62d..0000000 --- a/regtests/list/set_slice.py +++ /dev/null @@ -1,42 +0,0 @@ -"""list slice set""" - - -def main(): - a = list(range(10)) - a[ 2:4 ] = 'XXXY' - - #if BACKEND=='DART': - # print(a[...]) - #else: - # print(a) - - TestError( a[0]==0 ) - TestError( a[1]==1 ) - - TestError( a[2]=='X' ) - TestError( a[3]=='X' ) - TestError( a[4]=='X' ) - TestError( a[5]=='Y' ) - - TestError( a[6]==4 ) - TestError( a[7]==5 ) - TestError( a[8]==6 ) - TestError( a[9]==7 ) - TestError( a[10]==8 ) - TestError( a[11]==9 ) - - b = list(range(3)) - c = b [ :2 ] - TestError( c[0]==0 ) - TestError( c[1]==1 ) - - b[ :2 ] = 'ABC' - TestError( len(b)==4 ) - TestError( b[0]=='A' ) - - d = list(range(10)) - d[ 2:4 ] = [99, 100] - TestError( d[0]==0 ) - TestError( d[1]==1 ) - TestError( d[2]==99 ) - TestError( d[3]==100 ) diff --git a/regtests/list/setitem.py b/regtests/list/setitem.py deleted file mode 100644 index 324ef44..0000000 --- a/regtests/list/setitem.py +++ /dev/null @@ -1,19 +0,0 @@ -"""setitem and append""" -def main(): - a = [1,2,3,4] - idx = 1 - TestError( a[0]==1 ) - TestError( a[idx]==2 ) - - a[ 0 ] = 'hello' - a[ 1 ] = 'world' - TestError( a[0]=='hello' ) - TestError( a[1]=='world' ) - - a.append( 'xxx' ) - TestError( a[4]=='xxx' ) - TestError( len(a)==5 ) - - a.append( 'yyy' ) - TestError( a[5]=='yyy' ) - TestError( len(a)==6 ) diff --git a/regtests/list/simple.py b/regtests/list/simple.py deleted file mode 100644 index e9eeb93..0000000 --- a/regtests/list/simple.py +++ /dev/null @@ -1,7 +0,0 @@ -"""basics""" -def main(): - a = [1,2,3,4] - TestError( len(a)==4 ) - - #b = list() - #TestError( len(b)==0 ) diff --git a/regtests/list/slice.py b/regtests/list/slice.py deleted file mode 100644 index 11b12f3..0000000 --- a/regtests/list/slice.py +++ /dev/null @@ -1,49 +0,0 @@ -"""list slice""" - -class XXX: - def __init__(self): - self.v = range(10) - def method(self, a): - return a - -def main(): - a = range(10)[:-5] - TestError( len(a)==5 ) - TestError( a[4]==4 ) - - #if BACKEND=='DART': - # print(a[...]) - #else: - # print(a) - - - b = range(10)[::2] - TestError( len(b)==5 ) - TestError( b[0]==0 ) - TestError( b[1]==2 ) - TestError( b[2]==4 ) - TestError( b[3]==6 ) - TestError( b[4]==8 ) - - #if BACKEND=='DART': - # print(b[...]) - #else: - # print(b) - - - c = range(20) - d = c[ len(b) : ] - - #if BACKEND=='DART': - # print(d[...]) - #else: - # print(d) - - TestError( len(d)==15 ) - - x = XXX() - e = x.v[ len(b) : ] - TestError( len(e)==5 ) - - f = x.method( x.v[len(b):] ) - TestError( len(f)==5 ) diff --git a/regtests/list/slice_reverse.py b/regtests/list/slice_reverse.py deleted file mode 100644 index dfe0a2d..0000000 --- a/regtests/list/slice_reverse.py +++ /dev/null @@ -1,30 +0,0 @@ -"""list reverse slice""" - - -def main(): - a = range(10) - b = a[ 4::-1 ] - - #if BACKEND=='DART': - # print(b[...]) - #else: - # print(b) - - - TestError( b[0]==4 ) - TestError( b[1]==3 ) - TestError( b[2]==2 ) - TestError( b[3]==1 ) - TestError( b[4]==0 ) - - c = range(20) - d = c[ 2::-1 ] - - #if BACKEND=='DART': - # print(d[...]) - #else: - # print(d) - - TestError( d[0]==2 ) - TestError( d[1]==1 ) - TestError( d[2]==0 ) diff --git a/regtests/list/sort.py b/regtests/list/sort.py deleted file mode 100644 index a990fb0..0000000 --- a/regtests/list/sort.py +++ /dev/null @@ -1,16 +0,0 @@ -"""list sort""" - -def main(): - x = [100, 10, 3,2,1] - x.sort() - TestError( x[0]==1 ) - TestError( x[1]==2 ) - TestError( x[2]==3 ) - TestError( x[3]==10 ) - TestError( x[4]==100 ) - - y = ['C', 'B', 'A'] - y.sort() - TestError( y[0]=='A' ) - TestError( y[1]=='B' ) - TestError( y[2]=='C' ) diff --git a/regtests/loop/for_else.py b/regtests/loop/for_else.py deleted file mode 100644 index f8c0839..0000000 --- a/regtests/loop/for_else.py +++ /dev/null @@ -1,13 +0,0 @@ -''' -for else loop (DEPRECATED) -''' - -def main(): - for i in range(10): - if i==0: - break - - else: - pass - - diff --git a/regtests/loop/for_loop.py b/regtests/loop/for_loop.py deleted file mode 100644 index ec7c709..0000000 --- a/regtests/loop/for_loop.py +++ /dev/null @@ -1,74 +0,0 @@ -''' -for loop tests -''' - -def main(): - - a = [1,2,3] - y = 0 - for x in a: - y += x - TestError( y==6 ) - - z = '' - arr = ['a', 'b', 'c'] - for v in arr: - z += v - TestError( z == 'abc' ) - - b = False - if 'a' in arr: - b = True - TestError( b == True ) - - s = 'hello world' - z = '' - for char in s: - z += char - TestError( z == 'hello world' ) - - b = False - if 'hello' in s: - b = True - TestError( b==True ) - - ob = {'a' : 'A', 'b' : 'B'} - k = '' - v = '' - for key in ob: - k += key - v += ob[key] - TestError(k=='ab' or k=='ba') - TestError(v=='AB' or v=='BA') - - keys = [] - values = [] - for x,y in ob.items(): - keys.append( x ) - values.append( y ) - - TestError( 'a' in keys ) - TestError( 'A' in values ) - - ob2 = {'c':'C', 'd':'D'} - e = 0 - arr = [] - for x,y in ob.items(): - arr.append(x) - arr.append(y) - for w,z in ob2.items(): - e += 1 - arr.append(w) - arr.append(z) - - TestError( e==4 ) - TestError( 'a' in arr) - TestError( 'b' in arr) - TestError( 'A' in arr) - TestError( 'B' in arr) - TestError( 'c' in arr) - TestError( 'C' in arr) - TestError( 'd' in arr) - TestError( 'D' in arr) - - diff --git a/regtests/loop/range.py b/regtests/loop/range.py deleted file mode 100644 index d81c593..0000000 --- a/regtests/loop/range.py +++ /dev/null @@ -1,29 +0,0 @@ -''' -range builtin -''' - -def main(): - a = range(10) - TestError( a[0]==0 ) - TestError( a[1]==1 ) - TestError( len(a)==10 ) - - b = range(1,10) - TestError( b[0]==1 ) - TestError( b[1]==2 ) - TestError( len(b)==9 ) - - c = 0 - for i in range(10): - c += 1 - TestError( c == 10 ) - - d = 0 - for i in range(1, 10): - d += 1 - TestError( d == 9 ) - - e = 0 - for i in range(1, 8+2): - e += 1 - TestError( e == 9 ) diff --git a/regtests/loop/while.py b/regtests/loop/while.py deleted file mode 100644 index 12b116c..0000000 --- a/regtests/loop/while.py +++ /dev/null @@ -1,25 +0,0 @@ -''' -while loop -''' - -arr1 = [] -arr2 = [] - -def main(): - a = 0 - i = 0 - while i < 10: - j = 0 - while j < 10: - a += 1 - j += 1 - i += 1 - - TestError( a==100 ) - - while len(arr1)+len(arr2) < 10: - arr1.append( 1 ) - arr2.append( 2 ) - - TestError( len(arr1)==5 ) - TestError( len(arr2)==5 ) diff --git a/regtests/loop/while_else.py b/regtests/loop/while_else.py deleted file mode 100644 index 447050f..0000000 --- a/regtests/loop/while_else.py +++ /dev/null @@ -1,25 +0,0 @@ -''' -while else loop (DEPRECATED) -''' - -def main(): - - a = False - i = 0 - while i < 10: - i += 1 - else: - a = True - - TestError( a==True ) - - b = False - i = 0 - while i < 10: - i += 1 - break - else: - b = True - - TestError( b==False ) - diff --git a/regtests/loop/yield.py b/regtests/loop/yield.py deleted file mode 100644 index fb4a2db..0000000 --- a/regtests/loop/yield.py +++ /dev/null @@ -1,27 +0,0 @@ -''' -generator function -''' - -def fib(n): - a, b = 0, 1 - for x in range(n): - yield a - a,b = b, a+b - yield 'world' - -def main(): - arr = [] - for n in fib(20): - arr.append( n ) - - TestError( arr[0]==0 ) - TestError( arr[1]==1 ) - TestError( arr[2]==1 ) - TestError( arr[3]==2 ) - TestError( arr[4]==3 ) - TestError( arr[5]==5 ) - TestError( arr[6]==8 ) - TestError( arr[7]==13 ) - TestError( arr[8]==21 ) - TestError( arr[9]==34 ) - TestError( arr[10]==55 ) diff --git a/regtests/requirejs/import_p2js.py b/regtests/requirejs/import_p2js.py deleted file mode 100644 index e621b1d..0000000 --- a/regtests/requirejs/import_p2js.py +++ /dev/null @@ -1,11 +0,0 @@ -'''load p2.js physics library''' -# sudo npm install -g p2 -import p2 - -def main(): - v1 = p2.vec2.create() - v2 = p2.vec2.fromValues(10,20) - TestError( len(v1)==2 ) - TestError( v2[0]==10 ) - TestError( v2[1]==20 ) - diff --git a/regtests/requirejs/import_threejs.py b/regtests/requirejs/import_threejs.py deleted file mode 100644 index 27837c8..0000000 --- a/regtests/requirejs/import_threejs.py +++ /dev/null @@ -1,12 +0,0 @@ -'''load three.js library''' -# sudo npm install -g three -import three - -def main(): - v1 = new( three.Vector3(1,2,3) ) - TestError( len(v1)==3 ) - TestError( v1.x==1 ) - TestError( v1.y==2 ) - TestError( v1.z==3 ) - - diff --git a/regtests/requirejs/webworker_p2js.py b/regtests/requirejs/webworker_p2js.py deleted file mode 100644 index 0bb551c..0000000 --- a/regtests/requirejs/webworker_p2js.py +++ /dev/null @@ -1,22 +0,0 @@ -'''import p2.js inside webworker''' -# sudo npm install -g p2 -import threading -from time import sleep - -def main(): - shared = [] - w = threading.start_webworker( worker, [shared] ) - sleep(1.0) - - TestError( len(shared)==2 ) - TestError( shared[0]==10 ) - TestError( shared[1]==20 ) - - -with webworker: - import p2 - - def worker( arr ): - v = p2.vec2.fromValues(10,20) - arr.append( v[0] ) - arr.append( v[1] ) diff --git a/regtests/rpc/async_iter.py b/regtests/rpc/async_iter.py deleted file mode 100644 index 3cc9243..0000000 --- a/regtests/rpc/async_iter.py +++ /dev/null @@ -1,16 +0,0 @@ -"""iteration""" -## note mycollection is hard coded in run.py as `range(10)` - -def main(): - a = [] - with rpc('http://localhost:8080') as server: - for ob in server.mycollection: - a.append( ob ) - - print(a) - TestError( len(a)==10 ) - TestError( a[0]==0 ) - TestError( a[1]==1 ) - TestError( a[2]==2 ) - - \ No newline at end of file diff --git a/regtests/rpc/attr.py b/regtests/rpc/attr.py deleted file mode 100644 index be03b81..0000000 --- a/regtests/rpc/attr.py +++ /dev/null @@ -1,15 +0,0 @@ -"""get/set remote attributes""" - -def main(): - x = None - y = None - with rpc('http://localhost:8080') as server: - server.A = 'hi' - server.B = 100 - x = server.A - y = server.B - - TestError( x == 'hi' ) - TestError( y == 100 ) - - \ No newline at end of file diff --git a/regtests/rpc/hello_server.py b/regtests/rpc/hello_server.py deleted file mode 100644 index 61a76c4..0000000 --- a/regtests/rpc/hello_server.py +++ /dev/null @@ -1,15 +0,0 @@ -"""simple rpc call""" - -def main(): - a = 'hello' - b = 'server' - x = 100 - y = 200 - with rpc('http://localhost:8080'): - c = concat( a, b ) - z = add( x, y ) - - TestError( c == 'helloserver' ) - TestError( z == 300 ) - - \ No newline at end of file diff --git a/regtests/rpc/hello_server_as.py b/regtests/rpc/hello_server_as.py deleted file mode 100644 index 722f7e2..0000000 --- a/regtests/rpc/hello_server_as.py +++ /dev/null @@ -1,20 +0,0 @@ -"""simple rpc call""" - -def f(v): - return v * 2 - -def main(): - a = 'hello' - b = 'server' - x = 100 - y = 200 - with rpc('http://localhost:8080') as server: - c = server.concat( a, b ) - z = server.add( x, y ) - w = f(z) - - TestError( c == 'helloserver' ) - TestError( z == 300 ) - TestError( w == 600 ) - - \ No newline at end of file diff --git a/regtests/run.py b/regtests/run.py deleted file mode 100755 index cf5ff34..0000000 --- a/regtests/run.py +++ /dev/null @@ -1,1088 +0,0 @@ -#!/usr/bin/env python3 - -""" -Without argument: run all the regression tests. - -About the tests: - - * They are stored as python file in the subdirectories. - * The firstline must be an explanation about the test. - * Errors(must be True) defines an Error that must be corrected - * Warning(must be True) defines something that should be corrected - once corrected, must be redefined as an Error - -""" - -import os, sys, re, tempfile, subprocess, json -import wsgiref, wsgiref.simple_server - -sys.path.append('../pythonjs') -import typedpython - -if 'NODE_PATH' not in os.environ: - os.environ['NODE_PATH'] = '/usr/local/lib/node_modules/' - -tmpname = os.path.join(tempfile.gettempdir(), "xxx_regtest") - -print("Temporary files are stored into '%s...'" % tmpname) -print() - -show_details = len(sys.argv) > 1 - -# List of valid filenames in the parameters -argv = [os.path.abspath(name) - for name in sys.argv[1:] - if os.path.exists(name) - ] - - -__sandbox = { - 'mycollection' : range(10) -} -__clients = {} ## keeps track of iterator indices - -def httpd_reply( env, start_response ): - - path = env['PATH_INFO'] - host = env['HTTP_HOST'] - client = env['REMOTE_ADDR'] - arg = env['QUERY_STRING'] - - if client not in __clients: - __clients[ client ] = {} - - length = 0 - if 'CONTENT_LENGTH' in env: length = int(env['CONTENT_LENGTH']) - data = env['wsgi.input'].read( length ).decode('utf-8') - #print('http_reply ->', path, host, client, arg, data) - - msg = json.loads( data ) - res = '' - - if 'call' in msg: - assert 'args' in msg - if msg['call'] == 'concat': - res = ''.join( msg['args'] ) - elif msg['call'] == 'add': - res = msg['args'][0] + msg['args'][1] - else: - raise NotImplementedError( msg ) - - elif 'iter' in msg: - name = msg['iter'] - assert name in __sandbox - if name not in __clients[ client ]: - __clients[ client ][name] = 0 - index = __clients[ client ][name] - iterable = __sandbox[name] - if index == len(iterable): - index = 0 - res = '__STOP_ITERATION__' - else: - res = iterable[ index ] - index += 1 - __clients[ client ][name] = index - - elif 'set' in msg: - __sandbox[ msg['set'] ] = msg['value'] - - elif 'get' in msg: - res = __sandbox[ msg['get'] ] - - else: - raise NotImplementedError( msg ) - - start_response( '200 OK', [] ) - return [ json.dumps(res).encode('utf-8') ] - -httpd = wsgiref.simple_server.make_server( 'localhost', 8080, httpd_reply ) -import threading -thread_id = threading._start_new_thread( httpd.serve_forever, ()) - - -def runnable(command): - ## this fails with lua5.1 "lua -v" - #"""Returns True is the standard out of the command display something""" - #f = os.popen(command, "r") - #output = f.read() - #f.close() - #return output != '' - try: - subprocess.check_call( command.split() ) - return True - except OSError: - return False - -def run_pypy_test_on(filename): - """PyPy""" - write("%s.py" % tmpname, patch_python(filename, python='PYPY')) - return run_command("%s %s.py %s" % (pypy_exe, tmpname, display_errors)) - -def run_old_pypy_test_on(filename): - """PyPy 1.9""" - write("%s.py" % tmpname, patch_python(filename, python='PYPY')) - return run_command("%s %s.py %s" % (old_pypy_exe, tmpname, display_errors)) - - -old_pypy_runnable = pypy_runnable = False -old_pypy_exe = pypy_exe = None -if os.path.isfile( os.path.expanduser('~/pypy-2.3.1-linux64/bin/pypy') ): - pypy_runnable = True - pypy_exe = os.path.expanduser('~/pypy-2.3.1-linux64/bin/pypy') - run_pypy_test_on.__doc__ = 'PyPy 2.3.1' -elif os.path.isfile( os.path.expanduser('~/pypy-2.2-linux64/bin/pypy') ): - pypy_runnable = True - pypy_exe = os.path.expanduser('~/pypy-2.2-linux64/bin/pypy') - run_pypy_test_on.__doc__ = 'PyPy 2.2' -elif runnable( 'pypy --help' ): - pypy_runnable = True - pypy_exe = 'pypy' - -if os.path.isfile( os.path.expanduser('~/pypy-1.9/bin/pypy') ) and '--old-pypy' in sys.argv: - old_pypy_runnable = True - old_pypy_exe = os.path.expanduser('~/pypy-1.9/bin/pypy') - -webclgl = [] -if os.path.isdir( os.path.expanduser('~/webclgl') ): - #webclgl.append( open( os.path.expanduser('~/webclgl/WebCLGL_2.0.Min.class.js'), 'rb').read().decode('utf-8') ) - webclgl.append( open( os.path.expanduser('~/webclgl/WebCLGLUtils.class.js'), 'rb').read().decode('utf-8') ) - webclgl.append( open( os.path.expanduser('~/webclgl/WebCLGLBuffer.class.js'), 'rb').read().decode('utf-8') ) - webclgl.append( open( os.path.expanduser('~/webclgl/WebCLGLKernel.class.js'), 'rb').read().decode('utf-8') ) - webclgl.append( open( os.path.expanduser('~/webclgl/WebCLGL.class.js'), 'rb').read().decode('utf-8') ) - -## rhino is not run by default because it simply freezes up on maximum callstack errors -rhino_runnable = '--rhino' in sys.argv and runnable("rhino -e 'quit()'") - -node_runnable = runnable("node --help") - -## sudo npm install nodewebkit -g -## nodewebkit npm package is broken? https://github.com/shama/nodewebkit/issues/31 -#nodewebkit = '/usr/local/lib/node_modules/nodewebkit/bin/nodewebkit' - -## download https://github.com/rogerwang/node-webkit/releases/tag/nw-v0.9.2 -## and extract to your home directory. -nodewebkit_runnable = False - - -nodewebkit = os.path.expanduser('~/node-webkit-v0.10.0-rc1-linux-x64/nw') -if os.path.isfile( nodewebkit ): nodewebkit_runnable = True -else: - nodewebkit = os.path.expanduser('~/node-webkit-v0.9.2-linux-x64/nw') - if os.path.isfile( nodewebkit ): nodewebkit_runnable = True - else: - nodewebkit = os.path.expanduser('~/node-webkit-v0.9.1-linux-x64/nw') - if os.path.isfile( nodewebkit ): nodewebkit_runnable = True - else: - nodewebkit = os.path.expanduser('~/node-webkit-v0.8.4-linux-x64/nw') - if os.path.isfile( nodewebkit ): nodewebkit_runnable = True - -if not show_details or '--no-nodewebkit' in sys.argv: - nodewebkit_runnable = False - -#dart2js = os.path.expanduser( '~/dart-sdk-1.0/dart-sdk/bin/dart2js') ## TODO support dart-sdk-1.3+ -dart2js = os.path.expanduser( '~/dart-sdk/bin/dart2js') # tested with dart 1.3 -dart2js_runnable = runnable( dart2js + ' -h' ) and '--dart2js' in sys.argv - -dart_exe = os.path.expanduser( '~/dart-sdk/bin/dart') -dart_runnable = os.path.isfile( dart_exe ) - -coffee_runnable = runnable( "coffee -v" ) and '--coffee' in sys.argv -lua_runnable = runnable( "lua -v" ) and '--lua' in sys.argv -luajit_runnable = runnable( "luajit -v" ) and '--luajit' in sys.argv - -lua2js = os.path.abspath( '../external/lua.js/lua2js' ) -luajs_runnable = os.path.isfile( lua2js ) and '--lua2js' in sys.argv - -go_runnable = runnable( 'go version') -gopherjs_runnable = runnable( 'gopherjs') - -assert rhino_runnable or node_runnable - -if show_details: - display_errors = "" -else: - display_errors = "2>/dev/null" - -def files(): - """returns all the filenames of the regression tests. - this also needs to copy all the original python files to /tmp - because `from xxx import *` syntax will trigger the translator - to read files from the same directory and insert them. - """ - tests = [] - html_tests = [] - benchmarks = [] - mods = [] - for dirpath, dirnames, filenames in os.walk('.'): - if dirpath == '.': - continue - for filename in filenames: - a = dirpath + os.path.sep + filename - if filename.endswith(".py"): - if 'bench' in dirpath: - benchmarks.append( a ) - else: - tests.append( a ) - elif 'html' in dirpath: - if filename.endswith(".html"): - html_tests.append( a ) - elif filename.endswith('.py'): ## these are modules - mods.append( filename ) - - tmpdir = tempfile.gettempdir() - for mod in mods+tests: - data = open(mod,'rb').read() - name = os.path.split(mod)[-1] - open(os.path.join(tmpdir, name), 'wb').write( data ) - - tests.extend( html_tests ) - tests.extend( benchmarks ) - return tests - -def read(filename): - """Returns the file content as a string""" - f = open(filename) - content = f.read() - f.close() - return content - -def write(filename, content): - """Write the content into the file""" - f = open(filename, "w") - f.write(content) - f.close() - -def run_command(command, returns_stdout_stderr=False, nodewebkit_workaround=False): - """Returns the number of problems""" - if os.path.isfile("%s.errors" % tmpname): - os.unlink("%s.errors" % tmpname) - f = os.popen(command + " 2>%s.errors" % tmpname, 'r') - - killed = False - try: - stdout = f.read().strip() - except KeyboardInterrupt: - stdout = f.read().strip() - killed = True - - f.close() - - - stderr = read("%s.errors" % tmpname) - - - if nodewebkit_workaround: - stdout = stderr - stderr = '' - a = [] - for line in stdout.splitlines(): - if 'INFO:CONSOLE' in line: - line = line.replace('\\n', '\n') - line = line.replace('\\u003C', '<') - start = line.index('"') - end = line.rindex('"') - a.append( line[start+1:end] ) - stdout = '\n'.join(a) - - - if stderr: - if show_details: - print('TEST ERROR!') - print(stderr) - - if killed: - print(stdout) - sys.exit() - - if returns_stdout_stderr: - return stdout, stderr - - ######################### - - if show_details and stdout: - print(stdout) - - unknown = [] - for line in stdout.splitlines(): - if _benchmark: - if line.startswith('#'): - _benchmark.append( line ) - else: - #exe = command.split()[0] - _benchmark.append( _test_description + ' ' + line ) - else: - unknown.append(line) - errors = '\n'.join(unknown) + stderr - - d = {} - x = errors.count("Error fail") - if x: - d['Error'] = x - x = errors.count("Warning fail") - if x: - d['Warning'] = x - if len(d) == 0 and errors != '': - if '.py", line' in errors: - d["Syntax Error Python"] = 1 - else: - d["?"] = 1 - - return d - -_benchmark = None -def start_benchmark( name ): - print('starting benchmark:', name) - global _benchmark - _benchmark = [ - 'font=Helvetica', - 'fontsz=12', - '=color_per_datum', - 'yformat=%g', - 'ylabel=seconds' - ] - -def end_benchmark( name ): - print('ending benchmark:', name) - global _benchmark - path = '/tmp/%s.perf' %name - f = open( path, 'wb' ) - data = '\n'.join( _benchmark ) - f.write( data.encode('utf-8') ) - f.close() - os.system( './bargraph.pl -eps %s > /tmp/%s.eps' %(path,name)) - _benchmark = None - -def patch_assert(filename): - """Patch the regression tests to add information into asserts""" - out = [] - for i, line in enumerate(read(filename).split('\n')): - out.append(re.sub("(TestError|TestWarning)\((.*)\)", - r'\1("%s",%d,\2,u"""\2""")' % (filename, i), - line) - ) - return '\n'.join(out) - - -_patch_header = """# -*- coding: utf-8 -*- -def TestError(file, line, result, test): - if result == False: - print(file + ":" + str(line) + " Error fail " + test) -def TestWarning(file, line, result, test): - if result == False: - print(file + ":" + str(line) + " Warning fail " + test) -""" - -_patch_header_go = """# -*- coding: utf-8 -*- -def TestError(file:string, line:int, result:bool, test:string): - if result == False: - print(file + ":" + str(line) + " Error fail " + test) -""" - - -_python_only_extra_header = """ -try: - import threading - threading.start_webworker = lambda f,a: threading._start_new_thread(f,a) - threading.start_new_thread = threading._start_new_thread -except ImportError: - pass - -class __faker__(object): - def __enter__(self, *args): pass - def __exit__(self, *args): pass - def __call__(self, *args, **kw): - return lambda f: f - def vectorize(self, f): - return f - def main(self, f): - return f - def object(self, f): - return f - def method(self, f): - return f - -webworker = __faker__() -glsl = __faker__() -gpu = __faker__() -returns = __faker__() -typedef = __faker__() -vec2 = None -mat4 = None - -def int16(a): return int(a) - -try: - import numpy -except ImportError: - try: - import numpypy as numpy - except ImportError: - pass - -from math import isnan as isNaN - - -""" - -def patch_python(filename, dart=False, python='PYTHONJS', backend=None): - """Rewrite the Python code""" - code = patch_assert(filename) - - ## a main function can not be simply injected like this for dart, - ## because dart has special rules about what can be created outside - ## of the main function at the module level. - #if dart: - # out = [] - # main_inserted = False - # for line in code.splitlines(): - # if line.startswith('TestError') or line.startswith('TestWarning'): - # if not main_inserted: - # out.append('def main():') - # main_inserted = True - # out.append( '\t'+line ) - # else: - # out.append( line ) - # code = '\n'.join( out ) - a = [ - 'PYTHON="%s"'%python, - 'BACKEND="%s"'%backend, - ] - if backend == 'GO': - a.append(_patch_header_go) - else: - a.append(_patch_header) - - if python != 'PYTHONJS': - code = typedpython.transform_source( code, strip=True ) - a.append( _python_only_extra_header ) - - a.append( code ) - - if not dart and python != 'PYTHONJS': - a.append( 'main()' ) - - return '\n'.join( a ) - -def run_python_test_on(filename): - """Python2""" - write("%s.py" % tmpname, patch_python(filename, python='PYTHON2')) - return run_command("python %s.py %s" % (tmpname, display_errors)) - -def run_python3_test_on(filename): - """Python3""" - write("%s.py" % tmpname, patch_python(filename, python='PYTHON3')) - return run_command("python3 %s.py %s" % (tmpname, display_errors)) - - - -def translate_js(filename, javascript=False, dart=False, coffee=False, lua=False, luajs=False, go=False, gopherjs=False, multioutput=False, requirejs=True): - global tmpname - tmpname = os.path.join( - tempfile.gettempdir(), - #'test-%s-js=%s-dart=%s-lua=%s' %(filename.split('/')[-1], javascript, dart, lua) - 'regtest-%s'%filename.split('/')[-1] - ) - - output_name = "%s.py" % tmpname - if javascript: - content = 'pythonjs.configure(javascript=True)\n' + patch_python(filename, backend='JAVASCRIPT') - elif dart: - source = [ - 'pythonjs.configure(dart=True)', - open('../pythonjs/runtime/dart_builtins.py', 'rb').read().decode('utf-8'), - patch_python(filename, dart=True, backend='DART') - ] - content = '\n'.join( source ) - elif coffee: - source = [ - 'pythonjs.configure(coffee=True)', - patch_python(filename, backend='COFFEE') - ] - content = '\n'.join( source ) - elif lua or luajs: - source = [ - 'pythonjs.configure(lua=True)', - read('../pythonjs/runtime/lua_builtins.py'), - patch_python(filename, backend='LUA') - ] - content = '\n'.join( source ) - - elif go or gopherjs: - content = patch_python(filename, backend='GO') - - else: - content = patch_python(filename) - - code = '\n'.join( - [ - '# -*- coding: utf-8 -*-', - 'pythonjs.configure(runtime_exceptions=False)', - content - ] - ) - write(output_name, code) - cmd = [ - os.path.join("..", "pythonjs", "translator.py"), - output_name, - '--debug' - ] - if dart: - cmd.append( '--dart' ) - elif coffee: - cmd.append( '--coffee') - elif lua: - cmd.append( '--lua') - elif luajs: - cmd.append( '--luajs') - elif go: - cmd.append( '--go' ) - elif gopherjs: - cmd.append( '--gopherjs' ) - - if not requirejs: - cmd.append( '--no-wrapper' ) - - stdout, stderr = run_command(' '.join(cmd), returns_stdout_stderr=True) - if stderr: - return '' - else: - - #jsheader = 'if (typeof(process) != "undefined") { var requirejs = require("requirejs"); }' - jsheader = '' - - if multioutput or (stdout.startswith("{") and stdout.endswith("}")): - d = json.loads( stdout ) - stdout = d.pop('main') - #builtins = read(os.path.join("../pythonjs", "pythonjs.js")) - for jsfile in d: - if not jsfile.startswith('/'): - stdout = stdout.replace('"%s"' %jsfile, '"/tmp/%s"' %jsfile) - write( - os.path.join('/tmp', jsfile), - '\n'.join( [jsheader, d[jsfile]] ) - ) - - if dart: - - if os.path.isfile('/tmp/dart2js-output.js'): - os.unlink('/tmp/dart2js-output.js') - - dart_input = '/tmp/dart2js-input.dart' - open( dart_input, 'wb').write( stdout.encode('utf-8') ) - - cmd = [ - dart2js, - '-o', '/tmp/dart2js-output.js', - dart_input - ] - if show_details: - subprocess.call( cmd ) - else: - sout, serr = run_command(' '.join(cmd), returns_stdout_stderr=True) - - if os.path.isfile('/tmp/dart2js-output.js'): - return open('/tmp/dart2js-output.js', 'rb').read().decode('utf-8') - else: - return '' - - elif coffee: - - coffee_input = '/tmp/coffee-input.coffee' - open( coffee_input, 'wb').write( stdout.encode('utf-8') ) - - cmd = [ - 'coffee', - '--print', # print js to stdout - coffee_input - ] - #subprocess.call( cmd ) - sout, serr = run_command(' '.join(cmd), returns_stdout_stderr=True) - if serr: - return '' - elif sout: - builtins = read(os.path.join("../pythonjs", "pythonjs.js")) - open('/tmp/coffee-output.js', 'wb').write( (builtins+'\n'+sout).encode('utf-8') ) - return sout - else: - return '' - - elif luajs: - lua2js_input = '/tmp/lua2js-input.lua' - lua2js_output = '/tmp/lua2js-output.js' - open( lua2js_input, 'wb').write( stdout.encode('utf-8') ) - - cmd = [ - lua2js, - lua2js_input, - lua2js_output - ] - try: - subprocess.check_call( cmd ) - except subprocess.CalledProcessError: - return '' - return open( lua2js_output, 'rb' ).read().decode('utf-8') - - else: - return '\n'.join( [jsheader, stdout] ) - -def run_if_no_error(function): - """Run the function if the JS code is not empty""" - global js - if js: - return function(js) - else: - return {'Translation error':1} - -def run_pythonjs_test_on(dummy_filename): - """JS PythonJS tests""" - return run_if_no_error(run_js_rhino) - -def run_pythonjsjs_test_on(filename): - """JSJS PythonJS with javascript tests""" - return run_pythonjs_test_on(filename) - -def run_js_rhino(content): - """Run Javascript using Rhino""" - builtins = read(os.path.join("../pythonjs", "pythonjs.js")) - # Patch in order to run Rhino - builtins = builtins.replace('Object.create(null)', '{}', 1) - # Add the program to test - content = builtins + content - # Remove documentation strings from JavaScript (Rhino don't like) - content = re.sub('^ *".*" *$', '', content) - # Add the console for Rhino - content = ''' -console = { log: print } ; -process = { title:"", version:"" } ; -''' + content - write("%s.js" % tmpname, content) - return run_command("rhino -O -1 %s.js" % tmpname) - -def run_pythonjs_test_on_node(dummy_filename): - """PythonJS (normal)""" - return run_if_no_error(run_js_node) - -def run_pythonjsjs_test_on_node(filename): - """PythonJS (fast backend)""" - return run_pythonjs_test_on_node(filename) - -def run_js_node(content): - """Run Javascript using Node""" - #builtins = read(os.path.join("../pythonjs", "pythonjs.js")) - write("/tmp/mymodule.js", content) - lines = [ - "var requirejs = require('requirejs')", - "var module = requirejs('mymodule')", - "module.main()" - ] - write("%s.js" % tmpname, '\n'.join(lines)) - return run_command("node %s.js" % tmpname) - - -def run_pythonjs_test_on_nodewebkit(dummy_filename): - """PythonJS (normal) - NodeWebkit""" - return run_if_no_error(run_js_nodewebkit) - -def run_pythonjsjs_test_on_nodewebkit(filename): - """PythonJS (fast backend) - NodeWebkit""" - return run_pythonjs_test_on_nodewebkit(filename) - -def run_js_nodewebkit(content): - """Run Javascript using NodeWebkit""" - - ## there is likely a bug in requirejs and/or nodewebkit that prevents WebWorkers from working, - ## `workerjs` for node also seems like its incompatible with nodewebkit and requirejs, - ## as a quick workaround simply strip away the wrapper function from the javascript. - code = '\n'.join( content.strip().splitlines()[1:-2] ) - - - write("/tmp/package.json", '{"name":"test", "main":"test.html"}') - #write("/tmp/mymodule.js", content) - lines = [ - "var __nw = require('nw.gui')", - "var requirejs = require('requirejs')", - #"var module = requirejs('mymodule')", - #"module.main()", - code, - "main()", - "__nw.App.quit()" - ] - - html = [''] - if webclgl: - for data in webclgl: - html.append('') - - html.append('') - - html.append('') - write("/tmp/test.html", '\n'.join(html)) - - #write("%s.js" % tmpname, '\n'.join(lines)) - #return run_command("node %s.js" % tmpname) - return run_command("%s /tmp" %nodewebkit, nodewebkit_workaround=True) - - - -def run_pythonjs_dart_test_on_node(dummy_filename): - """PythonJS (Dart backend - dart2js)""" - return run_if_no_error(run_dart2js_node) - -def run_dart2js_node(content): - """Run Dart2js using Node""" - write("%s.js" % tmpname, content) - return run_command("node %s.js" % tmpname) - -def run_pythonjs_dart_test_on_dart(dummy_filename): - """PythonJS (Dart backend - Dart VM)""" - return run_if_no_error(run_dart) - -def run_dart(content): - """Run Dart2js using Node""" - #write("%s.js" % tmpname, content) - return run_command("%s %s" % (dart_exe, "/tmp/dart2js-input.dart")) - - -def run_pythonjs_coffee_test_on_node(dummy_filename): - """PythonJS (CoffeeScript)""" - return run_if_no_error(run_coffee_node) - -def run_coffee_node(content): - """Run CoffeeScript using Node""" - #builtins = read(os.path.join("../pythonjs", "pythonjs.js")) - write("%s.js" % tmpname, content) - return run_command("node %s.js" % tmpname) - - -def run_pythonjs_lua_test_on_lua(dummy_filename): - """PythonJS (Lua) on Lua""" - return run_if_no_error(run_lua_lua) - -def run_lua_lua(content): - """Run Lua using Lua""" - write("%s.lua" % tmpname, content) - return run_command("lua %s.lua" % tmpname) - - -def run_pythonjs_lua_test_on_luajit(dummy_filename): - """PythonJS (LuaJIT backend)""" - return run_if_no_error(run_lua_luajit) - -def run_lua_luajit(content): - """Run Lua using LuaJIT""" - write("%s.lua" % tmpname, content) - return run_command("luajit %s.lua" % tmpname) - -def run_pythonjs_luajs_test_on_node(dummy_filename): - """PythonJS (Lua.js)""" - return run_if_no_error(run_luajs_node) - -def run_luajs_node(content): - """Run Lua.js using Node""" - builtins = read(os.path.join("../external/lua.js", "lua.js")) - write("%s.js" % tmpname, builtins + '\n' + content) - return run_command("node %s.js" % tmpname) - - -def run_pythonjs_go_test(dummy_filename): - """PythonJS (Go backend)""" - return run_if_no_error(run_go) - -def run_go(content): - """compile and run go program""" - write("%s.go" % tmpname, content) - errors = run_command("go build -o /tmp/regtest-go %s.go" % tmpname) - if errors: - return errors - else: - return run_command( '/tmp/regtest-go' ) - - -def run_pythonjs_gopherjs_test(dummy_filename): - """PythonJS (Gopherjs)""" - return run_if_no_error(run_gopherjs_node) - -def run_gopherjs_node(content): - """Run Gopherjs using Node""" - write("%s.js" % tmpname, content) - return run_command("node %s.js" % tmpname) - -def run_html_test( filename, sum_errors ): - lines = open(filename, 'rb').read().decode('utf-8').splitlines() - filename = os.path.split(filename)[-1] - doc = []; script = None - for line in lines: - if line.strip().startswith('') - css = line.split('href=')[-1].split()[0][1:-1] - print('css', css) - assert css.startswith('~/') - assert css.endswith('.css') - assert os.path.isfile( os.path.expanduser(css) ) - doc.append( open(os.path.expanduser(css), 'rb').read().decode('utf-8') ) - doc.append('') - elif line.strip().startswith('') - script = list() - elif 'src=' in line and '~/' in line: ## external javascripts installed in users home folder - x = line.split('src="')[-1].split('"')[0] - if os.path.isfile(os.path.expanduser(x)): - - doc.append( '') - else: - doc.append( line ) - - elif line.strip() == '': - if script: - open('/tmp/%s.js'%filename, 'wb').write( ('\n'.join(script)).encode('utf-8') ) - js = translate_js( '/tmp/%s.js'%filename, requirejs=False ) ## inserts TestError and others - doc.append( js ) - doc.append( line ) - script = None - - elif isinstance( script, list ): - script.append( line ) - - else: - doc.append( line ) - - html = '\n'.join(doc) - open('/tmp/%s.html'%filename, 'wb').write( html.encode('utf-8') ) - if '--nodewebkit' in sys.argv: - ## nodewebkit can bypass all cross origin browser-side security - cfg = '{"name":"test", "main":"%s.html", "window":{"width":1200, "height":700}}' %filename - write("/tmp/package.json", cfg) - run_command("%s /tmp" %nodewebkit, nodewebkit_workaround=True) - - else: - ## chrome-extension that won't force you to close your browser windows when deving: `Allow-Control-Allow-Origin:*` - ## this still fails with iframes that do not allow cross origin. - cmd = [ - 'google-chrome', - '--app=file:///tmp/%s.html'%filename, - '--allow-file-access-from-files', ## only takes affect if chrome is closed - '--allow-file-access', ## only takes affect if chrome is closed - '--disable-web-security' ## only takes affect if chrome is closed - ] - ## non-blocking, TODO check for chrome extension that allows output of console.log to stdout - subprocess.check_call(cmd) - - -table_header = "%-12.12s %-28.28s" -table_cell = '%-6.6s' - -def run_test_on(filename): - """run one test and returns the number of errors""" - if not show_details: - f = open(filename) - comment = f.readline().strip(" \n\"'") - f.close() - print(table_header % (filename[2:-3], comment), end='') - sum_errors = {} - - if filename.endswith('.html'): - run_html_test( filename, sum_errors ) - return sum_errors - - def display(function): - global _test_description - _test_description = function.__doc__ - if show_details: - print('\n<%s>\n' % function.__doc__) - - errors = function(filename) - if errors: - if not show_details: - print(table_cell % ''.join('%s%d' % (k[0], v) - for k, v in errors.items()), - end='') - else: - if not show_details: - print(table_cell % 'OK', end='') - sys.stdout.flush() - - for k, v in errors.items(): - sum_errors[k] = sum_errors.get(k, 0) + v - - if show_details: - print('-'*77) - - if 'requirejs' not in filename and not filename.startswith('./go/'): - display(run_python_test_on) - display(run_python3_test_on) - if pypy_runnable: - display(run_pypy_test_on) - if old_pypy_runnable: - display(run_old_pypy_test_on) - - global js - if not filename.startswith('./go/'): - js = translate_js( - filename, - javascript=False, - multioutput=filename.startswith('./threads/' or filename.startswith('./bench/webworker')) - ) - if rhino_runnable: - display(run_pythonjs_test_on) - if node_runnable: - display(run_pythonjs_test_on_node) - - if nodewebkit_runnable: - display(run_pythonjs_test_on_nodewebkit) - - - if '--no-javascript-mode' not in sys.argv and not filename.startswith('./go/'): - js = translate_js(filename, javascript=True, multioutput=filename.startswith('./threads/' or filename.startswith('./bench/webworker'))) - if rhino_runnable: - display(run_pythonjsjs_test_on) - if node_runnable: - display(run_pythonjsjs_test_on_node) - - if nodewebkit_runnable: - display(run_pythonjsjs_test_on_nodewebkit) - - - if 'requirejs' not in filename: - - if dart_runnable: - js = translate_js(filename, javascript=False, dart=True) - display(run_pythonjs_dart_test_on_dart) - - if dart2js_runnable and node_runnable: - js = translate_js(filename, javascript=False, dart=True) - display(run_pythonjs_dart_test_on_node) - - if coffee_runnable and node_runnable: - js = translate_js(filename, javascript=False, dart=False, coffee=True) - display(run_pythonjs_coffee_test_on_node) - - if luajs_runnable and node_runnable: - js = translate_js(filename, luajs=True) - display(run_pythonjs_luajs_test_on_node) - - if lua_runnable: - js = translate_js(filename, lua=True) - display(run_pythonjs_lua_test_on_lua) - - if luajit_runnable: - js = translate_js(filename, lua=True) - display(run_pythonjs_lua_test_on_luajit) - - if go_runnable: - js = translate_js(filename, go=True) - display(run_pythonjs_go_test) - - if gopherjs_runnable: - js = translate_js(filename, gopherjs=True) - display(run_pythonjs_gopherjs_test) - - print() - return sum_errors - -def run(): - """Run all the tests or the selected ones""" - - if not show_details: - headers = ["Py-\nthon2", "Py-\nthon3"] - if pypy_runnable: - headers.append("PyPy\n") - - if old_pypy_runnable: - headers.append("PyPy\n1.9") - - if rhino_runnable: - headers.append("JS\nRhino") - if node_runnable: - headers.append("JS\nNode") - - if nodewebkit_runnable: - headers.append("JS\nWebkit") - - if rhino_runnable: - headers.append("JSJS\nRhino") - - if node_runnable: - headers.append("JSJS\nNode") - - if nodewebkit_runnable: - headers.append("JSJS\nWebkit") - - if dart_runnable: - headers.append("Dart\nDart") - - if node_runnable: - - if dart2js_runnable: - headers.append("Dart\nNode") - if coffee_runnable: - headers.append("Coffe\nNode") - - if luajs_runnable: - headers.append("LuaJS\nNode") - - if lua_runnable: - headers.append("Lua\nLua") - - if luajit_runnable: - headers.append("Lua\nJIT") - - if go_runnable: - headers.append("Go\n-") - - - print(table_header % ("", "Regtest run on") - + ''.join(table_cell % i.split('\n')[0] - for i in headers) - ) - print(table_header % ("", "") - + ''.join(table_cell % i.split('\n')[1] - for i in headers - ) - ) - errors = [] - total_errors = {} - for filename in files(): - if filename.startswith('./bench/'): - start_benchmark( os.path.split(filename)[-1] ) - - if show_details: - if os.path.abspath(filename) not in argv: - continue - print('*'*77) - print(filename) - sum_errors = run_test_on(filename) - if sum_errors: - errors.append(filename) - for k, v in sum_errors.items(): - total_errors[k] = total_errors.get(k, 0) + v - - if filename.startswith('./bench/'): - end_benchmark( os.path.split(filename)[-1] ) - - - print() - if errors: - nr_errors = 0 - if not show_details: - print("To see details about errors, run the commands:") - for i in errors: - print('\t%s %s' % (sys.argv[0], i)) - print("\nSummary of errors:") - for k, v in total_errors.items(): - print('\t%d %s' % (v, k)) - if k in ('Error', 'Translation error'): - nr_errors += v - if nr_errors == 0: - print("\nRegression tests run fine but with warnings") - sys.exit(nr_errors) - else: - print("Regression tests run fine") - sys.exit(0) -run() diff --git a/regtests/set/issubset.py b/regtests/set/issubset.py deleted file mode 100644 index 9e2b3df..0000000 --- a/regtests/set/issubset.py +++ /dev/null @@ -1,10 +0,0 @@ -"""get/set remote attributes""" - -def main(): - x = set([1,2,3]) - y = set([1,2,3,4]) - - TestError( x.issubset(y)==True ) - TestError( y.issubset(x)==False ) - - \ No newline at end of file diff --git a/regtests/stdlib/array.py b/regtests/stdlib/array.py deleted file mode 100644 index ae77171..0000000 --- a/regtests/stdlib/array.py +++ /dev/null @@ -1,18 +0,0 @@ -'''stdlib array''' -from array import array - -def main(): - a = array('i', [1,2,3]) - TestError( len(a)==3 ) - TestError( a[0]==1 ) - TestError( 3 in a ) - x = 0 - for y in a: - x += y - TestError( x == 6 ) - - ## this fails in javascript-mode because it is a raw typed array can not be resized - #a.append( 4 ) - #TestError( len(a)==4 ) - - diff --git a/regtests/stdlib/json.py b/regtests/stdlib/json.py deleted file mode 100644 index d3d8f33..0000000 --- a/regtests/stdlib/json.py +++ /dev/null @@ -1,10 +0,0 @@ -'''stdlib json''' -import json - -def main(): - x = ['a', 'b'] - s = json.dumps( x ) - y = json.loads( s ) - TestError( len(y)==2 ) - TestError( y[0]=='a' ) - TestError( y[1]=='b' ) diff --git a/regtests/stdlib/sleep.py b/regtests/stdlib/sleep.py deleted file mode 100644 index 5aa8685..0000000 --- a/regtests/stdlib/sleep.py +++ /dev/null @@ -1,11 +0,0 @@ -from time import sleep - -def main(): - sleep(0.01) - a = [] - sleep(0.1) - a.append(1) - sleep(0.1) - a.append(2) - - TestError( len(a)==2 ) \ No newline at end of file diff --git a/regtests/str/basics.py b/regtests/str/basics.py deleted file mode 100644 index d7a1ea2..0000000 --- a/regtests/str/basics.py +++ /dev/null @@ -1,48 +0,0 @@ -"""string basics""" - -def main(): - TestError(len('a') == 1) - a = 'XYZ' - TestError( a[0] == 'X' ) - TestError( a[-1] == 'Z' ) - TestError( a[0:2] == 'XY' ) - TestError( a[:2] == 'XY' ) - TestError( a[1:3] == 'YZ' ) - TestError( a[1:] == 'YZ' ) - TestError( a[-3:-1] == 'XY' ) - - TestError( a.lower() == 'xyz' ) - b = 'abc' - TestError( b.upper() == 'ABC' ) - - TestError( ord('A') == 65 ) - TestError( chr(65) == 'A' ) - - c = '%s-%s' %('xxx', 'yyy') - TestError( c == 'xxx-yyy' ) - - d = 'a b c'.split() - TestError( d[0]=='a' ) - TestError( d[1]=='b' ) - TestError( d[2]=='c' ) - - d = 'a,b,c'.split(',') - TestError( d[0]=='a' ) - TestError( d[1]=='b' ) - TestError( d[2]=='c' ) - - e = 'x%sx' %1 - TestError( e=='x1x' ) - - f = 'x"y' - TestError( ord(f[1]) == 34 ) - - f = 'x\"y' - TestError( ord(f[1]) == 34 ) - - f = 'x\'y"' - TestError( ord(f[1]) == 39 ) - - f = '\r' - TestError( ord(f[0]) == 13 ) - diff --git a/regtests/str/compare.py b/regtests/str/compare.py deleted file mode 100644 index 249943b..0000000 --- a/regtests/str/compare.py +++ /dev/null @@ -1,14 +0,0 @@ -"""compare""" - -def main(): - a = 'XYZ' - b = 'XYZ' - TestError( a == b ) - - x = False - if 'a' < 'b': - x = True - - TestError( x==True ) - - TestError( 'a' < 'b' ) diff --git a/regtests/str/format.py b/regtests/str/format.py deleted file mode 100644 index f9b1628..0000000 --- a/regtests/str/format.py +++ /dev/null @@ -1,5 +0,0 @@ -"""string.format""" - -def main(): - a = '{x}{y}'.format( x='A', y='B') - TestError(a == 'AB') diff --git a/regtests/str/iter.py b/regtests/str/iter.py deleted file mode 100644 index 4febee0..0000000 --- a/regtests/str/iter.py +++ /dev/null @@ -1,15 +0,0 @@ -"""The string iterator""" - -def main(): - a = list("abc") - TestError(a[0] == 'a') - TestError(a[1] == 'b') - TestError(a[2] == 'c') - - b = ['a'] - for i in "xyz": - b.append(i) - TestError(b[0] == 'a') - TestError(b[1] == 'x') - TestError(b[2] == 'y') - TestError(b[3] == 'z') diff --git a/regtests/str/mul.py b/regtests/str/mul.py deleted file mode 100644 index f71ca45..0000000 --- a/regtests/str/mul.py +++ /dev/null @@ -1,8 +0,0 @@ -"""string multiplication""" - - -def main(): - a = 'hi' - b = a * 2 - TestError( b == 'hihi' ) - diff --git a/regtests/str/replace.py b/regtests/str/replace.py deleted file mode 100644 index 336d91b..0000000 --- a/regtests/str/replace.py +++ /dev/null @@ -1,10 +0,0 @@ -"""replace""" - -def main(): - a = 'abc' - b = a.replace('a', 'A') - TestError( b == 'Abc') - - a = 'aaa' - b = a.replace('a', 'A') - TestError( b == 'AAA') diff --git a/regtests/str/specials.py b/regtests/str/specials.py deleted file mode 100644 index afe6963..0000000 --- a/regtests/str/specials.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Specials chars in strings""" - -class C: - def __init__(self): - self.value = None - -def main(): - TestError(len('\\') == 1) - TestError(u'éè' == u'é' + u'è') - - c = C() - c.value = u"é" - TestError( c.value == u'é') - - if len(u'éè') == 2: # The interpreter assumes UTF8 (all except Python2) - TestError(u'éè'[::-1] == u'èé') - - else: - TestError(tuple(u'éè'[::-1]) == (chr(168), chr(195), chr(169), chr(195))) diff --git a/regtests/str/sprintf.py b/regtests/str/sprintf.py deleted file mode 100644 index 1762754..0000000 --- a/regtests/str/sprintf.py +++ /dev/null @@ -1,10 +0,0 @@ -"""sprintf""" - -def main(): - a = '%s.%s' %('X', 'Y') - TestError(a[0] == 'X') - TestError(a[1] == '.') - TestError(a[2] == 'Y') - - b = 'X%sX' %1.1 - TestError(b == 'X1.1X' or b == 'X1.100000X') diff --git a/regtests/threads/args.py b/regtests/threads/args.py deleted file mode 100644 index ef27118..0000000 --- a/regtests/threads/args.py +++ /dev/null @@ -1,22 +0,0 @@ -"""simple thread""" -from time import sleep -import threading - -@webworker( 'xxx.js' ) -def mythread(a,b, c): - c.append( a ) - c.append( b ) - -def main(): - - c = [] - t = threading.start_new_thread( mythread, ('hello', 'worker', c) ) - sleep(0.1) - ticks = 0 - while len(c) < 2: - ticks += 1 - if ticks > 100000: ## do not hangup if there is a bug in the webworker - break - - TestError( c[0] == 'hello' ) - TestError( c[1] == 'worker' ) diff --git a/regtests/threads/call_from_worker.py b/regtests/threads/call_from_worker.py deleted file mode 100644 index 57556ee..0000000 --- a/regtests/threads/call_from_worker.py +++ /dev/null @@ -1,23 +0,0 @@ -'''call function in main from inside webworker''' -import threading -from time import sleep - -shared = [] - -def myfunc( a, b ): - shared.append( a ) - shared.append( b ) - -def main(): - w = threading.start_webworker( worker, [] ) - sleep(1.0) - - TestError( len(shared)==2 ) - TestError( shared[0]==10 ) - TestError( shared[1]==20 ) - - -with webworker: - - def worker(): - myfunc( 10, 20 ) diff --git a/regtests/threads/call_from_worker_blocking.py b/regtests/threads/call_from_worker_blocking.py deleted file mode 100644 index c897449..0000000 --- a/regtests/threads/call_from_worker_blocking.py +++ /dev/null @@ -1,32 +0,0 @@ -'''call function from main and get result''' -import threading -from time import sleep - -shared = [] - -def blocking_func(x,y): - shared.append( x ) - shared.append( y ) - return x+y - -def async_func( a ): - shared.append( a ) - -def main(): - w = threading.start_webworker( worker, [] ) - sleep(1.0) - - TestError( len(shared)==3 ) - TestError( shared[0]==10 ) - TestError( shared[1]==20 ) - TestError( shared[2]==30 ) - - -with webworker: - - def worker(): - ## the translator knows this is blocking because the result of the function is assigned to `v`, - v = blocking_func( 10, 20 ) - #print('returned to blocking callback', v) - async_func( v ) - self.terminate() diff --git a/regtests/threads/shared_dict.py b/regtests/threads/shared_dict.py deleted file mode 100644 index e7585b6..0000000 --- a/regtests/threads/shared_dict.py +++ /dev/null @@ -1,31 +0,0 @@ -"""shared dict""" - -import threading - -@webworker( 'myworker.js' ) -def mythread(a,b, lowlevel): - ## checks a and b, if they are Array, then wrap them. - if lowlevel: ## workaround for javascript mode - a.__setitem__('x', 'hello') - b.__setitem__('y', 'world') - else: - a[ 'x' ] = 'hello' - b[ 'y' ] = 'world' - -def main(): - - shared1 = {} - shared2 = {'z':100} - - t = threading.start_new_thread( mythread, (shared1, shared2, BACKEND=='JAVASCRIPT') ) - - ticks = 0 - while len(shared1) + len(shared2) < 2: - ticks += 1 - if ticks > 10000: ## do not hangup if there is a bug in the webworker - break - - TestError( shared1['x'] == 'hello' ) - TestError( shared2['y'] == 'world' ) - TestError( shared2['z'] == 100 ) - diff --git a/regtests/threads/shared_dict_coop.py b/regtests/threads/shared_dict_coop.py deleted file mode 100644 index f1c659a..0000000 --- a/regtests/threads/shared_dict_coop.py +++ /dev/null @@ -1,48 +0,0 @@ -''' -threads shared dict -''' - -from time import time -from time import sleep -import threading - - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pass - else: - def l (f,a): threading._start_new_thread(f,a) - threading.start_webworker = l - - seq = {} - w1 = threading.start_webworker( worker, (seq, 'abcdefgh', 'i') ) - w2 = threading.start_webworker( worker, (seq, 'ijklmnop', 'p') ) - sleep(1.0) - - - TestError( 'a' in seq ) - TestError( 'i' in seq ) - print('-----main exit') - print(seq) - -if PYTHON != 'PYTHONJS': - class webworker(object): - def __enter__(self, *args): pass - def __exit__(self, *args): pass - webworker = webworker() - -with webworker: - def worker(seq, s, break_on): - print('------enter worker------') - for char in s: - seq[ char ] = True - if break_on in seq: - break - #while break_on not in seq: - # seq[ '-' ] = False - sleep(0.1) # this sleep is not required in normal CPython - - print('worker exit') - print(seq) - diff --git a/regtests/threads/shared_list.py b/regtests/threads/shared_list.py deleted file mode 100644 index ec28197..0000000 --- a/regtests/threads/shared_list.py +++ /dev/null @@ -1,46 +0,0 @@ -"""shared list""" - -import threading - - -@webworker( 'xxx.js' ) -def mythread(a,b): - ## checks a and b, if they are Array, then wrap them. - a.append('hello') - b.append('world') - b.append( 'XXX' ) - - ## this fails if the worker is translated in javascript-mode because the method __setitem__ is not called, - ## and instead b[1] is used directly. - b[1] = 'YYY' - - ticks = 0 - while True: #'ZZZ' not in a: - ticks += 1 - if ticks > 100000: - break - if 'ZZZ' in a: - break - -def main(): - - shared1 = [] - shared2 = [] - - t = threading.start_new_thread( mythread, (shared1, shared2) ) - - ticks = 0 - while len(shared1) + len(shared2) < 4: - ticks += 1 - if ticks > 100000: ## do not hangup if there is a bug in the webworker - break - - shared1.append( 'ZZZ' ) - - TestError( shared1[0] == 'hello' ) - TestError( shared2[0] == 'world' ) - TestError( shared2[1] == 'YYY' ) - - ticks = 0 - while ticks < 100000: - ticks += 1 diff --git a/regtests/threads/shared_list_coop.py b/regtests/threads/shared_list_coop.py deleted file mode 100644 index a7288f4..0000000 --- a/regtests/threads/shared_list_coop.py +++ /dev/null @@ -1,31 +0,0 @@ -''' -threads shared data -''' - -from time import time -from time import sleep -import threading - - -def main(): - if PYTHON=='PYTHONJS': - pythonjs.configure( direct_operator='+' ) - pass - - seq = [] - w1 = threading.start_webworker( worker, (seq, 'A', 'B') ) - w2 = threading.start_webworker( worker, (seq, 'B', 'A') ) - - sleep(1.0) - - TestError( 'A' in seq ) - TestError( 'B' in seq ) - - -with webworker: - def worker(seq, a, b): - for i in range(0, 10): - seq.append( a ) - if b in seq: - break - diff --git a/regtests/threads/shared_list_sleep.py b/regtests/threads/shared_list_sleep.py deleted file mode 100644 index 02f1239..0000000 --- a/regtests/threads/shared_list_sleep.py +++ /dev/null @@ -1,29 +0,0 @@ -"""shared lists""" -from time import sleep -import threading - -@webworker( 'myworker.js' ) -def mythread(a,b): - i = 0 - while i < 10: - a.append('o') - i += 1 - #sleep(0.1) - -def main(): - - shared1 = [] - shared2 = [] - - t = threading.start_new_thread( mythread, (shared1, shared2) ) - i = 0 - while i < 10: - shared1.append('x') - i += 1 - sleep(0.2) - - while len(shared1) <= 20: - shared1.append('0') - sleep(0.1) - - TestError( len(shared1) == 20 ) diff --git a/regtests/threads/simple.py b/regtests/threads/simple.py deleted file mode 100644 index d1f23e3..0000000 --- a/regtests/threads/simple.py +++ /dev/null @@ -1,21 +0,0 @@ -"""simple thread""" - -import threading - - -@webworker( 'myworker.js' ) -def mythread(a): - for i in range(100): - a.append( i ) - -def main(): - - arr = [] - t = threading.start_new_thread( mythread, (arr,) ) - ticks = 0 - while len(arr) < 100: - ticks += 1 - if ticks > 100000: ## do not hangup if there is a bug in the webworker - break - - TestError( sum(arr) == 4950 ) diff --git a/regtests/typed/float32vec.py b/regtests/typed/float32vec.py deleted file mode 100644 index 77524d3..0000000 --- a/regtests/typed/float32vec.py +++ /dev/null @@ -1,21 +0,0 @@ -"""simd float32vec""" - -def get_data(): - return [1.9, 1.8, 1.7, 0.6, 0.99,0.88,0.77,0.66] -def main(): - ## the translator knows this is a float32vec because there are more than 4 elements - x = y = z = w = 22/7 - a = numpy.array( [1.1, 1.2, 1.3, 0.4, x,y,z,w], dtype=numpy.float32 ) - - ## in this case the translator is not sure what the length of `u` is, so it defaults - ## to using a float32vec. - u = get_data() - b = numpy.array( u, dtype=numpy.float32 ) - - c = a + b - print(c) - - TestError( c[0]==3.0 ) - TestError( c[1]==3.0 ) - TestError( c[2]==3.0 ) - TestError( c[3]==1.0 ) diff --git a/regtests/typed/float32x4.py b/regtests/typed/float32x4.py deleted file mode 100644 index 75c3e26..0000000 --- a/regtests/typed/float32x4.py +++ /dev/null @@ -1,20 +0,0 @@ -"""simd float32x4""" - -def main(): - float32x4 a = numpy.array( [1.1, 1.2, 1.3, 0.4], dtype=numpy.float32 ) - float32x4 b = numpy.array( [1.9, 1.8, 1.7, 0.6], dtype=numpy.float32 ) - - c = a + b - print(c) - - if PYTHON == 'PYTHONJS': - TestError( c.x==3.0 ) - TestError( c.y==3.0 ) - TestError( c.z==3.0 ) - TestError( c.w==1.0 ) - - else: - TestError( c[0]==3.0 ) - TestError( c[1]==3.0 ) - TestError( c[2]==3.0 ) - TestError( c[3]==1.0 ) diff --git a/regtests/typed/int.py b/regtests/typed/int.py deleted file mode 100644 index 392a851..0000000 --- a/regtests/typed/int.py +++ /dev/null @@ -1,24 +0,0 @@ -"""int static type""" - - -def main(): - int x = 1 - y = x + x - TestError( y==2 ) - - int z = 2 - w = z * 2 - TestError( w==4 ) - - w = z * 3 - TestError( w==6 ) - - w = z * 64 - TestError( w==128 ) - - w = z // 2 - TestError( w==1 ) - - z = 640 - w = z // 64 - TestError( w==10 ) \ No newline at end of file diff --git a/regtests/typed/long.py b/regtests/typed/long.py deleted file mode 100644 index cfacbc9..0000000 --- a/regtests/typed/long.py +++ /dev/null @@ -1,19 +0,0 @@ -"""long static type""" - -def main(): - long x = 65536 - long y = x * x - long z = 4294967296 - TestError( y==z ) - - long a = z + z - long b = 8589934592 - TestError( a==b ) - - TestError( y < b ) - TestError( b > y ) - - TestError( y <= b ) - TestError( b >= y ) - -## TODO check why this fails when used with translator.py directly (bad indent bug) \ No newline at end of file diff --git a/regtests/webclgl/array_of_array.py b/regtests/webclgl/array_of_array.py deleted file mode 100644 index 025863b..0000000 --- a/regtests/webclgl/array_of_array.py +++ /dev/null @@ -1,26 +0,0 @@ -class myclass: - def __init__(self, s): - self.s = s - def my_method(self): - return self.s - - def run(self, w, h): - self.array = [ [x*y*0.5 for y in range(h)] for x in range(w) ] - - @returns( array=64 ) - @gpu.main - def gpufunc(): - float* A = self.array - float b = self.my_method() - - for subarray in A: - for j in range( len(self.array[0]) ): - b += subarray[j] - return b - - return gpufunc() - -def main(): - m = myclass( 0.1 ) - r = m.run(8,4) - print(r) \ No newline at end of file diff --git a/regtests/webclgl/array_of_struct.py b/regtests/webclgl/array_of_struct.py deleted file mode 100644 index ff4a18c..0000000 --- a/regtests/webclgl/array_of_struct.py +++ /dev/null @@ -1,41 +0,0 @@ -'''array of structs''' -from random import random - -class myclass: - def __init__(self, a): self.a = a - def my_method(self): return self.a - - def new_struct(self, g): - return { - 'attr1' : 0.6 + g, - 'attr2' : 0.4 + g - } - - - def run(self, w): - self.array = [ self.new_struct( x ) for x in range(w) ] - - @returns( array=64 ) - @gpu.main - def gpufunc(): - struct* A = self.array - float b = self.my_method() - - for s in iter(A): - b += s.attr1 + s.attr2 - return b - - return gpufunc() - -def main(): - f = 0.1234 - m = myclass( f ) - r = m.run(8) - print(r) - t = round(r[0]-64.0, 4) - print(t) - f = round(f, 4) - print(f) - ok = f==t - print('test passed: %s' %ok ) - #TestError( f==t ) \ No newline at end of file diff --git a/regtests/webclgl/array_of_structs_with_array.py b/regtests/webclgl/array_of_structs_with_array.py deleted file mode 100644 index e137d8a..0000000 --- a/regtests/webclgl/array_of_structs_with_array.py +++ /dev/null @@ -1,38 +0,0 @@ -'''struct with array''' -from random import random - -class myclass: - - def new_struct(self, g): - return { - 'num' : g, - 'arr' : [0.1 for s in range(6)] - } - - - def run(self, w): - self.array = [ self.new_struct( x ) for x in range(w) ] - - @returns( array=64 ) - @gpu.main - def gpufunc(): - struct* A = self.array - float b = 0.0 - - for s in iter(A): - b += s.num - for i in range(len(s.arr)): - b += s.arr[i] - - ## note: assignment of a struct's array member to a variable is not allowed - #float* a = s.arr ## not allowed - - - return b - - return gpufunc() - -def main(): - m = myclass() - r = m.run(8) - print(r) diff --git a/regtests/webclgl/call_external_method.py b/regtests/webclgl/call_external_method.py deleted file mode 100644 index 3194a29..0000000 --- a/regtests/webclgl/call_external_method.py +++ /dev/null @@ -1,31 +0,0 @@ -"""external method""" - -class myclass: - def __init__(self, i): - self.index = i - - def get_index(self): - return self.index - - def run(self, n): - self.intarray = new(Int16Array(n)) - self.intarray[ self.index ] = 99 - - @returns( array=n ) - @gpu.main - def gpufunc(): - int* A = self.intarray - - ## GLSL compile error: `Index expression must be constant` - #int idx = self.get_index() - #return float( A[idx] ) - - return float( A[self.get_index()] ) - - return gpufunc() - -def main(): - m = myclass(10) - r = m.run(64) - print(r) - TestError( int(r[10])==99 ) \ No newline at end of file diff --git a/regtests/webclgl/dynamic_attributes.py b/regtests/webclgl/dynamic_attributes.py deleted file mode 100644 index ff4fb31..0000000 --- a/regtests/webclgl/dynamic_attributes.py +++ /dev/null @@ -1,28 +0,0 @@ -class myclass: - def __init__(self): - self.width = 100 - self.height = 64 - self.step = 0.01 - - def run(self, w, h, s): - self.width = w - self.height = h - self.step = s - - @returns( array=[8,8] ) - @gpu.main - def gpufunc(): - float b = 0.0 - for x in range( self.width ): - for y in range( self.height ): - b += self.step - return b - - return gpufunc() - -def main(): - A = myclass() - r = A.run(4,4, 0.8) - print(r) - r = A.run(16,16, 0.5) - print(r) \ No newline at end of file diff --git a/regtests/webclgl/dynamic_list.py b/regtests/webclgl/dynamic_list.py deleted file mode 100644 index ac12f83..0000000 --- a/regtests/webclgl/dynamic_list.py +++ /dev/null @@ -1,29 +0,0 @@ -"""inline dynamic list""" -from random import random - -class G: - def __init__(self): - self.pi = 7/22.0 - self.scale = 0.1 - self.arr1 = [ random() for i in range(4) ] - self.arr2 = [ random()*0.01 for i in range(32) ] - - @returns( array=[16,16] ) - @gpu.main - def gpufunc(x,y,z,w): - float x - float y - float z - float w - float* a = self.arr1 - float m = self.scale - a[3] = 0.5 - return a[0] * self.pi * m - - self.gpufunc = gpufunc - - -def main(): - g = G() - res = g.gpufunc(0.1, 0.2, 0.3, 0.4) - print(res) diff --git a/regtests/webclgl/dynamic_return_size.py b/regtests/webclgl/dynamic_return_size.py deleted file mode 100644 index b90f863..0000000 --- a/regtests/webclgl/dynamic_return_size.py +++ /dev/null @@ -1,30 +0,0 @@ -class myclass: - def __init__(self): - self.width = 100 - self.height = 64 - self.step = 0.01 - - def run(self, w, h, s, retw, reth): - self.width = w - self.height = h - self.step = s - - @returns( array=[retw,reth] ) - @gpu.main - def gpufunc(): - float b = 0.0 - for x in range( self.width ): - for y in range( self.height ): - b += self.step - return b - - return gpufunc() - -def main(): - A = myclass() - r = A.run(4,4, 0.8, 16,128) - TestError( len(r)==128 ) - TestError( len(r[0])==16 ) - r = A.run(16,16, 0.5, 64,16) - TestError( len(r[0])==64 ) - TestError( len(r)==16 ) diff --git a/regtests/webclgl/for_loop_dynamic_list.py b/regtests/webclgl/for_loop_dynamic_list.py deleted file mode 100644 index 63ce9b9..0000000 --- a/regtests/webclgl/for_loop_dynamic_list.py +++ /dev/null @@ -1,38 +0,0 @@ -"""iterate over dynamic list""" -from random import random - -class G: - def __init__(self, s): - self.arr1 = [ random() for i in range(s) ] - - def run(self, X): - - @returns( array=[8,8] ) - @gpu.main - def gpufunc(x): - float x - float* a = self.arr1 - #return float( len(a) ) *0.1 ## this also works - float b = x * 0.5 - for i in range( len(a) ): - b += a[i] - return b - - return gpufunc(X) - - -def main(): - u = -1.0 - g = G(64) - res = g.run( u ) - print(res) - for i in range(3): ## test dynamic size - if i==0: - g.arr1 = [ 0.01 for x in range(8) ] - elif i==1: - g.arr1 = [ 0.01 for x in range(16) ] - else: - g.arr1 = [ 0.01 for x in range(32) ] - - res = g.run( u ) - print(res) \ No newline at end of file diff --git a/regtests/webclgl/gpu_class.py b/regtests/webclgl/gpu_class.py deleted file mode 100644 index 85339a0..0000000 --- a/regtests/webclgl/gpu_class.py +++ /dev/null @@ -1,55 +0,0 @@ -'''@gpu class''' - -@gpu.object -class MyObject: - ## below `self` is not `this` in javascript - ## `self` is a GLSL struct of MyObject - @gpu.method - float def subroutine(self, x,y): - float x - float y - return x + y * self.attr2 - ## subroutines must be defined ahead of where they are used - - @gpu.method - float def mymethod(self, x,y): - float x - float y - if self.index == 0: - return -20.5 - elif self.index == 0: - return 0.6 - else: - return self.subroutine(x,y) * self.attr1 - - - ## here `self` is javascript's `this` - def __init__(self, a, b, i): - self.attr1 = a - self.attr2 = b - self.index = int16(i) - - - - -class myclass: - def run(self, w): - self.array = [ MyObject( 1.1, 1.2, x ) for x in range(w) ] - - @returns( array=64 ) - @gpu.main - def gpufunc(): - struct* A = self.array - float b = 0.0 - - for s in iter(A): - b += s.mymethod(1.1, 2.2) - - return b - - return gpufunc() - -def main(): - m = myclass() - r = m.run(8) - print(r) diff --git a/regtests/webclgl/gpu_class_three.py b/regtests/webclgl/gpu_class_three.py deleted file mode 100644 index e5e748d..0000000 --- a/regtests/webclgl/gpu_class_three.py +++ /dev/null @@ -1,45 +0,0 @@ -'''@gpu class three.js''' -import three - -#three.Vector3.prototype.__struct_name__='ThreeVec3' ## this also works -#three.Vector3.prototype.__struct_name__='vec3' -gpu.object( three.Vector3, 'vec3' ) -#gpu.object( three.Matrix4, 'mat4x4', 'elements') ## note: mat4x4 is not part of WebGLSL -gpu.object( three.Matrix4, 'mat4', 'elements') - -@gpu.object -class MyObject: - @gpu.method - def mymethod(self, s) -> float: - float s - return (self.vec.x + self.vec.y + self.vec.z) * s - - def __init__(self, x,y,z): - self.vec = new( three.Vector3(x,y,z) ) - self.mat = new( three.Matrix4() ) - print('THREE mat4') - print(self.mat) - - - -class myclass: - def run(self, w): - self.array = [ MyObject( 1.1, 1.2, 1.3 ) for x in range(w) ] - - @returns( array=64 ) - @gpu.main - def gpufunc(): - struct* A = self.array - float b = 0.0 - - for s in iter(A): - b += s.mymethod(1.1) - - return b - - return gpufunc() - -def main(): - m = myclass() - r = m.run(8) - print(r) diff --git a/regtests/webclgl/gpu_sibling_class.py b/regtests/webclgl/gpu_sibling_class.py deleted file mode 100644 index 5696e41..0000000 --- a/regtests/webclgl/gpu_sibling_class.py +++ /dev/null @@ -1,57 +0,0 @@ -'''@gpu sibling class''' -import three - -gpu.object( three.Vector3, 'vec3' ) - -@gpu.object -class Other: - #@gpu.method - def __init__(self, a, b): - #vec3 a - #vec3 b - self.vecA = a - self.vecB = b - - @gpu.method - float def omethod(self, s): - float s - return (self.vecA.x + self.vecA.y + self.vecB.z) * s - - -@gpu.object -class MyObject: - @typedef( ob=Other ) - @gpu.method - float def mymethod(self, s): - float s - #o = Other( self.v1, self.v2 ) - #return o.omethod(s) - return self.ob.omethod(s) - - def __init__(self, x,y,z): - self.v1 = new( three.Vector3(x,y,z) ) - self.v2 = new( three.Vector3(x,y,z) ) - self.ob = Other(self.v1, self.v2) - - -class myclass: - def run(self, w): - self.array = [ MyObject( 1.1, 1.2, 1.3 ) for x in range(w) ] - - @returns( array=64 ) - @gpu.main - def gpufunc(): - struct* A = self.array - float b = 0.0 - - for s in iter(A): - b += s.mymethod(1.1) - - return b - - return gpufunc() - -def main(): - m = myclass() - r = m.run(8) - print(r) diff --git a/regtests/webclgl/hello_gpu.py b/regtests/webclgl/hello_gpu.py deleted file mode 100644 index 2161d3a..0000000 --- a/regtests/webclgl/hello_gpu.py +++ /dev/null @@ -1,19 +0,0 @@ -"""gpu test""" - -def main(): - @returns( array=[4,16]) - @gpu.main - def myfunc(a, b, num): - float* a - float* b - float num - vec2 n = get_global_id() ## WebCL API - float result = 0.0 - for i in range(1000): - result = sqrt(result + a[n] + b[n] + float(i)) - return result * num - - A = [ 0.5 for x in range(64) ] - B = [ 0.25 for x in range(64) ] - res = myfunc( A, B, 0.1 ) - print(res) \ No newline at end of file diff --git a/regtests/webclgl/inline_objects.py b/regtests/webclgl/inline_objects.py deleted file mode 100644 index c2e7e32..0000000 --- a/regtests/webclgl/inline_objects.py +++ /dev/null @@ -1,25 +0,0 @@ -"""inline dynamic object data""" -class A: - def __init__(self, value): - self.readonly_attr = value - -def main(): - def my_wrapper(a,b, x,y,z,w): - - @returns( array=[32,32] ) - @gpu.main - def gpufunc(x,y,z,w): - float x - float y - float z - float w - float D = a.readonly_attr - vec4 V = vec4( x+D, y+b.readonly_attr,z,w) - return V.x - - return gpufunc(x,y,z,w) - - ai = A(22/7.0) - bi = A(0.420) - res = my_wrapper(ai,bi, 0.1, 0.2, 0.3, 0.4) - print(res) diff --git a/regtests/webclgl/integer_array.py b/regtests/webclgl/integer_array.py deleted file mode 100644 index be2df5f..0000000 --- a/regtests/webclgl/integer_array.py +++ /dev/null @@ -1,21 +0,0 @@ -"""integer array""" - -class myclass: - def __init__(self): - pass - def run(self, n): - self.intarray = new(Int16Array(n)) - self.intarray[0] = 100 - @returns( array=n ) - @gpu.main - def gpufunc(): - int* A = self.intarray - return float( A[0] ) - - return gpufunc() - -def main(): - m = myclass() - r = m.run(64) - print(r) - TestError( int(r[0])==100 ) \ No newline at end of file diff --git a/regtests/webclgl/mandel.py b/regtests/webclgl/mandel.py deleted file mode 100644 index 9bd2ca9..0000000 --- a/regtests/webclgl/mandel.py +++ /dev/null @@ -1,54 +0,0 @@ -"""mandelbrot""" - -def pprint(arr, w): - x = [] - for a in arr: - x.append(a) - if len(x) >= w: - print( [ round(y,2) for y in x] ) - x = [] - -def main(): - - #@gpu.returns( array=[32,32], vec4=[4,4] ) ## TODO support dual return - @returns( array=[32,32] ) - @gpu.main - def gpufunc(): - - vec2 c = get_global_id() - #float cx = 0.5 - #float cy = 0.5 - - float hue; - float saturation; - float value; - float hueRound; - int hueIndex; - float f; - float p; - float q; - float t; - - - float x = 0.0; - float y = 0.0; - float tempX = 0.0; - int i = 0; - int runaway = 0; - for i in range(100): - tempX = x * x - y * y + float(c.x); - y = 2.0 * x * y + float(c.y); - x = tempX; - if runaway == 0 and x * x + y * y > 100.0: - runaway = i; - - return float(runaway) * 0.01 - - w = 32 - h = 32 - - #A = [w,h] - - res = gpufunc() - pprint(res, w) - diff --git a/regtests/webclgl/mandel_purepy.py b/regtests/webclgl/mandel_purepy.py deleted file mode 100644 index 5071a13..0000000 --- a/regtests/webclgl/mandel_purepy.py +++ /dev/null @@ -1,39 +0,0 @@ -"""mandelbrot pure python""" - -def pprint(arr, w): - x = [] - for a in arr: - x.append(a) - if len(x) >= w: - print( [ round(y,2) for y in x] ) - x = [] - -def main(): - - @returns( array=[64,64] ) - @typedef( x=float, y=float, tempX=float, i=int, runaway=int, c=vec2) - @gpu.main - def gpufunc(): - c = get_global_id() - x = 0.0 - y = 0.0 - tempX = 0.0 - i = 0 - runaway = 0 - for i in range(100): - tempX = x * x - y * y + float(c.x) - y = 2.0 * x * y + float(c.y) - x = tempX - if runaway == 0 and x * x + y * y > 100.0: - runaway = i - - return float(runaway) * 0.01 - - res = gpufunc() - print(res) - TestError( len(res)==64*64 ) - - #pprint(res, 32) - #for row in res: - # a = [ round(v,3) for v in row ] - # print( a ) diff --git a/regtests/webclgl/returns_vec4.py b/regtests/webclgl/returns_vec4.py deleted file mode 100644 index 0fa3dcb..0000000 --- a/regtests/webclgl/returns_vec4.py +++ /dev/null @@ -1,17 +0,0 @@ -"""while loop""" - - -def main(): - - @returns( vec4=[2,32] ) - @gpu.main - def gpufunc(x,y,z,w): - float x - float y - float z - float w - vec4 V = vec4(x,y,z,w) - return V - - res = gpufunc( 0.1, 0.2, 0.3, 0.4 ) - print(res) diff --git a/regtests/webclgl/slice_dynamic_list.py b/regtests/webclgl/slice_dynamic_list.py deleted file mode 100644 index b80fc3a..0000000 --- a/regtests/webclgl/slice_dynamic_list.py +++ /dev/null @@ -1,40 +0,0 @@ -"""slice and iterate over dynamic list""" -from random import random - -class G: - def __init__(self, s): - self.arr1 = [ random() for i in range(s) ] - - def func(self, x,y): - return x+y - - def run(self, X): - - @returns( array=[8,8] ) - @gpu.main - def gpufunc(x): - float x - float b = self.func(1.1, 2.1) #x * 0.5 - float* a = self.arr1[ 4: ] - for i in range( len(a) ): - b += a[i] - return b - - return gpufunc(X) - - -def main(): - u = -1.0 - g = G(10) - res = g.run( u ) - print(res) - for i in range(3): ## test dynamic size - if i==0: - g.arr1 = [ 0.01 for x in range(8) ] - elif i==1: - g.arr1 = [ 0.01 for x in range(16) ] - else: - g.arr1 = [ 0.01 for x in range(32) ] - - res = g.run( u ) - print(res) \ No newline at end of file diff --git a/regtests/webclgl/subroutine.py b/regtests/webclgl/subroutine.py deleted file mode 100644 index 6850832..0000000 --- a/regtests/webclgl/subroutine.py +++ /dev/null @@ -1,20 +0,0 @@ -"""subroutine""" - -def main(): - @gpu - float def mysub(x,y): - float x - float y - return x-y - - @returns( array=64 ) - @gpu.main - def myfunc(a): - float* a - vec2 id = get_global_id() - return mysub( 1.1 * a[id], 2.2 ) - - - A = [1.3 for i in range(64)] - res = myfunc( A ) - print(res) \ No newline at end of file diff --git a/regtests/webclgl/three_returns_mat4.py b/regtests/webclgl/three_returns_mat4.py deleted file mode 100644 index fdeb955..0000000 --- a/regtests/webclgl/three_returns_mat4.py +++ /dev/null @@ -1,50 +0,0 @@ -'''@gpu class three.js''' -import three - -gpu.object( three.Matrix4, 'mat4', 'elements') - -@gpu.object -class MyObject: - @gpu.method - def mymethod(self, other) -> mat4: - mat4 other - return self.mat * other - - def __init__(self, x): - self.mat = new( three.Matrix4() ) - print('THREE mat4') - print(dir(self.mat)) - for i in range(16): - self.mat.elements[i] = i*10 - self.mat.multiplyScalar(x) - - - - -class myclass: - def run(self, w): - self.array = [ MyObject( x+1.0 ) for x in range(w) ] - - @typedef(o=MyObject) - @gpu.main - def gpufunc() -> mat4: - struct* A = self.array - mat4 b = mat4(1.0) - #mat4 c = mat4(1.1) - - #for s in iter(A): - # b *= s.mymethod(c) - - o = A[...] ## gets the current index in gpufunc.return_matrices - return o.mat #.mymethod(b) - - for ob in self.array: - gpufunc.return_matrices.append( ob.mat.elements ) - - return gpufunc() - -def main(): - m = myclass() - r = m.run(8) - for a in r: - print(a) diff --git a/regtests/webclgl/while_loop.py b/regtests/webclgl/while_loop.py deleted file mode 100644 index 85e5816..0000000 --- a/regtests/webclgl/while_loop.py +++ /dev/null @@ -1,17 +0,0 @@ -"""while loop""" - - -def main(): - - @returns( array=[32,32] ) - @gpu.main - def gpufunc(): - int i = 0 - while i < 10: - i += 1 - return float(i) * 0.01 - - res = gpufunc() - for row in res: - a = [ round(v,3) for v in row ] - print( a ) diff --git a/stylesheets/ie.css b/stylesheets/ie.css new file mode 100644 index 0000000..43882f2 --- /dev/null +++ b/stylesheets/ie.css @@ -0,0 +1,3 @@ +nav { + display: none; +} diff --git a/stylesheets/normalize.css b/stylesheets/normalize.css new file mode 100644 index 0000000..bc2ba93 --- /dev/null +++ b/stylesheets/normalize.css @@ -0,0 +1,459 @@ +/* normalize.css 2012-02-07T12:37 UTC - http://github.com/necolas/normalize.css */ +/* ============================================================================= + HTML5 display definitions + ========================================================================== */ +/* + * Corrects block display not defined in IE6/7/8/9 & FF3 + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects inline-block display not defined in IE6/7/8/9 & FF3 + */ +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* + * Prevents modern browsers from displaying 'audio' without controls + */ +audio:not([controls]) { + display: none; +} + +/* + * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 + * Known issue: no IE6 support + */ +[hidden] { + display: none; +} + +/* ============================================================================= + Base + ========================================================================== */ +/* + * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units + * http://clagnut.com/blog/348/#c790 + * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom + * www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ + */ +html { + font-size: 100%; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -ms-text-size-adjust: 100%; + /* 2 */ +} + +/* + * Addresses font-family inconsistency between 'textarea' and other form elements. + */ +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/* + * Addresses margins handled incorrectly in IE6/7 + */ +body { + margin: 0; +} + +/* ============================================================================= + Links + ========================================================================== */ +/* + * Addresses outline displayed oddly in Chrome + */ +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers + * people.opera.com/patrickl/experiments/keyboard/test + */ +a:hover, +a:active { + outline: 0; +} + +/* ============================================================================= + Typography + ========================================================================== */ +/* + * Addresses font sizes and margins set differently in IE6/7 + * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.75em; + margin: 2.33em 0; +} + +/* + * Addresses styling not present in IE7/8/9, S5, Chrome + */ +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to 'bolder' in FF3+, S4/5, Chrome +*/ +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/* + * Addresses styling not present in S5, Chrome + */ +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE6/7/8/9 + */ +mark { + background: #ff0; + color: #000; +} + +/* + * Addresses margins set differently in IE6/7 + */ +p, +pre { + margin: 1em 0; +} + +/* + * Corrects font family set oddly in IE6, S4/5, Chrome + * en.wikipedia.org/wiki/User:Davidgothberg/Test59 + */ +pre, +code, +kbd, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/* + * 1. Addresses CSS quotes not supported in IE6/7 + * 2. Addresses quote property not supported in S4 + */ +/* 1 */ +q { + quotes: none; +} + +/* 2 */ +q:before, +q:after { + content: ''; + content: none; +} + +small { + font-size: 75%; +} + +/* + * Prevents sub and sup affecting line-height in all browsers + * gist.github.com/413930 + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ============================================================================= + Lists + ========================================================================== */ +/* + * Addresses margins set differently in IE6/7 + */ +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/* + * Addresses paddings set differently in IE6/7 + */ +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/* + * Corrects list images handled incorrectly in IE7 + */ +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ============================================================================= + Embedded content + ========================================================================== */ +/* + * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 + * 2. Improves image quality when scaled in IE7 + * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ + */ +img { + border: 0; + /* 1 */ + -ms-interpolation-mode: bicubic; + /* 2 */ +} + +/* + * Corrects overflow displayed oddly in IE9 + */ +svg:not(:root) { + overflow: hidden; +} + +/* ============================================================================= + Figures + ========================================================================== */ +/* + * Addresses margin not present in IE6/7/8/9, S5, O11 + */ +figure { + margin: 0; +} + +/* ============================================================================= + Forms + ========================================================================== */ +/* + * Corrects margin displayed oddly in IE6/7 + */ +form { + margin: 0; +} + +/* + * Define consistent border, margin, and padding + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE6/7/8/9 + * 2. Corrects text not wrapping in FF3 + * 3. Corrects alignment displayed oddly in IE6/7 + */ +legend { + border: 0; + /* 1 */ + padding: 0; + white-space: normal; + /* 2 */ + *margin-left: -7px; + /* 3 */ +} + +/* + * 1. Corrects font size not being inherited in all browsers + * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome + * 3. Improves appearance and consistency in all browsers + */ +button, +input, +select, +textarea { + font-size: 100%; + /* 1 */ + margin: 0; + /* 2 */ + vertical-align: baseline; + /* 3 */ + *vertical-align: middle; + /* 3 */ +} + +/* + * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet + */ +button, +input { + line-height: normal; + /* 1 */ +} + +/* + * 1. Improves usability and consistency of cursor style between image-type 'input' and others + * 2. Corrects inability to style clickable 'input' types in iOS + * 3. Removes inner spacing in IE7 without affecting normal text inputs + * Known issue: inner spacing remains in IE6 + */ +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + /* 1 */ + -webkit-appearance: button; + /* 2 */ + *overflow: visible; + /* 3 */ +} + +/* + * Re-set default cursor for disabled elements + */ +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to content-box in IE8/9 + * 2. Removes excess padding in IE8/9 + * 3. Removes excess padding in IE7 + Known issue: excess padding remains in IE6 + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ + *height: 13px; + /* 3 */ + *width: 13px; + /* 3 */ +} + +/* + * 1. Addresses appearance set to searchfield in S5, Chrome + * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in S5, Chrome on OS X + */ +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in FF3+ + * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE6/7/8/9 + * 2. Improves readability and alignment in all browsers + */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; + /* 2 */ +} + +/* ============================================================================= + Tables + ========================================================================== */ +/* + * Remove most spacing between table cells + */ +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css new file mode 100644 index 0000000..c79bef4 --- /dev/null +++ b/stylesheets/pygment_trac.css @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #404040 } +.highlight { color: #d0d0d0 } +.highlight .c { color: #999999; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .g { color: #d0d0d0 } /* Generic */ +.highlight .k { color: #6ab825; font-weight: normal } /* Keyword */ +.highlight .l { color: #d0d0d0 } /* Literal */ +.highlight .n { color: #d0d0d0 } /* Name */ +.highlight .o { color: #d0d0d0 } /* Operator */ +.highlight .x { color: #d0d0d0 } /* Other */ +.highlight .p { color: #d0d0d0 } /* Punctuation */ +.highlight .cm { color: #999999; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #cd2828; font-weight: normal } /* Comment.Preproc */ +.highlight .c1 { color: #999999; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #e50808; font-weight: normal; background-color: #520000 } /* Comment.Special */ +.highlight .gd { color: #d22323 } /* Generic.Deleted */ +.highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #d22323 } /* Generic.Error */ +.highlight .gh { color: #ffffff; font-weight: normal } /* Generic.Heading */ +.highlight .gi { color: #589819 } /* Generic.Inserted */ +.highlight .go { color: #cccccc } /* Generic.Output */ +.highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +.highlight .gs { color: #d0d0d0; font-weight: normal } /* Generic.Strong */ +.highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +.highlight .gt { color: #d22323 } /* Generic.Traceback */ +.highlight .kc { color: #6ab825; font-weight: normal } /* Keyword.Constant */ +.highlight .kd { color: #6ab825; font-weight: normal } /* Keyword.Declaration */ +.highlight .kn { color: #6ab825; font-weight: normal } /* Keyword.Namespace */ +.highlight .kp { color: #6ab825 } /* Keyword.Pseudo */ +.highlight .kr { color: #6ab825; font-weight: normal } /* Keyword.Reserved */ +.highlight .kt { color: #6ab825; font-weight: normal } /* Keyword.Type */ +.highlight .ld { color: #d0d0d0 } /* Literal.Date */ +.highlight .m { color: #3677a9 } /* Literal.Number */ +.highlight .s { color: #9dd5f1 } /* Literal.String */ +.highlight .na { color: #bbbbbb } /* Name.Attribute */ +.highlight .nb { color: #24909d } /* Name.Builtin */ +.highlight .nc { color: #447fcf; text-decoration: underline } /* Name.Class */ +.highlight .no { color: #40ffff } /* Name.Constant */ +.highlight .nd { color: #ffa500 } /* Name.Decorator */ +.highlight .ni { color: #d0d0d0 } /* Name.Entity */ +.highlight .ne { color: #bbbbbb } /* Name.Exception */ +.highlight .nf { color: #447fcf } /* Name.Function */ +.highlight .nl { color: #d0d0d0 } /* Name.Label */ +.highlight .nn { color: #447fcf; text-decoration: underline } /* Name.Namespace */ +.highlight .nx { color: #d0d0d0 } /* Name.Other */ +.highlight .py { color: #d0d0d0 } /* Name.Property */ +.highlight .nt { color: #6ab825;} /* Name.Tag */ +.highlight .nv { color: #40ffff } /* Name.Variable */ +.highlight .ow { color: #6ab825; font-weight: normal } /* Operator.Word */ +.highlight .w { color: #666666 } /* Text.Whitespace */ +.highlight .mf { color: #3677a9 } /* Literal.Number.Float */ +.highlight .mh { color: #3677a9 } /* Literal.Number.Hex */ +.highlight .mi { color: #3677a9 } /* Literal.Number.Integer */ +.highlight .mo { color: #3677a9 } /* Literal.Number.Oct */ +.highlight .sb { color: #9dd5f1 } /* Literal.String.Backtick */ +.highlight .sc { color: #9dd5f1 } /* Literal.String.Char */ +.highlight .sd { color: #9dd5f1 } /* Literal.String.Doc */ +.highlight .s2 { color: #9dd5f1 } /* Literal.String.Double */ +.highlight .se { color: #9dd5f1 } /* Literal.String.Escape */ +.highlight .sh { color: #9dd5f1 } /* Literal.String.Heredoc */ +.highlight .si { color: #9dd5f1 } /* Literal.String.Interpol */ +.highlight .sx { color: #ffa500 } /* Literal.String.Other */ +.highlight .sr { color: #9dd5f1 } /* Literal.String.Regex */ +.highlight .s1 { color: #9dd5f1 } /* Literal.String.Single */ +.highlight .ss { color: #9dd5f1 } /* Literal.String.Symbol */ +.highlight .bp { color: #24909d } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #40ffff } /* Name.Variable.Class */ +.highlight .vg { color: #40ffff } /* Name.Variable.Global */ +.highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +.highlight .il { color: #3677a9 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/stylesheets/styles.css b/stylesheets/styles.css new file mode 100644 index 0000000..e7b4ffc --- /dev/null +++ b/stylesheets/styles.css @@ -0,0 +1,851 @@ +@font-face { + font-family: 'OpenSansLight'; + src: url("../fonts/OpenSans-Light-webfont.eot"); + src: url("../fonts/OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Light-webfont.woff") format("woff"), url("../fonts/OpenSans-Light-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Light-webfont.svg#OpenSansLight") format("svg"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'OpenSansLightItalic'; + src: url("../fonts/OpenSans-LightItalic-webfont.eot"); + src: url("../fonts/OpenSans-LightItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-LightItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-LightItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic") format("svg"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'OpenSansRegular'; + src: url("../fonts/OpenSans-Regular-webfont.eot"); + src: url("../fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Regular-webfont.woff") format("woff"), url("../fonts/OpenSans-Regular-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular") format("svg"); + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +@font-face { + font-family: 'OpenSansItalic'; + src: url("../fonts/OpenSans-Italic-webfont.eot"); + src: url("../fonts/OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Italic-webfont.woff") format("woff"), url("../fonts/OpenSans-Italic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic") format("svg"); + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +@font-face { + font-family: 'OpenSansSemibold'; + src: url("../fonts/OpenSans-Semibold-webfont.eot"); + src: url("../fonts/OpenSans-Semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Semibold-webfont.woff") format("woff"), url("../fonts/OpenSans-Semibold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold") format("svg"); + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +@font-face { + font-family: 'OpenSansSemiboldItalic'; + src: url("../fonts/OpenSans-SemiboldItalic-webfont.eot"); + src: url("../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-SemiboldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-SemiboldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic") format("svg"); + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +@font-face { + font-family: 'OpenSansBold'; + src: url("../fonts/OpenSans-Bold-webfont.eot"); + src: url("../fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Bold-webfont.woff") format("woff"), url("../fonts/OpenSans-Bold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Bold-webfont.svg#OpenSansBold") format("svg"); + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +@font-face { + font-family: 'OpenSansBoldItalic'; + src: url("../fonts/OpenSans-BoldItalic-webfont.eot"); + src: url("../fonts/OpenSans-BoldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-BoldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-BoldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic") format("svg"); + font-weight: normal; + font-style: normal; + -webkit-font-smoothing: antialiased; +} + +/* normalize.css 2012-02-07T12:37 UTC - http://github.com/necolas/normalize.css */ +/* ============================================================================= + HTML5 display definitions + ========================================================================== */ +/* + * Corrects block display not defined in IE6/7/8/9 & FF3 + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects inline-block display not defined in IE6/7/8/9 & FF3 + */ +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* + * Prevents modern browsers from displaying 'audio' without controls + */ +audio:not([controls]) { + display: none; +} + +/* + * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 + * Known issue: no IE6 support + */ +[hidden] { + display: none; +} + +/* ============================================================================= + Base + ========================================================================== */ +/* + * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units + * http://clagnut.com/blog/348/#c790 + * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom + * www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ + */ +html { + font-size: 100%; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -ms-text-size-adjust: 100%; + /* 2 */ +} + +/* + * Addresses font-family inconsistency between 'textarea' and other form elements. + */ +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/* + * Addresses margins handled incorrectly in IE6/7 + */ +body { + margin: 0; +} + +/* ============================================================================= + Links + ========================================================================== */ +/* + * Addresses outline displayed oddly in Chrome + */ +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers + * people.opera.com/patrickl/experiments/keyboard/test + */ +a:hover, +a:active { + outline: 0; +} + +/* ============================================================================= + Typography + ========================================================================== */ +/* + * Addresses font sizes and margins set differently in IE6/7 + * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.75em; + margin: 2.33em 0; +} + +/* + * Addresses styling not present in IE7/8/9, S5, Chrome + */ +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to 'bolder' in FF3+, S4/5, Chrome +*/ +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/* + * Addresses styling not present in S5, Chrome + */ +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE6/7/8/9 + */ +mark { + background: #ff0; + color: #000; +} + +/* + * Addresses margins set differently in IE6/7 + */ +p, +pre { + margin: 1em 0; +} + +/* + * Corrects font family set oddly in IE6, S4/5, Chrome + * en.wikipedia.org/wiki/User:Davidgothberg/Test59 + */ +pre, +code, +kbd, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/* + * 1. Addresses CSS quotes not supported in IE6/7 + * 2. Addresses quote property not supported in S4 + */ +/* 1 */ +q { + quotes: none; +} + +/* 2 */ +q:before, +q:after { + content: ''; + content: none; +} + +small { + font-size: 75%; +} + +/* + * Prevents sub and sup affecting line-height in all browsers + * gist.github.com/413930 + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ============================================================================= + Lists + ========================================================================== */ +/* + * Addresses margins set differently in IE6/7 + */ +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/* + * Addresses paddings set differently in IE6/7 + */ +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/* + * Corrects list images handled incorrectly in IE7 + */ +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + +/* ============================================================================= + Embedded content + ========================================================================== */ +/* + * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 + * 2. Improves image quality when scaled in IE7 + * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ + */ +img { + border: 0; + /* 1 */ + -ms-interpolation-mode: bicubic; + /* 2 */ +} + +/* + * Corrects overflow displayed oddly in IE9 + */ +svg:not(:root) { + overflow: hidden; +} + +/* ============================================================================= + Figures + ========================================================================== */ +/* + * Addresses margin not present in IE6/7/8/9, S5, O11 + */ +figure { + margin: 0; +} + +/* ============================================================================= + Forms + ========================================================================== */ +/* + * Corrects margin displayed oddly in IE6/7 + */ +form { + margin: 0; +} + +/* + * Define consistent border, margin, and padding + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE6/7/8/9 + * 2. Corrects text not wrapping in FF3 + * 3. Corrects alignment displayed oddly in IE6/7 + */ +legend { + border: 0; + /* 1 */ + padding: 0; + white-space: normal; + /* 2 */ + *margin-left: -7px; + /* 3 */ +} + +/* + * 1. Corrects font size not being inherited in all browsers + * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome + * 3. Improves appearance and consistency in all browsers + */ +button, +input, +select, +textarea { + font-size: 100%; + /* 1 */ + margin: 0; + /* 2 */ + vertical-align: baseline; + /* 3 */ + *vertical-align: middle; + /* 3 */ +} + +/* + * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet + */ +button, +input { + line-height: normal; + /* 1 */ +} + +/* + * 1. Improves usability and consistency of cursor style between image-type 'input' and others + * 2. Corrects inability to style clickable 'input' types in iOS + * 3. Removes inner spacing in IE7 without affecting normal text inputs + * Known issue: inner spacing remains in IE6 + */ +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + /* 1 */ + -webkit-appearance: button; + /* 2 */ + *overflow: visible; + /* 3 */ +} + +/* + * Re-set default cursor for disabled elements + */ +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to content-box in IE8/9 + * 2. Removes excess padding in IE8/9 + * 3. Removes excess padding in IE7 + Known issue: excess padding remains in IE6 + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ + *height: 13px; + /* 3 */ + *width: 13px; + /* 3 */ +} + +/* + * 1. Addresses appearance set to searchfield in S5, Chrome + * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in S5, Chrome on OS X + */ +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in FF3+ + * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE6/7/8/9 + * 2. Improves readability and alignment in all browsers + */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; + /* 2 */ +} + +/* ============================================================================= + Tables + ========================================================================== */ +/* + * Remove most spacing between table cells + */ +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + padding: 0px 0 20px 0px; + margin: 0px; + font: 14px/1.5 "OpenSansRegular", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #f0e7d5; + font-weight: normal; + background: #252525; + background-attachment: fixed !important; + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2a2a29), color-stop(100%, #1c1c1c)); + background: -webkit-linear-gradient(#2a2a29, #1c1c1c); + background: -moz-linear-gradient(#2a2a29, #1c1c1c); + background: -o-linear-gradient(#2a2a29, #1c1c1c); + background: -ms-linear-gradient(#2a2a29, #1c1c1c); + background: linear-gradient(#2a2a29, #1c1c1c); +} + +h1, h2, h3, h4, h5, h6 { + color: #e8e8e8; + margin: 0 0 10px; + font-family: 'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; +} + +p, ul, ol, table, pre, dl { + margin: 0 0 20px; +} + +h1, h2, h3 { + line-height: 1.1; +} + +h1 { + font-size: 28px; +} + +h2 { + font-size: 24px; +} + +h4, h5, h6 { + color: #e8e8e8; +} + +h3 { + font-size: 18px; + line-height: 24px; + font-family: 'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-weight: normal; + color: #b6b6b6; +} + +a { + color: #ffcc00; + font-weight: 400; + text-decoration: none; +} +a:hover { + color: #ffeb9b; +} + +a small { + font-size: 11px; + color: #666; + margin-top: -0.6em; + display: block; +} + +ul { + list-style-image: url("../images/bullet.png"); +} + +strong { + font-family: 'OpenSansBold', "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-weight: normal; +} + +.wrapper { + max-width: 650px; + margin: 0 auto; + position: relative; + padding: 0 20px; +} + +section img { + max-width: 100%; +} + +blockquote { + border-left: 3px solid #ffcc00; + margin: 0; + padding: 0 0 0 20px; + font-style: italic; +} + +code { + font-family: "Lucida Sans", Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal; + color: #efefef; + font-size: 13px; + margin: 0 4px; + padding: 4px 6px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + -khtml-border-radius: 2px; + border-radius: 2px; +} + +pre { + padding: 8px 15px; + background: #191919; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + -khtml-border-radius: 2px; + border-radius: 2px; + border: 1px solid #121212; + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); + -o-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); + overflow: auto; + overflow-y: hidden; +} +pre code { + color: #efefef; + text-shadow: 0px 1px 0px #000; + margin: 0; + padding: 0; +} + +table { + width: 100%; + border-collapse: collapse; +} + +th { + text-align: left; + padding: 5px 10px; + border-bottom: 1px solid #434343; + color: #b6b6b6; + font-family: 'OpenSansSemibold', "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-weight: normal; +} + +td { + text-align: left; + padding: 5px 10px; + border-bottom: 1px solid #434343; +} + +hr { + border: 0; + outline: none; + height: 3px; + background: transparent url("../images/hr.gif") center center repeat-x; + margin: 0 0 20px; +} + +dt { + color: #F0E7D5; + font-family: 'OpenSansSemibold', "Helvetica Neue", Helvetica, Arial, sans-serif !important; + font-weight: normal; +} + +#header { + z-index: 100; + left: 0; + top: 0px; + height: 60px; + width: 100%; + position: fixed; + background: url(../images/nav-bg.gif) #353535; + border-bottom: 4px solid #434343; + -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); + -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); + -o-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.25); +} +#header nav { + max-width: 650px; + margin: 0 auto; + padding: 0 10px; + background: blue; + margin: 6px auto; +} +#header nav li { + font-family: 'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + list-style: none; + display: inline; + color: white; + line-height: 50px; + text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.2); + font-size: 14px; +} +#header nav li a { + color: white; + border: 1px solid #5d910b; + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #93bd20), color-stop(100%, #659e10)); + background: -webkit-linear-gradient(#93bd20, #659e10); + background: -moz-linear-gradient(#93bd20, #659e10); + background: -o-linear-gradient(#93bd20, #659e10); + background: -ms-linear-gradient(#93bd20, #659e10); + background: linear-gradient(#93bd20, #659e10); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + -khtml-border-radius: 2px; + border-radius: 2px; + -moz-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.3), 0px 3px 7px rgba(0, 0, 0, 0.7); + -webkit-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.3), 0px 3px 7px rgba(0, 0, 0, 0.7); + -o-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.3), 0px 3px 7px rgba(0, 0, 0, 0.7); + box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.3), 0px 3px 7px rgba(0, 0, 0, 0.7); + background-color: #93bd20; + padding: 10px 12px; + margin-top: 6px; + line-height: 14px; + font-size: 14px; + display: inline-block; + text-align: center; +} +#header nav li a:hover { + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #749619), color-stop(100%, #527f0e)); + background: -webkit-linear-gradient(#749619, #527f0e); + background: -moz-linear-gradient(#749619, #527f0e); + background: -o-linear-gradient(#749619, #527f0e); + background: -ms-linear-gradient(#749619, #527f0e); + background: linear-gradient(#749619, #527f0e); + background-color: #659e10; + border: 1px solid #527f0e; + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 0px rgba(0, 0, 0, 0); + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 0px rgba(0, 0, 0, 0); + -o-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 0px rgba(0, 0, 0, 0); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2), 0px 1px 0px rgba(0, 0, 0, 0); +} +#header nav li.fork { + float: left; + margin-left: 0px; +} +#header nav li.downloads { + float: right; + margin-left: 6px; +} +#header nav li.title { + float: right; + margin-right: 10px; + font-size: 11px; +} + +section { + max-width: 650px; + padding: 30px 0px 50px 0px; + margin: 20px 0; + margin-top: 70px; +} +section #title { + border: 0; + outline: none; + margin: 0 0 50px 0; + padding: 0 0 5px 0; +} +section #title h1 { + font-family: 'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + font-size: 40px; + text-align: center; + line-height: 36px; +} +section #title p { + color: #d7cfbe; + font-family: 'OpenSansLight', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + font-size: 18px; + text-align: center; +} +section #title .credits { + font-size: 11px; + font-family: 'OpenSansRegular', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + color: #696969; + margin-top: -10px; +} +section #title .credits.left { + float: left; +} +section #title .credits.right { + float: right; +} + +@media print, screen and (max-width: 720px) { + #title .credits { + display: block; + width: 100%; + line-height: 30px; + text-align: center; + } + #title .credits .left { + float: none; + display: block; + } + #title .credits .right { + float: none; + display: block; + } +} +@media print, screen and (max-width: 480px) { + #header { + margin-top: -20px; + } + + section { + margin-top: 40px; + } + + nav { + display: none; + } +}