diff --git a/package.json b/package.json index 3e6a48f48..8c001ce8d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "js-slang", - "version": "0.2.6", + "version": "0.3.1", "description": "Javascript-based interpreter for slang, written in Typescript", "author": { "name": "Source Academy", @@ -14,7 +14,7 @@ "source-map": "^0.7.3" }, "main": "dist/index", - "types": "dist/index", + "types": "dist/index", "files": [ "dist" ], diff --git a/src/__tests__/__snapshots__/substituter.ts.snap b/src/__tests__/__snapshots__/substituter.ts.snap new file mode 100644 index 000000000..4d132bf89 --- /dev/null +++ b/src/__tests__/__snapshots__/substituter.ts.snap @@ -0,0 +1,115731 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`1 + math_sin 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "raw": "1", + "start": 3, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 6, + "line": 2, + }, + }, + "name": "math_sin", + "start": 7, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Infinite recursion 1`] = ` +"function f() { + return f(); +} +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +f(); + +Maximum number of steps exceeded; +" +`; + +exports[`Test "recursive" function calls 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "name": "factorial", + "start": 68, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 7, + }, + "start": Position { + "column": 12, + "line": 7, + }, + }, + "raw": "5", + "start": 100, + "type": "Literal", + "value": 5, + }, + ], + "callee": Node { + "end": 99, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 2, + "line": 7, + }, + }, + "name": "factorial", + "start": 90, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 7, + }, + "start": Position { + "column": 2, + "line": 7, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 7, + }, + "start": Position { + "column": 12, + "line": 7, + }, + }, + "raw": "5", + "start": 100, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 7, + }, + "start": Position { + "column": 2, + "line": 7, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "2", + "start": 0, + "type": "Literal", + "value": 2, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "0", + "start": 0, + "type": "Literal", + "value": 0, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "alternate": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "alternate": Object { + "left": Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 79, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "name": "n", + "start": 78, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 22, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 5, + }, + "start": Position { + "column": 24, + "line": 5, + }, + }, + "raw": "1", + "start": 80, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Object { + "left": Node { + "end": 39, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 45, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 3, + }, + "start": Position { + "column": 17, + "line": 3, + }, + }, + "raw": "0", + "start": 44, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "factorial", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 23, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "n", + "start": 22, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 12, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "consequent": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "test": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "ConditionalExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 55, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 8, + "line": 4, + }, + }, + "raw": "1", + "start": 54, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "2", + "start": 0, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "6", + "start": 0, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "24", + "start": 0, + "type": "Literal", + "value": 24, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "120", + "start": 0, + "type": "Literal", + "value": 120, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test basic bifunction 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 34, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 33, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "m", + "start": 37, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "m", + "start": 17, + "type": "Identifier", + }, + ], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "left": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "raw": "5", + "start": 48, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "+", + "right": Object { + "left": Node { + "end": 51, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "raw": "1", + "start": 50, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "raw": "6", + "start": 52, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 56, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 54, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + Object { + "left": Node { + "end": 59, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "2", + "start": 58, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 16, + "line": 5, + }, + }, + "raw": "5", + "start": 60, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "name": "f", + "start": 46, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "left": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "raw": "5", + "start": 48, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "+", + "right": Object { + "left": Node { + "end": 51, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "raw": "1", + "start": 50, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 53, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "raw": "6", + "start": 52, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 56, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 54, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + Object { + "left": Node { + "end": 59, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "2", + "start": 58, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 16, + "line": 5, + }, + }, + "raw": "5", + "start": 60, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 34, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 33, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "m", + "start": 37, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "m", + "start": 17, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "left": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "raw": "5", + "start": 48, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "+", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "6", + "start": 0, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 56, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 54, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + Object { + "left": Node { + "end": 59, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "2", + "start": 58, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 16, + "line": 5, + }, + }, + "raw": "5", + "start": 60, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 34, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 33, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "m", + "start": 37, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "m", + "start": 17, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "11", + "start": 0, + "type": "Literal", + "value": 11, + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 56, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 54, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + Object { + "left": Node { + "end": 59, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "2", + "start": 58, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 16, + "line": 5, + }, + }, + "raw": "5", + "start": 60, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 34, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 33, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "m", + "start": 37, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "m", + "start": 17, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "argument": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "29", + "start": 1, + "type": "Literal", + "value": 29, + }, + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "start": 0, + "type": "UnaryExpression", + }, + Object { + "left": Node { + "end": 59, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "raw": "2", + "start": 58, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 14, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 5, + }, + "start": Position { + "column": 16, + "line": 5, + }, + }, + "raw": "5", + "start": 60, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 34, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 33, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "m", + "start": 37, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "m", + "start": 17, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "argument": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "29", + "start": 1, + "type": "Literal", + "value": 29, + }, + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "start": 0, + "type": "UnaryExpression", + }, + Node { + "argument": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "3", + "start": 1, + "type": "Literal", + "value": 3, + }, + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "start": 0, + "type": "UnaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 34, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 33, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 38, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "m", + "start": 37, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "m", + "start": 17, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "argument": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "29", + "start": 1, + "type": "Literal", + "value": 29, + }, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "*", + "right": Object { + "argument": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "3", + "start": 1, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "type": "UnaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "87", + "start": 0, + "type": "Literal", + "value": 87, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test basic function 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "argument": Node { + "end": 31, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + ], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "left": Node { + "end": 42, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "raw": "5", + "start": 41, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "+", + "right": Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "raw": "1", + "start": 43, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "raw": "6", + "start": 45, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 47, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 40, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "name": "f", + "start": 39, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "left": Node { + "end": 42, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "raw": "5", + "start": 41, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "+", + "right": Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 7, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "raw": "1", + "start": 43, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 6, + "line": 5, + }, + }, + "operator": "*", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 8, + "line": 5, + }, + }, + "raw": "6", + "start": 45, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 47, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Node { + "end": 31, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "left": Node { + "end": 42, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "raw": "5", + "start": 41, + "type": "Literal", + "value": 5, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "+", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "6", + "start": 0, + "type": "Literal", + "value": 6, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 47, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Node { + "end": 31, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "11", + "start": 0, + "type": "Literal", + "value": 11, + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "-", + "right": Node { + "end": 49, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "raw": "40", + "start": 47, + "type": "Literal", + "value": 40, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Node { + "end": 31, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "argument": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "29", + "start": 1, + "type": "Literal", + "value": 29, + }, + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "start": 0, + "type": "UnaryExpression", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Node { + "end": 31, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "f", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "n", + "start": 14, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 5, + }, + "start": Position { + "column": 2, + "line": 5, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "argument": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "29", + "start": 1, + "type": "Literal", + "value": 29, + }, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "type": "UnaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test basic substitution 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "left": Node { + "end": 7, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "raw": "1", + "start": 6, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 9, + "line": 2, + }, + }, + "raw": "2", + "start": 10, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Object { + "left": Node { + "end": 17, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "3", + "start": 16, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "raw": "4", + "start": 20, + "type": "Literal", + "value": 4, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Object { + "left": Node { + "end": 17, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "3", + "start": 16, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "raw": "4", + "start": 20, + "type": "Literal", + "value": 4, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "7", + "start": 0, + "type": "Literal", + "value": 7, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "21", + "start": 0, + "type": "Literal", + "value": 21, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test binary operator error 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "left": Node { + "end": 7, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "raw": "1", + "start": 6, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 9, + "line": 2, + }, + }, + "raw": "2", + "start": 10, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Object { + "left": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "'a'", + "start": 16, + "type": "Literal", + "value": "a", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 30, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "raw": "'string'", + "start": 22, + "type": "Literal", + "value": "string", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Object { + "left": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "'a'", + "start": 16, + "type": "Literal", + "value": "a", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 30, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "raw": "'string'", + "start": 22, + "type": "Literal", + "value": "string", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Node { + "end": 9, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "\\"astring\\"", + "start": 0, + "type": "Literal", + "value": "astring", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test ternary operator 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "name": "anotherGarbage", + "start": 55, + "type": "Identifier", + }, + "consequent": Object { + "alternate": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 24, + "line": 3, + }, + }, + "name": "Infinity", + "start": 40, + "type": "Identifier", + }, + "consequent": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 14, + "line": 3, + }, + }, + "name": "garbage", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "test": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "raw": "false", + "start": 22, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "test": Object { + "left": Object { + "left": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "raw": "1", + "start": 3, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "+", + "right": Object { + "argument": Node { + "end": 9, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 2, + }, + "start": Position { + "column": 7, + "line": 2, + }, + }, + "raw": "1", + "start": 8, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 2, + }, + "start": Position { + "column": 6, + "line": 2, + }, + }, + "operator": "-", + "prefix": true, + "type": "UnaryExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "0", + "start": 14, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "name": "anotherGarbage", + "start": 55, + "type": "Identifier", + }, + "consequent": Object { + "alternate": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 24, + "line": 3, + }, + }, + "name": "Infinity", + "start": 40, + "type": "Identifier", + }, + "consequent": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 14, + "line": 3, + }, + }, + "name": "garbage", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "test": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "raw": "false", + "start": 22, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "0", + "start": 0, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "0", + "start": 14, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Node { + "end": 69, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 4, + }, + "start": Position { + "column": 6, + "line": 4, + }, + }, + "name": "anotherGarbage", + "start": 55, + "type": "Identifier", + }, + "consequent": Object { + "alternate": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 24, + "line": 3, + }, + }, + "name": "Infinity", + "start": 40, + "type": "Identifier", + }, + "consequent": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 14, + "line": 3, + }, + }, + "name": "garbage", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "test": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "raw": "false", + "start": 22, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "test": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 24, + "line": 3, + }, + }, + "name": "Infinity", + "start": 40, + "type": "Identifier", + }, + "consequent": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 14, + "line": 3, + }, + }, + "name": "garbage", + "start": 30, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "test": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 6, + "line": 3, + }, + }, + "raw": "false", + "start": 22, + "type": "Literal", + "value": false, + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 48, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 3, + }, + "start": Position { + "column": 24, + "line": 3, + }, + }, + "name": "Infinity", + "start": 40, + "type": "Identifier", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test two statement substitution 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "left": Node { + "end": 7, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "raw": "1", + "start": 6, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 9, + "line": 2, + }, + }, + "raw": "2", + "start": 10, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Object { + "left": Node { + "end": 17, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "3", + "start": 16, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "raw": "4", + "start": 20, + "type": "Literal", + "value": 4, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 29, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "raw": "3", + "start": 28, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 33, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "raw": "5", + "start": 32, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Object { + "left": Node { + "end": 17, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "3", + "start": 16, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "operator": "+", + "right": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "raw": "4", + "start": 20, + "type": "Literal", + "value": 4, + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 29, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "raw": "3", + "start": 28, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 33, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "raw": "5", + "start": 32, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "3", + "start": 0, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "*", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "7", + "start": 0, + "type": "Literal", + "value": 7, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 29, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "raw": "3", + "start": 28, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 33, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "raw": "5", + "start": 32, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "21", + "start": 0, + "type": "Literal", + "value": 21, + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 29, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "raw": "3", + "start": 28, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 33, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "raw": "5", + "start": 32, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 29, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "raw": "3", + "start": 28, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "*", + "right": Node { + "end": 33, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "raw": "5", + "start": 32, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "15", + "start": 0, + "type": "Literal", + "value": 15, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`Test unary and binary boolean operations 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "argument": Object { + "argument": Object { + "argument": Node { + "end": 10, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 5, + "line": 2, + }, + }, + "raw": "true", + "start": 6, + "type": "Literal", + "value": true, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "operator": "!", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 3, + "line": 2, + }, + }, + "operator": "!", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "!", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "true", + "start": 14, + "type": "Literal", + "value": true, + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "argument": Object { + "argument": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 3, + "line": 2, + }, + }, + "operator": "!", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "!", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "true", + "start": 14, + "type": "Literal", + "value": true, + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "argument": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "!", + "prefix": true, + "type": "UnaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "true", + "start": 14, + "type": "Literal", + "value": true, + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "true", + "start": 14, + "type": "Literal", + "value": true, + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "true", + "start": 14, + "type": "Literal", + "value": true, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`assign undefined 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 10, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 2, + }, + "start": Position { + "column": 8, + "line": 2, + }, + }, + "name": "a", + "start": 9, + "type": "Identifier", + }, + "init": Object { + "name": "undefined", + "type": "Identifier", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "expression": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 3, + }, + "start": Position { + "column": 2, + "line": 3, + }, + }, + "name": "a", + "start": 26, + "type": "Identifier", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "name": "undefined", + "type": "Identifier", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`builtins return identifiers 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [], + "callee": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "name": "math_sin", + "start": 3, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 3, + "loc": SourceLocation { + "end": Position { + "column": 3, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "name": "NaN", + "start": 0, + "type": "Identifier", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`even odd mutual 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 12, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 2, + }, + "start": Position { + "column": 8, + "line": 2, + }, + }, + "name": "odd", + "start": 9, + "type": "Identifier", + }, + "init": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 42, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "name": "even", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "name": "even", + "start": 57, + "type": "Identifier", + }, + "init": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 83, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "name": "odd", + "start": 80, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 98, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 4, + }, + "start": Position { + "column": 7, + "line": 4, + }, + }, + "raw": "1", + "start": 97, + "type": "Literal", + "value": 1, + }, + ], + "callee": Node { + "end": 96, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 4, + }, + }, + "name": "even", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 4, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 61, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 8, + "line": 3, + }, + }, + "name": "even", + "start": 57, + "type": "Identifier", + }, + "init": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Node { + "end": 42, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "name": "even", + "start": 38, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 98, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 4, + }, + "start": Position { + "column": 7, + "line": 4, + }, + }, + "raw": "1", + "start": 97, + "type": "Literal", + "value": 1, + }, + ], + "callee": Node { + "end": 96, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 4, + }, + }, + "name": "even", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 4, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 98, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 4, + }, + "start": Position { + "column": 7, + "line": 4, + }, + }, + "raw": "1", + "start": 97, + "type": "Literal", + "value": 1, + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 4, + }, + "start": Position { + "column": 2, + "line": 4, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "0", + "start": 0, + "type": "Literal", + "value": 0, + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "left": Object { + "left": Node { + "end": 70, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "name": "n", + "start": 69, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 20, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 76, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 3, + }, + "start": Position { + "column": 26, + "line": 3, + }, + }, + "raw": "0", + "start": 75, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": undefined, + "operator": "||", + "right": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 85, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "name": "n", + "start": 84, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 35, + "line": 3, + }, + }, + "operator": "-", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 38, + "line": 3, + }, + "start": Position { + "column": 37, + "line": 3, + }, + }, + "raw": "1", + "start": 86, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": Object { + "body": Object { + "alternate": Object { + "arguments": Array [ + Object { + "left": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "n", + "start": 43, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "operator": "-", + "right": Node { + "end": 46, + "loc": SourceLocation { + "end": Position { + "column": 45, + "line": 2, + }, + "start": Position { + "column": 44, + "line": 2, + }, + }, + "raw": "1", + "start": 45, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "operator": "===", + "right": Node { + "end": 27, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 2, + }, + "start": Position { + "column": 25, + "line": 2, + }, + }, + "raw": "0", + "start": 26, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "ConditionalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 14, + "line": 2, + }, + }, + "name": "n", + "start": 15, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 3, + }, + "start": Position { + "column": 31, + "line": 3, + }, + }, + "type": "CallExpression", + }, + "type": "LogicalExpression", + }, + "expression": true, + "generator": false, + "loc": undefined, + "params": Array [ + Node { + "end": 65, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "name": "n", + "start": 64, + "type": "Identifier", + }, + ], + "type": "ArrowFunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 37, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "consequent": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "test": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "ConditionalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 35, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 2, + }, + "start": Position { + "column": 29, + "line": 2, + }, + }, + "raw": "false", + "start": 30, + "type": "Literal", + "value": false, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`expmod 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionDeclaration", + }, + Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": Node { + "end": 309, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "name": "expmod", + "start": 303, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": Node { + "end": 198, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "name": "expmod", + "start": 192, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Node { + "end": 155, + "loc": SourceLocation { + "end": Position { + "column": 19, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "name": "is_even", + "start": 148, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 360, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 19, + }, + "start": Position { + "column": 7, + "line": 19, + }, + }, + "raw": "4", + "start": 359, + "type": "Literal", + "value": 4, + }, + Node { + "end": 363, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 19, + }, + "start": Position { + "column": 10, + "line": 19, + }, + }, + "raw": "3", + "start": 362, + "type": "Literal", + "value": 3, + }, + Node { + "end": 366, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 19, + }, + "start": Position { + "column": 13, + "line": 19, + }, + }, + "raw": "5", + "start": 365, + "type": "Literal", + "value": 5, + }, + ], + "callee": Node { + "end": 358, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 19, + }, + "start": Position { + "column": 0, + "line": 19, + }, + }, + "name": "expmod", + "start": 352, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 19, + }, + "start": Position { + "column": 0, + "line": 19, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": Node { + "end": 309, + "loc": SourceLocation { + "end": Position { + "column": 32, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "name": "expmod", + "start": 303, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": Node { + "end": 198, + "loc": SourceLocation { + "end": Position { + "column": 34, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "name": "expmod", + "start": 192, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 360, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 19, + }, + "start": Position { + "column": 7, + "line": 19, + }, + }, + "raw": "4", + "start": 359, + "type": "Literal", + "value": 4, + }, + Node { + "end": 363, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 19, + }, + "start": Position { + "column": 10, + "line": 19, + }, + }, + "raw": "3", + "start": 362, + "type": "Literal", + "value": 3, + }, + Node { + "end": 366, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 19, + }, + "start": Position { + "column": 13, + "line": 19, + }, + }, + "raw": "5", + "start": 365, + "type": "Literal", + "value": 5, + }, + ], + "callee": Node { + "end": 358, + "loc": SourceLocation { + "end": Position { + "column": 6, + "line": 19, + }, + "start": Position { + "column": 0, + "line": 19, + }, + }, + "name": "expmod", + "start": 352, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 19, + }, + "start": Position { + "column": 0, + "line": 19, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 360, + "loc": SourceLocation { + "end": Position { + "column": 8, + "line": 19, + }, + "start": Position { + "column": 7, + "line": 19, + }, + }, + "raw": "4", + "start": 359, + "type": "Literal", + "value": 4, + }, + Node { + "end": 363, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 19, + }, + "start": Position { + "column": 10, + "line": 19, + }, + }, + "raw": "3", + "start": 362, + "type": "Literal", + "value": 3, + }, + Node { + "end": 366, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 19, + }, + "start": Position { + "column": 13, + "line": 19, + }, + }, + "raw": "5", + "start": 365, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 19, + }, + "start": Position { + "column": 0, + "line": 19, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 3, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "2", + "start": 0, + "type": "Literal", + "value": 2, + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "0", + "start": 0, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 2, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "0", + "start": 0, + "type": "Literal", + "value": 0, + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "alternate": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 300, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "name": "base", + "start": 296, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "arguments": Array [ + Node { + "end": 314, + "loc": SourceLocation { + "end": Position { + "column": 37, + "line": 14, + }, + "start": Position { + "column": 33, + "line": 14, + }, + }, + "name": "base", + "start": 310, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 319, + "loc": SourceLocation { + "end": Position { + "column": 42, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "name": "exp", + "start": 316, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 39, + "line": 14, + }, + }, + "operator": "-", + "right": Node { + "end": 323, + "loc": SourceLocation { + "end": Position { + "column": 46, + "line": 14, + }, + "start": Position { + "column": 45, + "line": 14, + }, + }, + "raw": "1", + "start": 322, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + Node { + "end": 326, + "loc": SourceLocation { + "end": Position { + "column": 49, + "line": 14, + }, + "start": Position { + "column": 48, + "line": 14, + }, + }, + "name": "m", + "start": 325, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 26, + "line": 14, + }, + }, + "type": "CallExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Node { + "end": 331, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 53, + "line": 14, + }, + }, + "name": "m", + "start": 330, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Node { + "end": 189, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 11, + }, + "start": Position { + "column": 18, + "line": 11, + }, + }, + "name": "to_half", + "start": 182, + "type": "Identifier", + }, + "init": Object { + "arguments": Array [ + Node { + "end": 203, + "loc": SourceLocation { + "end": Position { + "column": 39, + "line": 11, + }, + "start": Position { + "column": 35, + "line": 11, + }, + }, + "name": "base", + "start": 199, + "type": "Identifier", + }, + Object { + "left": Node { + "end": 208, + "loc": SourceLocation { + "end": Position { + "column": 44, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "name": "exp", + "start": 205, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 41, + "line": 11, + }, + }, + "operator": "/", + "right": Node { + "end": 212, + "loc": SourceLocation { + "end": Position { + "column": 48, + "line": 11, + }, + "start": Position { + "column": 47, + "line": 11, + }, + }, + "raw": "2", + "start": 211, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + Node { + "end": 215, + "loc": SourceLocation { + "end": Position { + "column": 51, + "line": 11, + }, + "start": Position { + "column": 50, + "line": 11, + }, + }, + "name": "m", + "start": 214, + "type": "Identifier", + }, + ], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Node { + "end": 258, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 39, + "line": 12, + }, + }, + "name": "m", + "start": 257, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Node { + "end": 159, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 10, + }, + "start": Position { + "column": 20, + "line": 10, + }, + }, + "name": "exp", + "start": 156, + "type": "Identifier", + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Object { + "left": Node { + "end": 95, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "name": "exp", + "start": 92, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 8, + "line": 7, + }, + }, + "operator": "===", + "right": Node { + "end": 101, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 7, + }, + "start": Position { + "column": 16, + "line": 7, + }, + }, + "raw": "0", + "start": 100, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 67, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 6, + }, + "start": Position { + "column": 9, + "line": 6, + }, + }, + "name": "expmod", + "start": 61, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 72, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 6, + }, + "start": Position { + "column": 16, + "line": 6, + }, + }, + "name": "base", + "start": 68, + "type": "Identifier", + }, + Node { + "end": 77, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 6, + }, + "start": Position { + "column": 22, + "line": 6, + }, + }, + "name": "exp", + "start": 74, + "type": "Identifier", + }, + Node { + "end": 80, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 6, + }, + "start": Position { + "column": 27, + "line": 6, + }, + }, + "name": "m", + "start": 79, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 52, + "line": 11, + }, + "start": Position { + "column": 28, + "line": 11, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 9, + "line": 15, + }, + "start": Position { + "column": 8, + "line": 10, + }, + }, + "test": Object { + "arguments": Array [ + Object { + "loc": undefined, + "type": "Literal", + "value": 0, + }, + ], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 37, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "name": "n", + "start": 36, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "%", + "right": Node { + "end": 41, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 3, + }, + "start": Position { + "column": 15, + "line": 3, + }, + }, + "raw": "2", + "start": 40, + "type": "Literal", + "value": 2, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 11, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 47, + "loc": SourceLocation { + "end": Position { + "column": 22, + "line": 3, + }, + "start": Position { + "column": 21, + "line": 3, + }, + }, + "raw": "0", + "start": 46, + "type": "Literal", + "value": 0, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 23, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "name": "is_even", + "start": 12, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [ + Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 20, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "name": "n", + "start": 20, + "type": "Identifier", + }, + ], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 10, + }, + "start": Position { + "column": 12, + "line": 10, + }, + }, + "type": "CallExpression", + }, + "type": "IfStatement", + }, + ], + "type": "BlockStatement", + }, + "consequent": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 16, + }, + "start": Position { + "column": 4, + "line": 7, + }, + }, + "test": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "IfStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "argument": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 8, + }, + "start": Position { + "column": 8, + "line": 8, + }, + }, + "type": "ReturnStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Node { + "end": 121, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 8, + }, + "start": Position { + "column": 15, + "line": 8, + }, + }, + "raw": "1", + "start": 120, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "declarations": Array [ + Object { + "id": Object { + "name": "to_half", + "type": "Identifier", + }, + "init": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "type": "VariableDeclarator", + }, + ], + "kind": "const", + "loc": undefined, + "type": "VariableDeclaration", + }, + Object { + "argument": Object { + "left": Object { + "left": Node { + "end": 244, + "loc": SourceLocation { + "end": Position { + "column": 26, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "name": "to_half", + "start": 237, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Node { + "end": 254, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 29, + "line": 12, + }, + }, + "name": "to_half", + "start": 247, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 36, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "*", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 2, + "loc": SourceLocation { + "end": Position { + "column": 2, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "16", + "start": 0, + "type": "Literal", + "value": 16, + }, + "loc": SourceLocation { + "end": Position { + "column": 40, + "line": 12, + }, + "start": Position { + "column": 19, + "line": 12, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 41, + "line": 12, + }, + "start": Position { + "column": 12, + "line": 12, + }, + }, + "type": "ReturnStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Object { + "left": Object { + "loc": undefined, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 50, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "*", + "right": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "1", + "start": 0, + "type": "Literal", + "value": 1, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Object { + "left": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 54, + "line": 14, + }, + "start": Position { + "column": 19, + "line": 14, + }, + }, + "operator": "%", + "right": Object { + "loc": undefined, + "type": "Literal", + "value": 5, + }, + "type": "BinaryExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "body": Array [ + Object { + "argument": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "loc": SourceLocation { + "end": Position { + "column": 55, + "line": 14, + }, + "start": Position { + "column": 12, + "line": 14, + }, + }, + "type": "ReturnStatement", + }, + ], + "loc": undefined, + "type": "BlockExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 1, + "loc": SourceLocation { + "end": Position { + "column": 1, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "4", + "start": 0, + "type": "Literal", + "value": 4, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`expmod 2`] = ` +"function is_even(n) { + return n % 2 === 0; +} +function expmod(base, exp, m) { + if (exp === 0) { + return 1; + } else { + if (is_even(exp)) { + const to_half = expmod(base, exp / 2, m); + return to_half * to_half % m; + } else { + return base * expmod(base, exp - 1, m) % m; + } + } +} +expmod(4, 3, 5); + +function expmod(base, exp, m) { + if (exp === 0) { + return 1; + } else { + if (is_even(exp)) { + const to_half = expmod(base, exp / 2, m); + return to_half * to_half % m; + } else { + return base * expmod(base, exp - 1, m) % m; + } + } +} +expmod(4, 3, 5); + +expmod(4, 3, 5); + +{ + if (3 === 0) { + return 1; + } else { + if (is_even(3)) { + const to_half = expmod(4, 3 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + if (false) { + return 1; + } else { + if (is_even(3)) { + const to_half = expmod(4, 3 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + { + if (is_even(3)) { + const to_half = expmod(4, 3 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + { + if (3 % 2 === 0) { + const to_half = expmod(4, 3 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + { + if (1 === 0) { + const to_half = expmod(4, 3 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + { + if (false) { + const to_half = expmod(4, 3 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + { + { + return 4 * expmod(4, 3 - 1, 5) % 5; + } + } +}; + +{ + { + { + return 4 * expmod(4, 2, 5) % 5; + } + } +}; + +{ + { + { + return 4 * { + if (2 === 0) { + return 1; + } else { + if (is_even(2)) { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 2 - 1, 5) % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + if (false) { + return 1; + } else { + if (is_even(2)) { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 2 - 1, 5) % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + if (is_even(2)) { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 2 - 1, 5) % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + if (2 % 2 === 0) { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 2 - 1, 5) % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + if (0 === 0) { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 2 - 1, 5) % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + if (true) { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 2 - 1, 5) % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = expmod(4, 2 / 2, 5); + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = expmod(4, 1, 5); + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + if (1 === 0) { + return 1; + } else { + if (is_even(1)) { + const to_half = expmod(4, 1 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + if (false) { + return 1; + } else { + if (is_even(1)) { + const to_half = expmod(4, 1 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + if (is_even(1)) { + const to_half = expmod(4, 1 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + if (1 % 2 === 0) { + const to_half = expmod(4, 1 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + if (1 === 0) { + const to_half = expmod(4, 1 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + if (false) { + const to_half = expmod(4, 1 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * expmod(4, 1 - 1, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * expmod(4, 0, 5) % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * { + if (0 === 0) { + return 1; + } else { + if (is_even(0)) { + const to_half = expmod(4, 0 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 0 - 1, 5) % 5; + } + } + } % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * { + if (true) { + return 1; + } else { + if (is_even(0)) { + const to_half = expmod(4, 0 / 2, 5); + return to_half * to_half % 5; + } else { + return 4 * expmod(4, 0 - 1, 5) % 5; + } + } + } % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * { + { + return 1; + } + } % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * { + return 1; + } % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 * 1 % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4 % 5; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + { + return 4; + } + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + { + return 4; + } + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = { + return 4; + }; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + const to_half = 4; + return to_half * to_half % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + return 4 * 4 % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + return 16 % 5; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + { + return 1; + } + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + { + return 1; + } + } % 5; + } + } +}; + +{ + { + { + return 4 * { + return 1; + } % 5; + } + } +}; + +{ + { + { + return 4 * 1 % 5; + } + } +}; + +{ + { + { + return 4 % 5; + } + } +}; + +{ + { + { + return 4; + } + } +}; + +{ + { + return 4; + } +}; + +{ + return 4; +}; + +4; +" +`; + +exports[`is_function checks for builtin 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Node { + "end": 28, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 2, + }, + "start": Position { + "column": 16, + "line": 2, + }, + }, + "name": "is_function", + "start": 17, + "type": "Identifier", + }, + ], + "callee": Node { + "end": 16, + "loc": SourceLocation { + "end": Position { + "column": 15, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "name": "is_function", + "start": 5, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 28, + "line": 2, + }, + "start": Position { + "column": 4, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "loc": undefined, + "type": "Literal", + "value": true, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`math_pow 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "arguments": Array [ + Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "raw": "3", + "start": 12, + "type": "Literal", + "value": 3, + }, + Node { + "end": 17, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "raw": "100", + "start": 14, + "type": "Literal", + "value": 100, + }, + ], + "callee": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "name": "math_pow", + "start": 3, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 17, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 25, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "NaN", + "start": 22, + "type": "Identifier", + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 21, + "loc": SourceLocation { + "end": Position { + "column": 21, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "5.153775207320114e+47", + "start": 0, + "type": "Literal", + "value": 5.153775207320114e+47, + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 25, + "loc": SourceLocation { + "end": Position { + "column": 24, + "line": 2, + }, + "start": Position { + "column": 21, + "line": 2, + }, + }, + "name": "NaN", + "start": 22, + "type": "Identifier", + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`negative numbers as arguments 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "arguments": Array [ + Object { + "argument": Node { + "end": 14, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 2, + }, + "start": Position { + "column": 12, + "line": 2, + }, + }, + "raw": "1", + "start": 13, + "type": "Literal", + "value": 1, + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "operator": "-", + "prefix": true, + "type": "UnaryExpression", + }, + ], + "callee": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "name": "math_sin", + "start": 3, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "argument": Node { + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 19, + "line": 1, + }, + "start": Position { + "column": 1, + "line": 1, + }, + }, + "raw": "0.8414709848078965", + "start": 1, + "type": "Literal", + "value": 0.8414709848078965, + }, + "end": 19, + "loc": SourceLocation { + "end": Position { + "column": 19, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "operator": "-", + "prefix": true, + "start": 0, + "type": "UnaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`plus undefined 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "arguments": Array [ + Node { + "end": 13, + "loc": SourceLocation { + "end": Position { + "column": 12, + "line": 2, + }, + "start": Position { + "column": 11, + "line": 2, + }, + }, + "raw": "1", + "start": 12, + "type": "Literal", + "value": 1, + }, + ], + "callee": Node { + "end": 11, + "loc": SourceLocation { + "end": Position { + "column": 10, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "name": "math_sin", + "start": 3, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 13, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "+", + "right": Object { + "name": "undefined", + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Node { + "end": 18, + "loc": SourceLocation { + "end": Position { + "column": 18, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "0.8414709848078965", + "start": 0, + "type": "Literal", + "value": 0.8414709848078965, + }, + "loc": SourceLocation { + "end": Position { + "column": 25, + "line": 2, + }, + "start": Position { + "column": 2, + "line": 2, + }, + }, + "operator": "+", + "right": Object { + "name": "undefined", + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`subsets 1`] = ` +"function subsets(s) { + if (is_null(s)) { + return list(null); + } else { + const rest = subsets(tail(s)); + return append(rest, map(=>, rest)); + } +} +subsets(list(1, 2, 3)); + +subsets(list(1, 2, 3)); + +subsets([1, [2, [3, null]]]); + +{ + if (is_null([1, [2, [3, null]]])) { + return list(null); + } else { + const rest = subsets(tail([1, [2, [3, null]]])); + return append(rest, map(=>, rest)); + } +}; + +{ + if (false) { + return list(null); + } else { + const rest = subsets(tail([1, [2, [3, null]]])); + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = subsets(tail([1, [2, [3, null]]])); + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = subsets([2, [3, null]]); + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + if (is_null([2, [3, null]])) { + return list(null); + } else { + const rest = subsets(tail([2, [3, null]])); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + if (false) { + return list(null); + } else { + const rest = subsets(tail([2, [3, null]])); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = subsets(tail([2, [3, null]])); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = subsets([3, null]); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + if (is_null([3, null])) { + return list(null); + } else { + const rest = subsets(tail([3, null])); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + if (false) { + return list(null); + } else { + const rest = subsets(tail([3, null])); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = subsets(tail([3, null])); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = subsets(null); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = { + if (is_null(null)) { + return list(null); + } else { + const rest = subsets(tail(null)); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = { + if (true) { + return list(null); + } else { + const rest = subsets(tail(null)); + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = { + { + return list(null); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = { + { + return [null, null]; + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = { + return [null, null]; + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + const rest = [null, null]; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], map(=>, [null, null])); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], is_null([null, null]) ? null : pair(=>(head([null, null])), map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], false ? null : pair(=>(head([null, null])), map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair(=>(head([null, null])), map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair(=>(null), map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair(pair(head([3, null]), null), map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair(pair(3, null), map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair([3, null], map(=>, tail([null, null])))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair([3, null], map(=>, null))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair([3, null], is_null(null) ? null : pair(=>(head(null)), map(=>, tail(null))))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair([3, null], true ? null : pair(=>(head(null)), map(=>, tail(null))))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], pair([3, null], null)); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return append([null, null], [[3, null], null]); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return is_null([null, null]) ? [[3, null], null] : pair(head([null, null]), append(tail([null, null]), [[3, null], null])); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return false ? [[3, null], null] : pair(head([null, null]), append(tail([null, null]), [[3, null], null])); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return pair(head([null, null]), append(tail([null, null]), [[3, null], null])); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return pair(null, append(tail([null, null]), [[3, null], null])); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return pair(null, append(null, [[3, null], null])); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return pair(null, is_null(null) ? [[3, null], null] : pair(head(null), append(tail(null), [[3, null], null]))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return pair(null, true ? [[3, null], null] : pair(head(null), append(tail(null), [[3, null], null]))); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return pair(null, [[3, null], null]); + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + { + return [null, [[3, null], null]]; + } + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = { + return [null, [[3, null], null]]; + }; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + const rest = [null, [[3, null], null]]; + return append(rest, map(=>, rest)); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], map(=>, [null, [[3, null], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], is_null([null, [[3, null], null]]) ? null : pair(=>(head([null, [[3, null], null]])), map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], false ? null : pair(=>(head([null, [[3, null], null]])), map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair(=>(head([null, [[3, null], null]])), map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair(=>(null), map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair(pair(head([2, [3, null]]), null), map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair(pair(2, null), map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], map(=>, tail([null, [[3, null], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], map(=>, [[3, null], null]))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], is_null([[3, null], null]) ? null : pair(=>(head([[3, null], null])), map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], false ? null : pair(=>(head([[3, null], null])), map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair(=>(head([[3, null], null])), map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair(=>([3, null]), map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair(pair(head([2, [3, null]]), [3, null]), map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair(pair(2, [3, null]), map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair([2, [3, null]], map(=>, tail([[3, null], null]))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair([2, [3, null]], map(=>, null)))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair([2, [3, null]], is_null(null) ? null : pair(=>(head(null)), map(=>, tail(null)))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair([2, [3, null]], true ? null : pair(=>(head(null)), map(=>, tail(null)))))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], pair([2, [3, null]], null))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], pair([2, null], [[2, [3, null]], null])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return append([null, [[3, null], null]], [[2, null], [[2, [3, null]], null]]); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return is_null([null, [[3, null], null]]) ? [[2, null], [[2, [3, null]], null]] : pair(head([null, [[3, null], null]]), append(tail([null, [[3, null], null]]), [[2, null], [[2, [3, null]], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return false ? [[2, null], [[2, [3, null]], null]] : pair(head([null, [[3, null], null]]), append(tail([null, [[3, null], null]]), [[2, null], [[2, [3, null]], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(head([null, [[3, null], null]]), append(tail([null, [[3, null], null]]), [[2, null], [[2, [3, null]], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, append(tail([null, [[3, null], null]]), [[2, null], [[2, [3, null]], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, append([[3, null], null], [[2, null], [[2, [3, null]], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, is_null([[3, null], null]) ? [[2, null], [[2, [3, null]], null]] : pair(head([[3, null], null]), append(tail([[3, null], null]), [[2, null], [[2, [3, null]], null]]))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, false ? [[2, null], [[2, [3, null]], null]] : pair(head([[3, null], null]), append(tail([[3, null], null]), [[2, null], [[2, [3, null]], null]]))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, pair(head([[3, null], null]), append(tail([[3, null], null]), [[2, null], [[2, [3, null]], null]]))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, pair([3, null], append(tail([[3, null], null]), [[2, null], [[2, [3, null]], null]]))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, pair([3, null], append(null, [[2, null], [[2, [3, null]], null]]))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, pair([3, null], is_null(null) ? [[2, null], [[2, [3, null]], null]] : pair(head(null), append(tail(null), [[2, null], [[2, [3, null]], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, pair([3, null], true ? [[2, null], [[2, [3, null]], null]] : pair(head(null), append(tail(null), [[2, null], [[2, [3, null]], null]])))); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, pair([3, null], [[2, null], [[2, [3, null]], null]])); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return pair(null, [[3, null], [[2, null], [[2, [3, null]], null]]]); + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + { + return [null, [[3, null], [[2, null], [[2, [3, null]], null]]]]; + } + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = { + return [null, [[3, null], [[2, null], [[2, [3, null]], null]]]]; + }; + return append(rest, map(=>, rest)); + } +}; + +{ + { + const rest = [null, [[3, null], [[2, null], [[2, [3, null]], null]]]]; + return append(rest, map(=>, rest)); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], map(=>, [null, [[3, null], [[2, null], [[2, [3, null]], null]]]])); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], is_null([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]) ? null : pair(=>(head([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])), map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], false ? null : pair(=>(head([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])), map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair(=>(head([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])), map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair(=>(null), map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair(pair(head([1, [2, [3, null]]]), null), map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair(pair(1, null), map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], map(=>, tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], map(=>, [[3, null], [[2, null], [[2, [3, null]], null]]]))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], is_null([[3, null], [[2, null], [[2, [3, null]], null]]]) ? null : pair(=>(head([[3, null], [[2, null], [[2, [3, null]], null]]])), map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], false ? null : pair(=>(head([[3, null], [[2, null], [[2, [3, null]], null]]])), map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair(=>(head([[3, null], [[2, null], [[2, [3, null]], null]]])), map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair(=>([3, null]), map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair(pair(head([1, [2, [3, null]]]), [3, null]), map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair(pair(1, [3, null]), map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], map(=>, tail([[3, null], [[2, null], [[2, [3, null]], null]]]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], map(=>, [[2, null], [[2, [3, null]], null]])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], is_null([[2, null], [[2, [3, null]], null]]) ? null : pair(=>(head([[2, null], [[2, [3, null]], null]])), map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], false ? null : pair(=>(head([[2, null], [[2, [3, null]], null]])), map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair(=>(head([[2, null], [[2, [3, null]], null]])), map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair(=>([2, null]), map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair(pair(head([1, [2, [3, null]]]), [2, null]), map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair(pair(1, [2, null]), map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], map(=>, tail([[2, null], [[2, [3, null]], null]])))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], map(=>, [[2, [3, null]], null]))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], is_null([[2, [3, null]], null]) ? null : pair(=>(head([[2, [3, null]], null])), map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], false ? null : pair(=>(head([[2, [3, null]], null])), map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair(=>(head([[2, [3, null]], null])), map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair(=>([2, [3, null]]), map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair(pair(head([1, [2, [3, null]]]), [2, [3, null]]), map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair(pair(1, [2, [3, null]]), map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair([1, [2, [3, null]]], map(=>, tail([[2, [3, null]], null]))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair([1, [2, [3, null]]], map(=>, null)))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair([1, [2, [3, null]]], is_null(null) ? null : pair(=>(head(null)), map(=>, tail(null)))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair([1, [2, [3, null]]], true ? null : pair(=>(head(null)), map(=>, tail(null)))))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], pair([1, [2, [3, null]]], null))))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], pair([1, [2, null]], [[1, [2, [3, null]]], null])))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], pair([1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]))); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], pair([1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]])); + } +}; + +{ + { + return append([null, [[3, null], [[2, null], [[2, [3, null]], null]]]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]); + } +}; + +{ + { + return is_null([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]) ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), append(tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])); + } +}; + +{ + { + return false ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), append(tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])); + } +}; + +{ + { + return pair(head([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), append(tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])); + } +}; + +{ + { + return pair(null, append(tail([null, [[3, null], [[2, null], [[2, [3, null]], null]]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])); + } +}; + +{ + { + return pair(null, append([[3, null], [[2, null], [[2, [3, null]], null]]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])); + } +}; + +{ + { + return pair(null, is_null([[3, null], [[2, null], [[2, [3, null]], null]]]) ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([[3, null], [[2, null], [[2, [3, null]], null]]]), append(tail([[3, null], [[2, null], [[2, [3, null]], null]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))); + } +}; + +{ + { + return pair(null, false ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([[3, null], [[2, null], [[2, [3, null]], null]]]), append(tail([[3, null], [[2, null], [[2, [3, null]], null]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))); + } +}; + +{ + { + return pair(null, pair(head([[3, null], [[2, null], [[2, [3, null]], null]]]), append(tail([[3, null], [[2, null], [[2, [3, null]], null]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))); + } +}; + +{ + { + return pair(null, pair([3, null], append(tail([[3, null], [[2, null], [[2, [3, null]], null]]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))); + } +}; + +{ + { + return pair(null, pair([3, null], append([[2, null], [[2, [3, null]], null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))); + } +}; + +{ + { + return pair(null, pair([3, null], is_null([[2, null], [[2, [3, null]], null]]) ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([[2, null], [[2, [3, null]], null]]), append(tail([[2, null], [[2, [3, null]], null]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))); + } +}; + +{ + { + return pair(null, pair([3, null], false ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([[2, null], [[2, [3, null]], null]]), append(tail([[2, null], [[2, [3, null]], null]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))); + } +}; + +{ + { + return pair(null, pair([3, null], pair(head([[2, null], [[2, [3, null]], null]]), append(tail([[2, null], [[2, [3, null]], null]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], append(tail([[2, null], [[2, [3, null]], null]]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], append([[2, [3, null]], null], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], is_null([[2, [3, null]], null]) ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([[2, [3, null]], null]), append(tail([[2, [3, null]], null]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], false ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head([[2, [3, null]], null]), append(tail([[2, [3, null]], null]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], pair(head([[2, [3, null]], null]), append(tail([[2, [3, null]], null]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], pair([2, [3, null]], append(tail([[2, [3, null]], null]), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], pair([2, [3, null]], append(null, [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], pair([2, [3, null]], is_null(null) ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head(null), append(tail(null), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], pair([2, [3, null]], true ? [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]] : pair(head(null), append(tail(null), [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], pair([2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]])))); + } +}; + +{ + { + return pair(null, pair([3, null], pair([2, null], [[2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]]))); + } +}; + +{ + { + return pair(null, pair([3, null], [[2, null], [[2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]]])); + } +}; + +{ + { + return pair(null, [[3, null], [[2, null], [[2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]]]]); + } +}; + +{ + { + return [null, [[3, null], [[2, null], [[2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]]]]]; + } +}; + +{ + return [null, [[3, null], [[2, null], [[2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]]]]]; +}; + +[null, [[3, null], [[2, null], [[2, [3, null]], [[1, null], [[1, [3, null]], [[1, [2, null]], [[1, [2, [3, null]]], null]]]]]]]]; +" +`; + +exports[`triple equals work on function 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Node { + "end": 28, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "name": "g", + "start": 27, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionDeclaration", + }, + Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Node { + "end": 57, + "loc": SourceLocation { + "end": Position { + "column": 56, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "name": "f", + "start": 56, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "left": Node { + "end": 68, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "name": "f", + "start": 67, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "===", + "right": Node { + "end": 74, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 10, + "line": 3, + }, + }, + "name": "f", + "start": 73, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "g", + "start": 80, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "===", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "name": "g", + "start": 86, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 94, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "name": "f", + "start": 93, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Node { + "end": 100, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "g", + "start": 99, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Node { + "end": 28, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "name": "g", + "start": 27, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionDeclaration", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Node { + "end": 28, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "name": "g", + "start": 27, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Node { + "end": 28, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "name": "g", + "start": 27, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Node { + "end": 81, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "name": "g", + "start": 80, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "===", + "right": Node { + "end": 87, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 10, + "line": 4, + }, + }, + "name": "g", + "start": 86, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Node { + "end": 28, + "loc": SourceLocation { + "end": Position { + "column": 27, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "name": "g", + "start": 27, + "type": "Identifier", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Node { + "end": 100, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 10, + "line": 5, + }, + }, + "name": "g", + "start": 99, + "type": "Identifier", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 3, + }, + "start": Position { + "column": 4, + "line": 3, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 4, + }, + "start": Position { + "column": 4, + "line": 4, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 4, + "loc": SourceLocation { + "end": Position { + "column": 4, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "true", + "start": 0, + "type": "Literal", + "value": true, + }, + "type": "ExpressionStatement", + }, + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 11, + "line": 5, + }, + "start": Position { + "column": 4, + "line": 5, + }, + }, + "operator": "===", + "right": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": Object { + "body": Object { + "body": Array [ + Object { + "argument": Object { + "arguments": Array [], + "callee": [Circular], + "loc": SourceLocation { + "end": Position { + "column": 29, + "line": 2, + }, + "start": Position { + "column": 26, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 30, + "line": 2, + }, + "start": Position { + "column": 19, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 15, + "loc": SourceLocation { + "end": Position { + "column": 14, + "line": 2, + }, + "start": Position { + "column": 13, + "line": 2, + }, + }, + "name": "f", + "start": 14, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 58, + "line": 2, + }, + "start": Position { + "column": 55, + "line": 2, + }, + }, + "type": "CallExpression", + }, + "loc": SourceLocation { + "end": Position { + "column": 59, + "line": 2, + }, + "start": Position { + "column": 48, + "line": 2, + }, + }, + "type": "ReturnStatement", + }, + ], + "type": "BlockStatement", + }, + "id": Node { + "end": 44, + "loc": SourceLocation { + "end": Position { + "column": 43, + "line": 2, + }, + "start": Position { + "column": 42, + "line": 2, + }, + }, + "name": "g", + "start": 43, + "type": "Identifier", + }, + "loc": undefined, + "params": Array [], + "type": "FunctionExpression", + }, + "type": "BinaryExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, + Object { + "body": Array [ + Object { + "expression": Node { + "end": 5, + "loc": SourceLocation { + "end": Position { + "column": 5, + "line": 1, + }, + "start": Position { + "column": 0, + "line": 1, + }, + }, + "raw": "false", + "start": 0, + "type": "Literal", + "value": false, + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; + +exports[`undefined || 1 1`] = ` +Array [ + Object { + "body": Array [ + Object { + "expression": Object { + "left": Object { + "name": "undefined", + "type": "Identifier", + }, + "loc": undefined, + "operator": "||", + "right": Node { + "end": 17, + "loc": SourceLocation { + "end": Position { + "column": 16, + "line": 2, + }, + "start": Position { + "column": 15, + "line": 2, + }, + }, + "raw": "1", + "start": 16, + "type": "Literal", + "value": 1, + }, + "type": "LogicalExpression", + }, + "type": "ExpressionStatement", + }, + ], + "sourceType": "module", + "type": "Program", + }, +] +`; diff --git a/src/__tests__/substituter.ts b/src/__tests__/substituter.ts new file mode 100644 index 000000000..bdac364a7 --- /dev/null +++ b/src/__tests__/substituter.ts @@ -0,0 +1,523 @@ +import { mockContext } from '../mocks/context' +import { parse } from '../parser' +import { codify, getEvaluationSteps } from '../substituter' + +// source 0 +test('Test basic substitution', () => { + const code = ` + (1 + 2) * (3 + 4); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"(1 + 2) * (3 + 4); + +3 * (3 + 4); + +3 * 7; + +21; +" +`) +}) + +test('Test binary operator error', () => { + const code = ` + (1 + 2) * ('a' + 'string'); + ` + const context = mockContext() + const program = parse(code, context)! + const steps = getEvaluationSteps(program, context) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"(1 + 2) * ('a' + 'string'); + +3 * ('a' + 'string'); + +3 * \\"astring\\"; +" +`) +}) + +test('Test two statement substitution', () => { + const code = ` + (1 + 2) * (3 + 4); + 3 * 5; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext(4)) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"(1 + 2) * (3 + 4); +3 * 5; + +3 * (3 + 4); +3 * 5; + +3 * 7; +3 * 5; + +21; +3 * 5; + +3 * 5; + +15; +" +`) +}) + +test('Test unary and binary boolean operations', () => { + const code = ` + !!!true || true; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"!!!true || true; + +!!false || true; + +!true || true; + +false || true; + +true; +" +`) +}) + +test('Test ternary operator', () => { + const code = ` + 1 + -1 === 0 + ? false ? garbage : Infinity + : anotherGarbage; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"1 + -1 === 0 ? false ? garbage : Infinity : anotherGarbage; + +0 === 0 ? false ? garbage : Infinity : anotherGarbage; + +true ? false ? garbage : Infinity : anotherGarbage; + +false ? garbage : Infinity; + +Infinity; +" +`) +}) + +test('Test basic function', () => { + const code = ` + function f(n) { + return n; + } + f(5+1*6-40); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"function f(n) { + return n; +} +f(5 + 1 * 6 - 40); + +f(5 + 1 * 6 - 40); + +f(5 + 6 - 40); + +f(11 - 40); + +f(-29); + +-29; +" +`) +}) + +test('Test basic bifunction', () => { + const code = ` + function f(n, m) { + return n * m; + } + f(5+1*6-40, 2-5); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"function f(n, m) { + return n * m; +} +f(5 + 1 * 6 - 40, 2 - 5); + +f(5 + 1 * 6 - 40, 2 - 5); + +f(5 + 6 - 40, 2 - 5); + +f(11 - 40, 2 - 5); + +f(-29, 2 - 5); + +f(-29, -3); + +-29 * -3; + +87; +" +`) +}) + +test('Test "recursive" function calls', () => { + const code = ` + function factorial(n) { + return n === 0 + ? 1 + : n * factorial(n-1); + } + factorial(5); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"function factorial(n) { + return n === 0 ? 1 : n * factorial(n - 1); +} +factorial(5); + +factorial(5); + +5 === 0 ? 1 : 5 * factorial(5 - 1); + +false ? 1 : 5 * factorial(5 - 1); + +5 * factorial(5 - 1); + +5 * factorial(4); + +5 * (4 === 0 ? 1 : 4 * factorial(4 - 1)); + +5 * (false ? 1 : 4 * factorial(4 - 1)); + +5 * (4 * factorial(4 - 1)); + +5 * (4 * factorial(3)); + +5 * (4 * (3 === 0 ? 1 : 3 * factorial(3 - 1))); + +5 * (4 * (false ? 1 : 3 * factorial(3 - 1))); + +5 * (4 * (3 * factorial(3 - 1))); + +5 * (4 * (3 * factorial(2))); + +5 * (4 * (3 * (2 === 0 ? 1 : 2 * factorial(2 - 1)))); + +5 * (4 * (3 * (false ? 1 : 2 * factorial(2 - 1)))); + +5 * (4 * (3 * (2 * factorial(2 - 1)))); + +5 * (4 * (3 * (2 * factorial(1)))); + +5 * (4 * (3 * (2 * (1 === 0 ? 1 : 1 * factorial(1 - 1))))); + +5 * (4 * (3 * (2 * (false ? 1 : 1 * factorial(1 - 1))))); + +5 * (4 * (3 * (2 * (1 * factorial(1 - 1))))); + +5 * (4 * (3 * (2 * (1 * factorial(0))))); + +5 * (4 * (3 * (2 * (1 * (0 === 0 ? 1 : 0 * factorial(0 - 1)))))); + +5 * (4 * (3 * (2 * (1 * (true ? 1 : 0 * factorial(0 - 1)))))); + +5 * (4 * (3 * (2 * (1 * 1)))); + +5 * (4 * (3 * (2 * 1))); + +5 * (4 * (3 * 2)); + +5 * (4 * 6); + +5 * 24; + +120; +" +`) +}) + +// source 0 +test('undefined || 1', () => { + const code = ` + undefined || 1; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"undefined || 1; +" +`) +}) + +// source 0 +test('1 + math_sin', () => { + const code = ` + 1 + math_sin; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"1 + math_sin; +" +`) +}) + +// source 0 +test('plus undefined', () => { + const code = ` + math_sin(1) + undefined; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"math_sin(1) + undefined; + +0.8414709848078965 + undefined; +" +`) +}) + +// source 0 +test('math_pow', () => { + const code = ` + math_pow(3,100) || NaN; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"math_pow(3, 100) || NaN; + +5.153775207320114e+47 || NaN; +" +`) +}) + +// source 0 +test('expmod', () => { + const code = ` + function is_even(n) { + return n % 2 === 0; +} + +function expmod(base, exp, m) { + if (exp === 0) { + return 1; + } else { + if (is_even(exp)) { + const to_half = expmod(base, exp / 2, m); + return to_half * to_half % m; + } else { + return base * expmod(base, exp - 1, m) % m; + } + } +} + +expmod(4, 3, 5); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchSnapshot() +}) + +// source 0 +test('Infinite recursion', () => { + const code = ` + function f() { + return f(); +} +f(); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps.map(codify).join('\n')).toMatchSnapshot() +}) + +// source 0 +test('subsets', () => { + const code = ` + function subsets(s) { + if (is_null(s)) { + return list(null); + } else { + const rest = subsets(tail(s)); + return append(rest, map(x => pair(head(s), x), rest)); + } +} + + subsets(list(1, 2, 3)); + ` + const program = parse(code, mockContext(2))! + const steps = getEvaluationSteps(program, mockContext(2)) + expect(steps.map(codify).join('\n')).toMatchSnapshot() +}) + +// source 0 +test('even odd mutual', () => { + const code = ` + const odd = n => n === 0 ? false : even(n-1); + const even = n => n === 0 || odd(n-1); + even(1); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"const odd = =>; +const even = =>; +even(1); + +const even = =>; +even(1); + +=>(1); + +1 === 0 || =>(1 - 1); + +false || =>(1 - 1); + +=>(1 - 1); + +=>(0); + +0 === 0 ? false : =>(0 - 1); + +true ? false : =>(0 - 1); + +false; +" +`) +}) + +// source 0 +test('assign undefined', () => { + const code = ` + const a = undefined; + a; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"const a = undefined; +a; + +undefined; +" +`) +}) + +test('builtins return identifiers', () => { + const code = ` + math_sin(); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"math_sin(); + +NaN; +" +`) +}) + +test('negative numbers as arguments', () => { + const code = ` + math_sin(-1); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"math_sin(-1); + +-0.8414709848078965; +" +`) +}) + +test('is_function checks for builtin', () => { + const code = ` + is_function(is_function); + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"is_function(is_function); + +true; +" +`) +}) + +test('triple equals work on function', () => { + const code = ` + function f() { return g(); } function g() { return f(); } + f === f; + g === g; + f === g; + ` + const program = parse(code, mockContext())! + const steps = getEvaluationSteps(program, mockContext()) + expect(steps).toMatchSnapshot() + expect(steps.map(codify).join('\n')).toMatchInlineSnapshot(` +"function f() { + return g(); +} +function g() { + return f(); +} +f === f; +g === g; +f === g; + +function g() { + return f(); +} +f === f; +g === g; +f === g; + +f === f; +g === g; +f === g; + +true; +g === g; +f === g; + +g === g; +f === g; + +true; +f === g; + +f === g; + +false; +" +`) +}) diff --git a/src/index.ts b/src/index.ts index f0f5fbc7f..821596fda 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,6 +14,7 @@ import { import { parse, parseAt } from './parser' import { AsyncScheduler, PreemptiveScheduler } from './schedulers' import { areBreakpointsSet, setBreakpointAtLine } from './stdlib/inspector' +import { codify, getEvaluationSteps } from './substituter' import { transpile } from './transpiler' import { Context, @@ -32,13 +33,15 @@ export interface IOptions { steps: number executionMethod: ExecutionMethod originalMaxExecTime: number + useSubst: boolean } const DEFAULT_OPTIONS: IOptions = { scheduler: 'async', steps: 1000, executionMethod: 'auto', - originalMaxExecTime: 1000 + originalMaxExecTime: 1000, + useSubst: false } // needed to work on browsers @@ -163,6 +166,13 @@ export async function runInContext( if (!program) { return resolvedErrorPromise } + if (options.useSubst) { + const steps = getEvaluationSteps(program, context) + return Promise.resolve({ + status: 'finished', + value: steps.map(codify) + } as Result) + } const isNativeRunnable = determineExecutionMethod(theOptions, context, program) if (context.prelude !== null) { const prelude = context.prelude diff --git a/src/repl/repl.ts b/src/repl/repl.ts index 5ffe25a66..956a88da1 100644 --- a/src/repl/repl.ts +++ b/src/repl/repl.ts @@ -1,14 +1,14 @@ import repl = require('repl') // 'repl' here refers to the module named 'repl' in index.d.ts import { createContext, parseError, runInContext } from '../index' -function startRepl(chapter = 1) { +function startRepl(chapter = 1, useSubst: boolean) { // use defaults for everything const context = createContext(chapter) repl.start( // the object being passed as argument fits the interface ReplOptions in the repl module. { eval: (cmd, unusedContext, unusedFilename, callback) => { - runInContext(cmd, context, { scheduler: 'preemptive' }).then(obj => { + runInContext(cmd, context, { scheduler: 'preemptive', useSubst }).then(obj => { if (obj.status === 'finished') { callback(null, obj.value) } else { @@ -22,7 +22,8 @@ function startRepl(chapter = 1) { function main() { const chapter = process.argv.length > 2 ? parseInt(process.argv[2], 10) : 1 - startRepl(chapter) + const useSubst = process.argv.length > 3 ? process.argv[3] === 'subst' : false + startRepl(chapter, useSubst) } main() diff --git a/src/substituter.ts b/src/substituter.ts new file mode 100644 index 000000000..37f247d45 --- /dev/null +++ b/src/substituter.ts @@ -0,0 +1,1024 @@ +import { generate } from 'astring' +import * as es from 'estree' +import * as errors from './interpreter-errors' +import { parse } from './parser' +import { BlockExpression, Context, FunctionDeclarationExpression, substituterNodes } from './types' +import * as ast from './utils/astCreator' +import { nodeToValue, valueToExpression } from './utils/converter' +import { + dummyBlockExpression, + dummyBlockStatement, + dummyExpression, + dummyProgram, + dummyStatement, + dummyVariableDeclarator +} from './utils/dummyAstCreator' +import { evaluateBinaryExpression, evaluateUnaryExpression } from './utils/operators' +import * as rttc from './utils/rttc' +import { isAllowedLiterals, isBuiltinFunction, isNegNumber } from './utils/substituter' +import * as builtin from './utils/substStdLib' + +const irreducibleTypes = new Set([ + 'Literal', + 'FunctionExpression', + 'ArrowFunctionExpression', + 'ArrayExpression' +]) + +function isIrreducible(node: substituterNodes) { + return ( + isBuiltinFunction(node) || + isAllowedLiterals(node) || + isNegNumber(node) || + irreducibleTypes.has(node.type) + ) +} + +type irreducibleNodes = + | es.FunctionExpression + | es.ArrowFunctionExpression + | es.Literal + | es.ArrayExpression + +/* tslint:disable:no-shadowed-variable */ +// wrapper function, calls substitute immediately. +function substituteMain( + name: es.Identifier, + replacement: irreducibleNodes, + target: substituterNodes +): substituterNodes { + const seenBefore: Map = new Map() + /** + * Substituters are invoked only when the target is not seen before, + * therefore each function has the responsbility of registering the + * [target, replacement] pair in seenBefore. + * Substituter have two general steps: + * 1. Create dummy replacement with 1. and push [target, dummyReplacement] + * into the seenBefore array. + * 2. [recursive step] we substitute the children, and return the dummyReplacement. + */ + const substituters = { + Identifier( + target: es.Identifier + ): es.Identifier | FunctionDeclarationExpression | es.Literal | es.Expression { + if (replacement.type === 'Literal') { + // only accept string, boolean and numbers for arguments + return target.name === name.name ? ast.primitive(replacement.value) : target + } else { + return target.name === name.name + ? (substitute(replacement) as FunctionDeclarationExpression) + : target + } + }, + + ExpressionStatement(target: es.ExpressionStatement): es.ExpressionStatement { + const substedExpressionStatement = ast.expressionStatement(dummyExpression()) + seenBefore.set(target, substedExpressionStatement) + substedExpressionStatement.expression = substitute(target.expression) as es.Expression + return substedExpressionStatement + }, + + BinaryExpression(target: es.BinaryExpression): es.BinaryExpression { + const substedBinaryExpression = ast.binaryExpression( + target.operator, + dummyExpression(), + dummyExpression(), + target.loc! + ) + seenBefore.set(target, substedBinaryExpression) + substedBinaryExpression.left = substitute(target.left) as es.Expression + substedBinaryExpression.right = substitute(target.right) as es.Expression + return substedBinaryExpression + }, + + UnaryExpression(target: es.UnaryExpression): es.UnaryExpression { + const substedUnaryExpression = ast.unaryExpression( + target.operator, + dummyExpression(), + target.loc! + ) + seenBefore.set(target, substedUnaryExpression) + substedUnaryExpression.argument = substitute(target.argument) as es.Expression + return substedUnaryExpression + }, + + ConditionalExpression(target: es.ConditionalExpression): es.ConditionalExpression { + const substedConditionalExpression = ast.conditionalExpression( + dummyExpression(), + dummyExpression(), + dummyExpression(), + target.loc! + ) + seenBefore.set(target, substedConditionalExpression) + substedConditionalExpression.test = substitute(target.test) as es.Expression + substedConditionalExpression.consequent = substitute(target.consequent) as es.Expression + substedConditionalExpression.alternate = substitute(target.alternate) as es.Expression + return substedConditionalExpression + }, + + LogicalExpression(target: es.LogicalExpression): es.LogicalExpression { + const substedLocialExpression = ast.logicalExpression( + target.operator, + target.left, + target.right + ) + seenBefore.set(target, substedLocialExpression) + substedLocialExpression.left = substitute(target.left) as es.Expression + substedLocialExpression.right = substitute(target.right) as es.Expression + return substedLocialExpression + }, + + CallExpression(target: es.CallExpression): es.CallExpression { + const dummyArgs = target.arguments.map(() => dummyExpression()) + const substedCallExpression = ast.callExpression(dummyExpression(), dummyArgs, target.loc!) + seenBefore.set(target, substedCallExpression) + substedCallExpression.arguments = target.arguments.map( + expn => substitute(expn) as es.Expression + ) + // do not subst callee for 1. const declarations and 2. Formal argument + // substitution of parameters + // TODO + if (replacement.type === 'Literal') { + substedCallExpression.callee = target.callee as es.Expression + } else { + substedCallExpression.callee = substitute(target.callee) as es.Expression + } + return substedCallExpression + }, + + FunctionDeclaration(target: es.FunctionDeclaration): es.FunctionDeclaration { + const substedFunctionDeclaration = ast.functionDeclaration( + target.id, + target.params, + dummyBlockStatement() + ) + seenBefore.set(target, substedFunctionDeclaration) + // check for free/bounded variable + for (const param of target.params) { + if (param.type === 'Identifier' && param.name === name.name) { + substedFunctionDeclaration.body = target.body + return substedFunctionDeclaration + } + } + substedFunctionDeclaration.body = substitute(target.body) as es.BlockStatement + return substedFunctionDeclaration + }, + + FunctionExpression(target: es.FunctionExpression): es.FunctionExpression { + const substedFunctionExpression = target.id + ? ast.functionDeclarationExpression(target.id, target.params, dummyBlockStatement()) + : ast.functionExpression(target.params as es.Identifier[], dummyBlockStatement()) + seenBefore.set(target, substedFunctionExpression) + // check for free/bounded variable + for (const param of target.params) { + if (param.type === 'Identifier' && param.name === name.name) { + substedFunctionExpression.body = target.body + return substedFunctionExpression + } + } + substedFunctionExpression.body = substitute(target.body) as es.BlockStatement + return substedFunctionExpression + }, + + Program(target: es.Program): es.Program { + const substedProgram = ast.program(target.body.map(() => dummyStatement())) + seenBefore.set(target, substedProgram) + substedProgram.body = target.body.map(stmt => substitute(stmt) as es.Statement) + return substedProgram + }, + + BlockStatement(target: es.BlockStatement): es.BlockStatement { + const substedBody = target.body.map(() => dummyStatement()) + const substedBlockStatement = ast.blockStatement(substedBody) + seenBefore.set(target, substedBlockStatement) + substedBlockStatement.body = target.body.map(stmt => substitute(stmt) as es.Statement) + return substedBlockStatement + }, + + BlockExpression(target: BlockExpression): BlockExpression { + const substedBody = target.body.map(() => dummyStatement()) + const substedBlockExpression = ast.blockExpression(substedBody) + seenBefore.set(target, substedBlockExpression) + substedBlockExpression.body = target.body.map(stmt => substitute(stmt) as es.Statement) + return substedBlockExpression + }, + + ReturnStatement(target: es.ReturnStatement): es.ReturnStatement { + const substedReturnStatement = ast.returnStatement(dummyExpression(), target.loc!) + seenBefore.set(target, substedReturnStatement) + substedReturnStatement.argument = substitute(target.argument!) as es.Expression + return substedReturnStatement + }, + + // source 1 + ArrowFunctionExpression(target: es.ArrowFunctionExpression): es.ArrowFunctionExpression { + const substedArrow = ast.arrowFunctionExpression(target.params, dummyBlockStatement()) + seenBefore.set(target, substedArrow) + // check for free/bounded variable + for (const param of target.params) { + if (param.type === 'Identifier' && param.name === name.name) { + substedArrow.body = target.body + substedArrow.expression = target.body.type !== 'BlockStatement' + return substedArrow + } + } + substedArrow.body = substitute(target.body) as es.BlockStatement | es.Expression + substedArrow.expression = target.body.type !== 'BlockStatement' + return substedArrow + }, + + VariableDeclaration(target: es.VariableDeclaration): es.VariableDeclaration { + const substedVariableDeclaration = ast.variableDeclaration([dummyVariableDeclarator()]) + seenBefore.set(target, substedVariableDeclaration) + substedVariableDeclaration.declarations = target.declarations.map( + substitute + ) as es.VariableDeclarator[] + return substedVariableDeclaration + }, + + VariableDeclarator(target: es.VariableDeclarator): es.VariableDeclarator { + const substedVariableDeclarator = ast.variableDeclarator(target.id, dummyExpression()) + seenBefore.set(target, substedVariableDeclarator) + substedVariableDeclarator.init = + target.id.type === 'Identifier' && name.name === target.id.name + ? target.init + : // in source, we only allow const, and hence init cannot be undefined + (substitute(target.init!) as es.Expression) + return substedVariableDeclarator + }, + + IfStatement(target: es.IfStatement): es.IfStatement { + const substedIfStatement = ast.ifStatement( + dummyExpression(), + dummyBlockStatement(), + dummyBlockStatement(), + target.loc! + ) + seenBefore.set(target, substedIfStatement) + substedIfStatement.test = substitute(target.test) as es.Expression + substedIfStatement.consequent = substitute(target.consequent) as es.BlockStatement + substedIfStatement.alternate = target.alternate + ? (substitute(target.alternate) as es.BlockStatement) + : null + return substedIfStatement + }, + + ArrayExpression(target: es.ArrayExpression): es.ArrayExpression { + const substedArray = ast.arrayExpression([dummyExpression()]) + seenBefore.set(target, substedArray) + substedArray.elements = target.elements.map(substitute) as es.Expression[] + return substedArray + } + } + + /** + * For mapper use, maps a [symbol, value] pair to the node supplied. + * @param name the name to be replaced + * @param replacement the expression to replace the name with + * @param node a node holding the target symbols + * @param seenBefore a list of nodes that are seen before in substitution + */ + function substitute(target: substituterNodes): substituterNodes { + const result = seenBefore.get(target) + if (result) { + return result as substituterNodes + } + const substituter = substituters[target.type] + if (substituter === undefined) { + seenBefore.set(target, target) + return target // no need to subst, such as literals + } else { + // substituters are responsible of registering seenBefore + return substituter(target) + } + } + return substitute(target) +} + +/** + * Substitutes a call expression with the body of the callee (funExp) + * and the body will have all ocurrences of parameters substituted + * with the arguments. + * @param call call expression with callee as functionExpression + * @param args arguments supplied to the call expression + */ +function apply( + callee: es.FunctionExpression | es.ArrowFunctionExpression, + args: irreducibleNodes[] +): BlockExpression | es.Expression { + let substedBody = callee.body + for (let i = 0; i < args.length; i++) { + // source discipline requires parameters to be identifiers. + const param = callee.params[i] as es.Identifier + const arg = args[i] as es.Literal + + substedBody = substituteMain(param, arg, substedBody) as typeof substedBody + } + + if (callee.type === 'ArrowFunctionExpression' && callee.expression) { + return substedBody as es.Expression + } + + const firstStatement: es.Statement = (substedBody as es.BlockStatement).body[0] + return firstStatement.type === 'ReturnStatement' + ? (firstStatement.argument as es.Expression) + : ast.blockExpression((substedBody as es.BlockStatement).body) +} + +const reducers = { + // source 0 + Identifier(node: es.Identifier, context: Context): [substituterNodes, Context] { + // can only be built ins. the rest should have been declared + if (!(isAllowedLiterals(node) || isBuiltinFunction(node))) { + throw new errors.UndefinedVariable(node.name, node) + } else { + return [node, context] + } + }, + + ExpressionStatement(node: es.ExpressionStatement, context: Context): [substituterNodes, Context] { + const [reduced] = reduce(node.expression, context) + return [ast.expressionStatement(reduced as es.Expression), context] + }, + + BinaryExpression(node: es.BinaryExpression, context: Context): [substituterNodes, Context] { + const { operator, left, right } = node + if (isIrreducible(left)) { + if (isIrreducible(right)) { + // if the ast are the same, then the values are the same + if ( + builtin.is_function(left).value && + builtin.is_function(right).value && + operator === '===' + ) { + return [valueToExpression(left === right), context] + } + const [leftValue, rightValue] = [left, right].map(nodeToValue) + const error = rttc.checkBinaryExpression(node, operator, leftValue, rightValue) + if (error === undefined) { + const lit = evaluateBinaryExpression(operator, leftValue, rightValue) + return [valueToExpression(lit, context), context] + } else { + throw error + } + } else { + const [reducedRight] = reduce(right, context) + const reducedExpression = ast.binaryExpression( + operator, + left, + reducedRight as es.Expression, + node.loc! + ) + return [reducedExpression, context] + } + } else { + const [reducedLeft] = reduce(node.left, context) + const reducedExpression = ast.binaryExpression( + operator, + reducedLeft as es.Expression, + right, + node.loc! + ) + return [reducedExpression, context] + } + }, + + UnaryExpression(node: es.UnaryExpression, context: Context): [substituterNodes, Context] { + const { operator, argument } = node + if (isIrreducible(argument)) { + // tslint:disable-next-line + const argumentValue = nodeToValue(argument) + const error = rttc.checkUnaryExpression(node, operator, argumentValue) + if (error === undefined) { + const result = evaluateUnaryExpression(operator, argumentValue) + return [valueToExpression(result, context), context] + } else { + throw error + } + } else { + const [reducedArgument] = reduce(argument, context) + const reducedExpression = ast.unaryExpression( + operator, + reducedArgument as es.Expression, + node.loc! + ) + return [reducedExpression, context] + } + }, + + LogicalExpression(node: es.LogicalExpression, context: Context): [substituterNodes, Context] { + const { left, right } = node + if (isIrreducible(left)) { + if (!(left.type === 'Literal' && typeof left.value === 'boolean')) { + throw new rttc.TypeError(left, ' on left hand side of operation', 'boolean', left.type) + } else { + const result = + node.operator === '&&' + ? left.value + ? right + : ast.literal(false, node.loc!) + : left.value + ? ast.literal(true, node.loc!) + : right + return [result as es.Expression, context] + } + } else { + const [reducedLeft] = reduce(left, context) + return [ + ast.logicalExpression( + node.operator, + reducedLeft as es.Expression, + right, + node.loc! + ) as substituterNodes, + context + ] + } + }, + + ConditionalExpression( + node: es.ConditionalExpression, + context: Context + ): [substituterNodes, Context] { + const { test, consequent, alternate } = node + if (test.type === 'Literal') { + const error = rttc.checkIfStatement(node, test.value) + if (error === undefined) { + return [(test.value ? consequent : alternate) as es.Expression, context] + } else { + throw error + } + } else { + const [reducedTest] = reduce(test, context) + const reducedExpression = ast.conditionalExpression( + reducedTest as es.Expression, + consequent, + alternate, + node.loc! + ) + return [reducedExpression, context] + } + }, + + // core of the subst model + CallExpression(node: es.CallExpression, context: Context): [substituterNodes, Context] { + const [callee, args] = [node.callee, node.arguments] + // source 0: discipline: any expression can be transformed into either literal, ident(builtin) or funexp + // if functor can reduce, reduce functor + if (!isIrreducible(callee)) { + return [ + ast.callExpression( + reduce(callee, context)[0] as es.Expression, + args as es.Expression[], + node.loc! + ), + context + ] + } else if (callee.type === 'Literal') { + throw new errors.CallingNonFunctionValue(callee, node) + } else if ( + callee.type === 'Identifier' && + !(callee.name in context.runtime.environments[0].head) + ) { + throw new errors.UndefinedVariable(callee.name, callee) + } else { + // callee is builtin or funexp + if ( + (callee.type === 'FunctionExpression' || callee.type === 'ArrowFunctionExpression') && + args.length !== callee.params.length + ) { + throw new errors.InvalidNumberOfArguments(node, args.length, callee.params.length) + } else { + for (let i = 0; i < args.length; i++) { + const currentArg = args[i] + if (!isIrreducible(currentArg)) { + const reducedArgs = [ + ...args.slice(0, i), + reduce(currentArg, context)[0], + ...args.slice(i + 1) + ] + return [ + ast.callExpression( + callee as es.Expression, + reducedArgs as es.Expression[], + node.loc! + ), + context + ] + } + if ( + currentArg.type === 'Identifier' && + !(currentArg.name in context.runtime.environments[0].head) + ) { + throw new errors.UndefinedVariable(currentArg.name, currentArg) + } + } + } + // if it reaches here, means all the arguments are legal. + if (['FunctionExpression', 'ArrowFunctionExpression'].includes(callee.type)) { + return [apply(callee as FunctionDeclarationExpression, args as es.Literal[]), context] + } else { + if ((callee as es.Identifier).name.includes('math')) { + return [builtin.evaluateMath((callee as es.Identifier).name, ...args), context] + } + return [builtin[(callee as es.Identifier).name](...args), context] + } + } + }, + + Program(node: es.Program, context: Context): [substituterNodes, Context] { + const [firstStatement, ...otherStatements] = node.body + if (firstStatement.type === 'ExpressionStatement' && isIrreducible(firstStatement.expression)) { + return [ast.program(otherStatements as es.Statement[]), context] + } else if (firstStatement.type === 'FunctionDeclaration') { + let funDecExp = ast.functionDeclarationExpression( + firstStatement.id!, + firstStatement.params, + firstStatement.body + ) as FunctionDeclarationExpression + // substitute body + funDecExp = substituteMain( + funDecExp.id, + funDecExp, + funDecExp + ) as FunctionDeclarationExpression + // substitute the rest of the program + const remainingProgram = ast.program(otherStatements as es.Statement[]) + return [substituteMain(funDecExp.id, funDecExp, remainingProgram), context] + } else if (firstStatement.type === 'VariableDeclaration') { + const { kind, declarations } = firstStatement + if (kind !== 'const') { + // TODO: cannot use let or var + return [dummyProgram(), context] + } else if ( + declarations.length <= 0 || + declarations.length > 1 || + declarations[0].type !== 'VariableDeclarator' || + !declarations[0].init + ) { + // TODO: syntax error + return [dummyProgram(), context] + } else { + const declarator = declarations[0] as es.VariableDeclarator + const rhs = declarator.init! + if (declarator.id.type !== 'Identifier') { + // TODO: source does not allow destructuring + return [dummyProgram(), context] + } else if (isIrreducible(rhs)) { + const remainingProgram = ast.program(otherStatements as es.Statement[]) + // forced casting for some weird errors + return [ + substituteMain(declarator.id, rhs as es.ArrayExpression, remainingProgram), + context + ] + } else if (rhs.type === 'ArrowFunctionExpression' || rhs.type === 'FunctionExpression') { + let funDecExp = ast.functionDeclarationExpression( + declarator.id, + rhs.params, + rhs.body.type === 'BlockStatement' + ? rhs.body + : ast.blockStatement([ast.returnStatement(rhs.body)]) + ) as FunctionDeclarationExpression + // substitute body + funDecExp = substituteMain( + funDecExp.id, + funDecExp, + funDecExp + ) as FunctionDeclarationExpression + // substitute the rest of the program + const remainingProgram = ast.program(otherStatements as es.Statement[]) + return [substituteMain(funDecExp.id, funDecExp, remainingProgram), context] + } else { + const [reducedRhs] = reduce(rhs, context) + return [ + ast.program([ + ast.declaration( + declarator.id.name, + 'const', + reducedRhs as es.Expression + ) as es.Statement, + ...(otherStatements as es.Statement[]) + ]), + context + ] + } + } + } + const [reduced] = reduce(firstStatement, context) + return [ast.program([reduced as es.Statement, ...(otherStatements as es.Statement[])]), context] + }, + + BlockStatement(node: es.BlockStatement, context: Context): [substituterNodes, Context] { + const [firstStatement, ...otherStatements] = node.body + if (firstStatement.type === 'ReturnStatement') { + const arg = firstStatement.argument as es.Expression + if (isIrreducible(arg)) { + return [firstStatement, context] + } else { + const reducedReturn = ast.returnStatement( + reduce(arg, context)[0] as es.Expression, + firstStatement.loc! + ) + return [ast.blockStatement([reducedReturn, ...otherStatements]), context] + } + } else if ( + firstStatement.type === 'ExpressionStatement' && + isIrreducible(firstStatement.expression) + ) { + return [ + otherStatements.length > 0 + ? ast.blockStatement(otherStatements as es.Statement[]) + : ast.expressionStatement(ast.identifier('undefined')), + context + ] + } else if (firstStatement.type === 'FunctionDeclaration') { + let funDecExp = ast.functionDeclarationExpression( + firstStatement.id!, + firstStatement.params, + firstStatement.body + ) as FunctionDeclarationExpression + // substitute body + funDecExp = substituteMain( + funDecExp.id, + funDecExp, + funDecExp + ) as FunctionDeclarationExpression + // substitute the rest of the blockStatement + const remainingBlockStatement = ast.blockStatement(otherStatements as es.Statement[]) + return [substituteMain(funDecExp.id, funDecExp, remainingBlockStatement), context] + } else if (firstStatement.type === 'VariableDeclaration') { + const { kind, declarations } = firstStatement + if (kind !== 'const') { + // TODO: cannot use let or var + return [dummyBlockStatement(), context] + } else if ( + declarations.length <= 0 || + declarations.length > 1 || + declarations[0].type !== 'VariableDeclarator' || + !declarations[0].init + ) { + // TODO: syntax error + return [dummyBlockStatement(), context] + } else { + const declarator = declarations[0] as es.VariableDeclarator + const rhs = declarator.init! + if (declarator.id.type !== 'Identifier') { + // TODO: source does not allow destructuring + return [dummyBlockStatement(), context] + } else if (isIrreducible(rhs)) { + const remainingBlockStatement = ast.blockStatement(otherStatements as es.Statement[]) + // force casting for weird errors + return [ + substituteMain(declarator.id, rhs as es.ArrayExpression, remainingBlockStatement), + context + ] + } else if (rhs.type === 'ArrowFunctionExpression' || rhs.type === 'FunctionExpression') { + let funDecExp = ast.functionDeclarationExpression( + declarator.id, + rhs.params, + rhs.body.type === 'BlockStatement' + ? rhs.body + : ast.blockStatement([ast.returnStatement(rhs.body)]) + ) as FunctionDeclarationExpression + // substitute body + funDecExp = substituteMain( + funDecExp.id, + funDecExp, + funDecExp + ) as FunctionDeclarationExpression + // substitute the rest of the blockStatement + const remainingBlockStatement = ast.blockStatement(otherStatements as es.Statement[]) + return [substituteMain(funDecExp.id, funDecExp, remainingBlockStatement), context] + } else { + const [reducedRhs] = reduce(rhs, context) + return [ + ast.blockStatement([ + ast.declaration( + declarator.id.name, + 'const', + reducedRhs as es.Expression + ) as es.Statement, + ...(otherStatements as es.Statement[]) + ]), + context + ] + } + } + } + const [reduced] = reduce(firstStatement, context) + return [ + ast.blockStatement([reduced as es.Statement, ...(otherStatements as es.Statement[])]), + context + ] + }, + + BlockExpression(node: BlockExpression, context: Context): [substituterNodes, Context] { + const [firstStatement, ...otherStatements] = node.body + if (firstStatement.type === 'ReturnStatement') { + const arg = firstStatement.argument as es.Expression + if (isIrreducible(arg)) { + return [arg, context] + } else { + const reducedReturn = ast.returnStatement( + reduce(arg, context)[0] as es.Expression, + firstStatement.loc! + ) + return [ast.blockExpression([reducedReturn, ...otherStatements]), context] + } + } else if ( + firstStatement.type === 'ExpressionStatement' && + isIrreducible(firstStatement.expression) + ) { + return [ + otherStatements.length > 0 + ? ast.blockExpression(otherStatements as es.Statement[]) + : ast.identifier('undefined'), + context + ] + } else if (firstStatement.type === 'FunctionDeclaration') { + let funDecExp = ast.functionDeclarationExpression( + firstStatement.id!, + firstStatement.params, + firstStatement.body + ) as FunctionDeclarationExpression + // substitute body + funDecExp = substituteMain( + funDecExp.id, + funDecExp, + funDecExp + ) as FunctionDeclarationExpression + // substitute the rest of the blockExpression + const remainingBlockExpression = ast.blockExpression(otherStatements as es.Statement[]) + return [substituteMain(funDecExp.id, funDecExp, remainingBlockExpression), context] + } else if (firstStatement.type === 'VariableDeclaration') { + const { kind, declarations } = firstStatement + if (kind !== 'const') { + // TODO: cannot use let or var + return [dummyBlockExpression(), context] + } else if ( + declarations.length <= 0 || + declarations.length > 1 || + declarations[0].type !== 'VariableDeclarator' || + !declarations[0].init + ) { + // TODO: syntax error + return [dummyBlockExpression(), context] + } else { + const declarator = declarations[0] as es.VariableDeclarator + const rhs = declarator.init! + if (declarator.id.type !== 'Identifier') { + // TODO: source does not allow destructuring + return [dummyBlockExpression(), context] + } else if (isIrreducible(rhs)) { + const remainingBlockExpression = ast.blockExpression(otherStatements as es.Statement[]) + // forced casting for some weird errors + return [ + substituteMain(declarator.id, rhs as es.ArrayExpression, remainingBlockExpression), + context + ] + } else if (rhs.type === 'ArrowFunctionExpression' || rhs.type === 'FunctionExpression') { + let funDecExp = ast.functionDeclarationExpression( + declarator.id, + rhs.params, + rhs.body.type === 'BlockStatement' + ? rhs.body + : ast.blockStatement([ast.returnStatement(rhs.body)]) + ) as FunctionDeclarationExpression + // substitute body + funDecExp = substituteMain( + funDecExp.id, + funDecExp, + funDecExp + ) as FunctionDeclarationExpression + // substitute the rest of the blockExpression + const remainingBlockExpression = ast.blockExpression(otherStatements as es.Statement[]) + return [substituteMain(funDecExp.id, funDecExp, remainingBlockExpression), context] + } else { + const [reducedRhs] = reduce(rhs, context) + return [ + ast.blockExpression([ + ast.declaration( + declarator.id.name, + 'const', + reducedRhs as es.Expression + ) as es.Statement, + ...(otherStatements as es.Statement[]) + ]), + context + ] + } + } + } + const [reduced] = reduce(firstStatement, context) + return [ + ast.blockExpression([reduced as es.Statement, ...(otherStatements as es.Statement[])]), + context + ] + }, + + // source 1 + IfStatement(node: es.IfStatement, context: Context): [substituterNodes, Context] { + const { test, consequent, alternate } = node + if (test.type === 'Literal') { + const error = rttc.checkIfStatement(node, test.value) + if (error === undefined) { + return [(test.value ? consequent : alternate) as es.Statement, context] + } else { + throw error + } + } else { + const [reducedTest] = reduce(test, context) + const reducedIfStatement = ast.ifStatement( + reducedTest as es.Expression, + consequent as es.BlockStatement, + alternate as es.IfStatement | es.BlockStatement, + node.loc! + ) + return [reducedIfStatement, context] + } + } +} + +function reduce(node: substituterNodes, context: Context): [substituterNodes, Context] { + const reducer = reducers[node.type] + if (reducer === undefined) { + return [ast.program([]), context] // exit early + // return [node, context] // if reducer is not found we just get stuck + } else { + return reducer(node, context) + } +} + +// recurse down the program like substitute +// if see a function at expression position, +// has an identifier: replace with the name +// else: replace with an identifer "=>" +const treeifiers = { + // Identifier: return + ExpressionStatement: (target: es.ExpressionStatement): es.ExpressionStatement => { + return ast.expressionStatement(treeify(target.expression) as es.Expression) + }, + + BinaryExpression: (target: es.BinaryExpression) => { + return ast.binaryExpression( + target.operator, + treeify(target.left) as es.Expression, + treeify(target.right) as es.Expression + ) + }, + + LogicalExpression: (target: es.LogicalExpression) => { + return ast.logicalExpression( + target.operator, + treeify(target.left) as es.Expression, + treeify(target.right) as es.Expression + ) + }, + + UnaryExpression: (target: es.UnaryExpression): es.UnaryExpression => { + return ast.unaryExpression(target.operator, treeify(target.argument) as es.Expression) + }, + + ConditionalExpression: (target: es.ConditionalExpression): es.ConditionalExpression => { + return ast.conditionalExpression( + treeify(target.test) as es.Expression, + treeify(target.consequent) as es.Expression, + treeify(target.alternate) as es.Expression + ) + }, + + CallExpression: (target: es.CallExpression): es.CallExpression => { + return ast.callExpression( + treeify(target.callee) as es.Expression, + target.arguments.map(arg => treeify(arg) as es.Expression) + ) + }, + + FunctionDeclaration: (target: es.FunctionDeclaration): es.FunctionDeclaration => { + return ast.functionDeclaration(target.id, target.params, treeify( + target.body + ) as es.BlockStatement) + }, + + // CORE + FunctionExpression: (target: es.FunctionExpression): es.Identifier => { + return ast.identifier(target.id ? target.id.name : '=>') + }, + + Program: (target: es.Program): es.Program => { + return ast.program(target.body.map(stmt => treeify(stmt) as es.Statement)) + }, + + BlockStatement: (target: es.BlockStatement): es.BlockStatement => { + return ast.blockStatement(target.body.map(stmt => treeify(stmt) as es.Statement)) + }, + + ReturnStatement: (target: es.ReturnStatement): es.ReturnStatement => { + return ast.returnStatement(treeify(target.argument!) as es.Expression) + }, + + BlockExpression: (target: BlockExpression): es.BlockStatement => { + return ast.blockStatement(target.body.map(treeify) as es.Statement[]) + }, + + // source 1 + VariableDeclaration: (target: es.VariableDeclaration): es.VariableDeclaration => { + return ast.variableDeclaration(target.declarations.map(treeify) as es.VariableDeclarator[]) + }, + + VariableDeclarator: (target: es.VariableDeclarator): es.VariableDeclarator => { + return ast.variableDeclarator(target.id, treeify(target.init!) as es.Expression) + }, + + IfStatement: (target: es.IfStatement): es.IfStatement => { + return ast.ifStatement( + treeify(target.test) as es.Expression, + treeify(target.consequent) as es.BlockStatement, + treeify(target.alternate!) as es.BlockStatement | es.IfStatement + ) + }, + + // CORE + ArrowFunctionExpression: (target: es.ArrowFunctionExpression): es.Identifier => { + return ast.identifier('=>') + }, + + // source 2 + ArrayExpression: (target: es.ArrayExpression): es.ArrayExpression => { + return ast.arrayExpression(target.elements.map(treeify) as es.Expression[]) + } +} + +function treeify(target: substituterNodes): substituterNodes { + const treeifier = treeifiers[target.type] + if (treeifier === undefined) { + return target + } else { + return treeifier(target) + } +} + +export const codify = (node: substituterNodes): string => generate(treeify(node)) + +// strategy: we remember how many statements are there originally in program. +// since listPrelude are just functions, they will be disposed of one by one +// we prepend the program with the program resulting from the definitions, +// and reduce the combined program until the program body +// has number of statement === original program +// then we return it to the getEvaluationSteps +function substPredefinedFns(program: es.Program, context: Context): [es.Program, Context] { + const originalStatementCount = program.body.length + let combinedProgram = program + if (context.prelude) { + // evaluate the list prelude first + const listPreludeProgram = parse(context.prelude, context)! + combinedProgram.body = listPreludeProgram.body.concat(program.body) + } + while (combinedProgram.body.length > originalStatementCount) { + // some bug with no semis + // tslint:disable-next-line + ;[combinedProgram] = reduce(combinedProgram, context) as [es.Program, Context] + } + return [combinedProgram, context] +} + +function substPredefinedConstants(program: es.Program): es.Program { + const constants = [['undefined', undefined]] + const mathConstants = Object.getOwnPropertyNames(Math) + .filter(name => typeof Math[name] !== 'function') + .map(name => ['math_' + name, Math[name]]) + let substed = program + for (const nameValuePair of constants.concat(mathConstants)) { + substed = substituteMain( + ast.identifier(nameValuePair[0] as string), + ast.literal(nameValuePair[1] as string | number) as es.Literal, + substed + ) as es.Program + } + return substed +} + +// the context here is for builtins +export function getEvaluationSteps(program: es.Program, context: Context): es.Program[] { + const steps: es.Program[] = [] + try { + // starts with substituting predefined constants + let reduced = substPredefinedConstants(program) + // and predefined fns. + reduced = substPredefinedFns(reduced, context)[0] + while ((reduced as es.Program).body.length > 0) { + if (steps.length === 19999) { + steps.push( + ast.program([ast.expressionStatement(ast.identifier('Maximum number of steps exceeded'))]) + ) + break + } + steps.push(reduced as es.Program) + reduced = reduce(reduced, context)[0] as es.Program + } + return steps + } catch (error) { + context.errors.push(error) + return steps + } +} diff --git a/src/types.ts b/src/types.ts index ab02d4566..b60eafbf6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -155,3 +155,23 @@ export interface Directive extends es.ExpressionStatement { expression: es.Literal directive: string } + +/** For use in the substituter, to differentiate between a function declaration in the expression position, + * which has an id, as opposed to function expressions. + */ +export interface FunctionDeclarationExpression extends es.FunctionExpression { + id: es.Identifier + body: es.BlockStatement +} + +/** + * For use in the substituter: call expressions can be reduced into an expression if the block + * only contains a single return statement; or a block, but has to be in the expression position. + * This is NOT compliant with the ES specifications, just as an intermediate step during substitutions. + */ +export interface BlockExpression extends es.BaseExpression { + type: 'BlockExpression' + body: es.Statement[] +} + +export type substituterNodes = es.Node | BlockExpression diff --git a/src/utils/astCreator.ts b/src/utils/astCreator.ts index 516f99989..b90c8e2c5 100644 --- a/src/utils/astCreator.ts +++ b/src/utils/astCreator.ts @@ -1,5 +1,5 @@ import * as es from 'estree' -import { AllowedDeclarations } from '../types' +import { AllowedDeclarations, BlockExpression, FunctionDeclarationExpression } from '../types' export const locationDummyNode = (line: number, column: number) => literal('Dummy', { start: { line, column }, end: { line, column } }) @@ -94,6 +94,12 @@ export const blockStatement = (body: es.Statement[]): es.BlockStatement => ({ body }) +export const program = (body: es.Statement[]): es.Program => ({ + type: 'Program', + sourceType: 'module', + body +}) + export const returnStatement = ( argument: es.Expression, loc?: es.SourceLocation @@ -170,7 +176,114 @@ export const assignmentExpression = ( right }) +export const binaryExpression = ( + operator: es.BinaryOperator, + left: es.Expression, + right: es.Expression, + loc?: es.SourceLocation +): es.BinaryExpression => ({ + type: 'BinaryExpression', + operator, + left, + right, + loc +}) + +export const unaryExpression = ( + operator: es.UnaryOperator, + argument: es.Expression, + loc?: es.SourceLocation +): es.UnaryExpression => ({ + type: 'UnaryExpression', + operator, + prefix: true, + argument, + loc +}) + // primitive: undefined is a possible value export const primitive = (value: any): es.Expression => { return value === undefined ? identifier('undefined') : literal(value) } + +export const functionDeclarationExpression = ( + id: es.Identifier, + params: es.Pattern[], + body: es.BlockStatement, + loc?: es.SourceLocation +): FunctionDeclarationExpression => ({ + type: 'FunctionExpression', + id, + params, + body, + loc +}) + +export const functionDeclaration = ( + id: es.Identifier | null, + params: es.Pattern[], + body: es.BlockStatement, + loc?: es.SourceLocation +): es.FunctionDeclaration => ({ + type: 'FunctionDeclaration', + id, + params, + body, + loc +}) + +export const blockExpression = ( + body: es.Statement[], + loc?: es.SourceLocation +): BlockExpression => ({ + type: 'BlockExpression', + body, + loc +}) + +export const arrowFunctionExpression = ( + params: es.Pattern[], + body: es.Expression | es.BlockStatement, + loc?: es.SourceLocation +): es.ArrowFunctionExpression => ({ + type: 'ArrowFunctionExpression', + expression: body.type !== 'BlockStatement', + generator: false, + params, + body, + loc +}) + +export const variableDeclaration = ( + declarations: es.VariableDeclarator[], + loc?: es.SourceLocation +): es.VariableDeclaration => ({ + type: 'VariableDeclaration', + kind: 'const', + declarations, + loc +}) + +export const variableDeclarator = ( + id: es.Pattern, + init: es.Expression, + loc?: es.SourceLocation +): es.VariableDeclarator => ({ + type: 'VariableDeclarator', + id, + init, + loc +}) + +export const ifStatement = ( + test: es.Expression, + consequent: es.BlockStatement, + alternate: es.Statement, + loc?: es.SourceLocation +): es.IfStatement => ({ + type: 'IfStatement', + test, + consequent, + alternate, + loc +}) diff --git a/src/utils/converter.ts b/src/utils/converter.ts new file mode 100644 index 000000000..65e48e5d3 --- /dev/null +++ b/src/utils/converter.ts @@ -0,0 +1,24 @@ +import * as es from 'estree' +import { mockContext } from '../mocks/context' +import { parse } from '../parser' +import { codify } from '../substituter' +import { Context, substituterNodes } from '../types' +import * as util from './substituter' +import * as builtin from './substStdLib' + +// the value in the parameter is not an ast node, but a underlying javascript value +// return by evaluateBinaryExpression and evaluateUnaryExpression. +export function valueToExpression(value: any, context?: Context): es.Expression { + const programString = (typeof value === 'string' ? `"` + value + `"` : String(value)) + ';' + const program = parse(programString, context ? context : mockContext(2))! + return (program.body[0] as es.ExpressionStatement).expression +} + +export function nodeToValue(node: substituterNodes): any { + return node.type === 'Literal' + ? node.value + : util.isBuiltinFunction(node) + ? builtin[(node as es.Identifier).name] + : // tslint:disable-next-line + eval(codify(node)) +} diff --git a/src/utils/dummyAstCreator.ts b/src/utils/dummyAstCreator.ts new file mode 100644 index 000000000..4265faaec --- /dev/null +++ b/src/utils/dummyAstCreator.ts @@ -0,0 +1,165 @@ +import * as es from 'estree' +import { BlockExpression } from '../types' + +const DUMMY_STRING = '__DUMMY__' +const DUMMY_UNARY_OPERATOR = '!' +const DUMMY_LOGICAL_OPERATOR = '||' +const DUMMY_BINARY_OPERATOR = '+' + +export const dummyLocation = (): es.SourceLocation => ({ + start: { line: -1, column: -1 }, + end: { line: -1, column: -1 } +}) + +export const dummyIdentifier = (): es.Identifier => ({ + type: 'Identifier', + name: DUMMY_STRING +}) + +export const dummyLiteral = (): es.Literal => ({ + type: 'Literal', + value: DUMMY_STRING, + loc: dummyLocation() +}) + +export const dummyExpression = (): es.Expression => dummyLiteral() as es.Expression + +export const dummyCallExpression = (): es.CallExpression => ({ + type: 'CallExpression', + callee: dummyExpression(), + arguments: [], + loc: dummyLocation() +}) + +export const dummyExpressionStatement = (): es.ExpressionStatement => ({ + type: 'ExpressionStatement', + expression: dummyExpression(), + loc: dummyLocation() +}) + +export const dummyStatement = (): es.Statement => dummyExpressionStatement() as es.Statement + +export const dummyBlockStatement = (): es.BlockStatement => ({ + type: 'BlockStatement', + body: [], + loc: dummyLocation() +}) + +export const dummyArrowFunctionExpression = (): es.ArrowFunctionExpression => ({ + type: 'ArrowFunctionExpression', + expression: false, + generator: false, + params: [], + body: dummyBlockStatement(), + loc: dummyLocation() +}) + +export const dummyProgram = (): es.Program => ({ + type: 'Program', + body: [], + loc: dummyLocation(), + sourceType: 'module' +}) + +export const dummyReturnStatement = (): es.ReturnStatement => ({ + type: 'ReturnStatement', + argument: dummyExpression(), + loc: dummyLocation() +}) + +/* +export const property = (): es.Property => ({ + type: 'Property', + method: false, + shorthand: false, + computed: false, + key: dummyIdentifier(), + value: dummyExpression(), + kind: 'init' +}) + +export const objectExpression = (properties: es.Property[]): es.ObjectExpression => ({ + type: 'ObjectExpression', + properties +}) + +export const mutateToCallExpression = ( + node: es.Node, + callee: es.Expression, + args: es.Expression[] +) => { + node.type = 'CallExpression' + node = node as es.CallExpression + node.callee = callee + node.arguments = args +} +*/ + +export const dummyLogicalExpression = (): es.LogicalExpression => ({ + type: 'LogicalExpression', + operator: DUMMY_LOGICAL_OPERATOR, + left: dummyExpression(), + right: dummyExpression(), + loc: dummyLocation() +}) + +export const dummyConditionalExpression = (): es.ConditionalExpression => ({ + type: 'ConditionalExpression', + test: dummyExpression(), + consequent: dummyExpression(), + alternate: dummyExpression(), + loc: dummyLocation() +}) + +export const dummyArrayExpression = (): es.ArrayExpression => ({ + type: 'ArrayExpression', + elements: [] +}) + +export const dummyBinaryExpression = (): es.BinaryExpression => ({ + type: 'BinaryExpression', + operator: DUMMY_BINARY_OPERATOR, + left: dummyExpression(), + right: dummyExpression(), + loc: dummyLocation() +}) + +export const dummyUnaryExpression = (): es.UnaryExpression => ({ + type: 'UnaryExpression', + operator: DUMMY_UNARY_OPERATOR, + prefix: true, + argument: dummyExpression(), + loc: dummyLocation() +}) + +// primitive: undefined is a possible value +export const dummyPrimitive = (): es.Expression => dummyLiteral() + +export const dummyFunctionExpression = (): es.FunctionExpression => ({ + type: 'FunctionExpression', + id: dummyIdentifier(), + params: [], + body: dummyBlockStatement(), + loc: dummyLocation() +}) + +export const dummyFunctionDeclaration = (): es.FunctionDeclaration => ({ + type: 'FunctionDeclaration', + id: dummyIdentifier(), + params: [], + body: dummyBlockStatement(), + loc: dummyLocation() +}) + +export const dummyBlockExpression = (): BlockExpression => ({ + type: 'BlockExpression', + body: [], + loc: dummyLocation() +}) + +export const dummyVariableDeclarator = (): es.VariableDeclarator => ({ + type: 'VariableDeclarator', + id: dummyIdentifier(), + init: dummyExpression(), + loc: dummyLocation() +}) diff --git a/src/utils/substStdLib.ts b/src/utils/substStdLib.ts new file mode 100644 index 000000000..7c3887de0 --- /dev/null +++ b/src/utils/substStdLib.ts @@ -0,0 +1,152 @@ +import * as es from 'estree' +import * as misc from '../stdlib/misc' +import { codify } from '../substituter' +import { substituterNodes } from '../types' +import * as ast from './astCreator' +import { nodeToValue, valueToExpression } from './converter' +import { isBuiltinFunction, isNumber } from './substituter' + +// define builtins that takes in AST, and return AST +// +// if (context.chapter >= 1) { +// defineBuiltin(context, 'runtime()', misc.runtime) +export function runtime(): es.Literal { + return ast.literal(misc.runtime()) +} + +// defineBuiltin(context, 'display(val)', display) +// ignore the "display" capability +export function display(val: substituterNodes): substituterNodes { + return val +} + +// defineBuiltin(context, 'raw_display(str)', rawDisplay) +// defineBuiltin(context, 'stringify(val)', stringify) +export function stringify(val: substituterNodes): es.Literal { + return ast.literal(codify(val)) +} + +// defineBuiltin(context, 'error(str)', misc.error_message) +export function error(val: substituterNodes, str?: substituterNodes) { + const output = (str === undefined ? '' : str + ' ') + stringify(val) + throw new Error(output) +} + +// defineBuiltin(context, 'prompt(str)', prompt) +export function prompt(str: substituterNodes): es.Literal { + if (str.type !== 'Literal' || typeof str.value !== 'string') { + throw new Error('Argument to error must be a string.') + } + const result = window.prompt(str.value as string) + return ast.literal((result ? result : null) as string) +} + +// defineBuiltin(context, 'is_number(val)', misc.is_number) +export function is_number(val: substituterNodes): es.Literal { + return ast.literal(isNumber(val)) +} + +// defineBuiltin(context, 'is_string(val)', misc.is_string) +export function is_string(val: substituterNodes): es.Literal { + return ast.literal(val.type === 'Literal' && misc.is_string(val.value)) +} + +// defineBuiltin(context, 'is_function(val)', misc.is_function) +export function is_function(val: substituterNodes): es.Literal { + return ast.literal(val.type.includes('Function') || isBuiltinFunction(val)) +} + +// defineBuiltin(context, 'is_boolean(val)', misc.is_boolean) +export function is_boolean(val: substituterNodes): es.Literal { + return ast.literal(val.type === 'Literal' && misc.is_boolean(val.value)) +} + +// defineBuiltin(context, 'is_undefined(val)', misc.is_undefined) +export function is_undefined(val: substituterNodes): es.Literal { + return ast.literal(val.type === 'Identifier' && val.name === 'undefined') +} + +// defineBuiltin(context, 'parse_int(str, radix)', misc.parse_int) +export function parse_int(str: substituterNodes, radix: substituterNodes): es.Expression { + if ( + str.type === 'Literal' && + typeof str.value === 'string' && + (radix.type === 'Literal' && typeof radix.value === 'number') && + Number.isInteger(radix.value) && + 2 <= radix.value && + radix.value <= 36 + ) { + return valueToExpression(parseInt(str.value, radix.value)) + } else { + throw new Error( + 'parse_int expects two arguments a string s, and a positive integer i between 2 and 36, inclusive.' + ) + } +} + +// defineBuiltin(context, 'undefined', undefined) +// defineBuiltin(context, 'NaN', NaN) +// defineBuiltin(context, 'Infinity', Infinity) +// // Define all Math libraries +// const props = Object.getOwnPropertyNames(Math) +// for (const prop of props) { +// defineBuiltin(context, 'math_' + prop, Math[prop]) +// } +// } +// evaluateMath(mathFn: string, ...args: substituterNodes): substituterNodes +export function evaluateMath(mathFn: string, ...args: substituterNodes[]): es.Expression { + const fn = Math[mathFn.split('_')[1]] + if (!fn) { + throw new Error(`Math function ${mathFn} not found.`) + } else if (args.some(arg => !isNumber(arg))) { + throw new Error(`Math functions must be called with number arguments`) + } + const jsArgs = args.map(nodeToValue) + return valueToExpression(fn(...jsArgs)) +} + +// if (context.chapter >= 2) { +// // List library +// defineBuiltin(context, 'pair(left, right)', list.pair) +export function pair(left: substituterNodes, right: substituterNodes): es.ArrayExpression { + return ast.arrayExpression([left as es.Expression, right as es.Expression]) +} + +// defineBuiltin(context, 'is_pair(val)', list.is_pair) +export function is_pair(val: substituterNodes): es.Literal { + return ast.literal(val.type === 'ArrayExpression' && val.elements.length === 2) +} + +// defineBuiltin(context, 'head(xs)', list.head) +export function head(xs: substituterNodes): es.Expression { + if (is_pair(xs).value === false) { + throw new Error(`${codify(xs)} is not a pair`) + } + return (xs as es.ArrayExpression).elements[0] as es.Expression +} + +// defineBuiltin(context, 'tail(xs)', list.tail) +export function tail(xs: substituterNodes): es.Expression { + if (is_pair(xs).value === false) { + throw new Error(`${codify(xs)} is not a pair`) + } + return (xs as es.ArrayExpression).elements[1] as es.Expression +} + +// defineBuiltin(context, 'is_null(val)', list.is_null) +export function is_null(val: substituterNodes): es.Literal { + return ast.literal(val.type === 'Literal' && val.value === null) +} + +// defineBuiltin(context, 'list(...values)', list.list) +export function list(...values: substituterNodes[]): es.ArrayExpression { + let ret: es.Expression = ast.primitive(null) + for (const v of values.reverse()) { + ret = pair(v, ret) + } + return ret as es.ArrayExpression +} +// defineBuiltin(context, 'draw_data(xs)', visualiseList) +export function draw_data(xs: substituterNodes): es.Identifier { + return ast.primitive(undefined) as es.Identifier +} diff --git a/src/utils/substituter.ts b/src/utils/substituter.ts new file mode 100644 index 000000000..5759a51aa --- /dev/null +++ b/src/utils/substituter.ts @@ -0,0 +1,39 @@ +import { substituterNodes } from '../types' +import * as builtin from './substStdLib' + +export function isBuiltinFunction(node: substituterNodes): boolean { + return ( + node.type === 'Identifier' && + // predeclared, except for evaluateMath + ((typeof builtin[node.name] === 'function' && node.name !== 'evaluateMath') || + // one of the math functions + Object.getOwnPropertyNames(Math) + .filter(name => typeof Math[name] === 'function') + .map(name => 'math_' + name) + .includes(node.name)) + ) +} + +export function isInfinity(node: substituterNodes): boolean { + return node.type === 'Identifier' && node.name === 'Infinity' +} + +export function isPositiveNumber(node: substituterNodes): boolean { + return node.type === 'Literal' && typeof node.value === 'number' +} + +export function isNegNumber(node: substituterNodes): boolean { + return ( + node.type === 'UnaryExpression' && + node.operator === '-' && + (isInfinity(node.argument) || isPositiveNumber(node.argument)) + ) +} + +export function isNumber(node: substituterNodes): boolean { + return isPositiveNumber(node) || isNegNumber(node) +} + +export function isAllowedLiterals(node: substituterNodes): boolean { + return node.type === 'Identifier' && ['NaN', 'Infinity', 'undefined'].includes(node.name) +}