{
  "type": "File",
  "start": 0,
  "end": 5782,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 227,
      "column": 0
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 5782,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 227,
        "column": 0
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 0,
        "end": 28,
        "loc": {
          "start": {
            "line": 1,
            "column": 0
          },
          "end": {
            "line": 1,
            "column": 28
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 7,
            "end": 13,
            "loc": {
              "start": {
                "line": 1,
                "column": 7
              },
              "end": {
                "line": 1,
                "column": 13
              }
            },
            "local": {
              "type": "Identifier",
              "start": 7,
              "end": 13,
              "loc": {
                "start": {
                  "line": 1,
                  "column": 7
                },
                "end": {
                  "line": 1,
                  "column": 13
                },
                "identifierName": "assert"
              },
              "name": "assert"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 19,
          "end": 27,
          "loc": {
            "start": {
              "line": 1,
              "column": 19
            },
            "end": {
              "line": 1,
              "column": 27
            }
          },
          "extra": {
            "rawValue": "assert",
            "raw": "\"assert\""
          },
          "value": "assert"
        },
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa",
            "start": 29,
            "end": 106,
            "loc": {
              "start": {
                "line": 1,
                "column": 29
              },
              "end": {
                "line": 1,
                "column": 106
              }
            }
          }
        ]
      },
      {
        "type": "ImportDeclaration",
        "start": 107,
        "end": 149,
        "loc": {
          "start": {
            "line": 2,
            "column": 0
          },
          "end": {
            "line": 2,
            "column": 42
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 115,
            "end": 121,
            "loc": {
              "start": {
                "line": 2,
                "column": 8
              },
              "end": {
                "line": 2,
                "column": 14
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 115,
              "end": 121,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 8
                },
                "end": {
                  "line": 2,
                  "column": 14
                },
                "identifierName": "sha256"
              },
              "name": "sha256",
              "leadingComments": null
            },
            "local": {
              "type": "Identifier",
              "start": 115,
              "end": 121,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 8
                },
                "end": {
                  "line": 2,
                  "column": 14
                },
                "identifierName": "sha256"
              },
              "name": "sha256"
            },
            "leadingComments": null
          },
          {
            "type": "ImportSpecifier",
            "start": 123,
            "end": 133,
            "loc": {
              "start": {
                "line": 2,
                "column": 16
              },
              "end": {
                "line": 2,
                "column": 26
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 123,
              "end": 133,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 16
                },
                "end": {
                  "line": 2,
                  "column": 26
                },
                "identifierName": "HmacSHA256"
              },
              "name": "HmacSHA256"
            },
            "local": {
              "type": "Identifier",
              "start": 123,
              "end": 133,
              "loc": {
                "start": {
                  "line": 2,
                  "column": 16
                },
                "end": {
                  "line": 2,
                  "column": 26
                },
                "identifierName": "HmacSHA256"
              },
              "name": "HmacSHA256"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 140,
          "end": 148,
          "loc": {
            "start": {
              "line": 2,
              "column": 33
            },
            "end": {
              "line": 2,
              "column": 41
            }
          },
          "extra": {
            "rawValue": "./hash",
            "raw": "\"./hash\""
          },
          "value": "./hash"
        },
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": " from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa",
            "start": 29,
            "end": 106,
            "loc": {
              "start": {
                "line": 1,
                "column": 29
              },
              "end": {
                "line": 1,
                "column": 106
              }
            }
          }
        ]
      },
      {
        "type": "ImportDeclaration",
        "start": 150,
        "end": 192,
        "loc": {
          "start": {
            "line": 3,
            "column": 0
          },
          "end": {
            "line": 3,
            "column": 42
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 157,
            "end": 168,
            "loc": {
              "start": {
                "line": 3,
                "column": 7
              },
              "end": {
                "line": 3,
                "column": 18
              }
            },
            "local": {
              "type": "Identifier",
              "start": 157,
              "end": 168,
              "loc": {
                "start": {
                  "line": 3,
                  "column": 7
                },
                "end": {
                  "line": 3,
                  "column": 18
                },
                "identifierName": "enforceType"
              },
              "name": "enforceType"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 174,
          "end": 191,
          "loc": {
            "start": {
              "line": 3,
              "column": 24
            },
            "end": {
              "line": 3,
              "column": 41
            }
          },
          "extra": {
            "rawValue": "./enforce_types",
            "raw": "\"./enforce_types\""
          },
          "value": "./enforce_types"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 194,
        "end": 224,
        "loc": {
          "start": {
            "line": 5,
            "column": 0
          },
          "end": {
            "line": 5,
            "column": 30
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 201,
            "end": 211,
            "loc": {
              "start": {
                "line": 5,
                "column": 7
              },
              "end": {
                "line": 5,
                "column": 17
              }
            },
            "local": {
              "type": "Identifier",
              "start": 201,
              "end": 211,
              "loc": {
                "start": {
                  "line": 5,
                  "column": 7
                },
                "end": {
                  "line": 5,
                  "column": 17
                },
                "identifierName": "BigInteger"
              },
              "name": "BigInteger"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 217,
          "end": 223,
          "loc": {
            "start": {
              "line": 5,
              "column": 23
            },
            "end": {
              "line": 5,
              "column": 29
            }
          },
          "extra": {
            "rawValue": "bigi",
            "raw": "\"bigi\""
          },
          "value": "bigi"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 225,
        "end": 265,
        "loc": {
          "start": {
            "line": 6,
            "column": 0
          },
          "end": {
            "line": 6,
            "column": 40
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 232,
            "end": 243,
            "loc": {
              "start": {
                "line": 6,
                "column": 7
              },
              "end": {
                "line": 6,
                "column": 18
              }
            },
            "local": {
              "type": "Identifier",
              "start": 232,
              "end": 243,
              "loc": {
                "start": {
                  "line": 6,
                  "column": 7
                },
                "end": {
                  "line": 6,
                  "column": 18
                },
                "identifierName": "ECSignature"
              },
              "name": "ECSignature"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 249,
          "end": 264,
          "loc": {
            "start": {
              "line": 6,
              "column": 24
            },
            "end": {
              "line": 6,
              "column": 39
            }
          },
          "extra": {
            "rawValue": "./ecsignature",
            "raw": "\"./ecsignature\""
          },
          "value": "./ecsignature"
        }
      },
      {
        "type": "VariableDeclaration",
        "start": 266,
        "end": 311,
        "loc": {
          "start": {
            "line": 7,
            "column": 0
          },
          "end": {
            "line": 7,
            "column": 45
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 272,
            "end": 310,
            "loc": {
              "start": {
                "line": 7,
                "column": 6
              },
              "end": {
                "line": 7,
                "column": 44
              }
            },
            "id": {
              "type": "Identifier",
              "start": 272,
              "end": 278,
              "loc": {
                "start": {
                  "line": 7,
                  "column": 6
                },
                "end": {
                  "line": 7,
                  "column": 12
                },
                "identifierName": "Buffer"
              },
              "name": "Buffer"
            },
            "init": {
              "type": "MemberExpression",
              "start": 281,
              "end": 310,
              "loc": {
                "start": {
                  "line": 7,
                  "column": 15
                },
                "end": {
                  "line": 7,
                  "column": 44
                }
              },
              "object": {
                "type": "CallExpression",
                "start": 281,
                "end": 303,
                "loc": {
                  "start": {
                    "line": 7,
                    "column": 15
                  },
                  "end": {
                    "line": 7,
                    "column": 37
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 281,
                  "end": 288,
                  "loc": {
                    "start": {
                      "line": 7,
                      "column": 15
                    },
                    "end": {
                      "line": 7,
                      "column": 22
                    },
                    "identifierName": "require"
                  },
                  "name": "require"
                },
                "arguments": [
                  {
                    "type": "StringLiteral",
                    "start": 289,
                    "end": 302,
                    "loc": {
                      "start": {
                        "line": 7,
                        "column": 23
                      },
                      "end": {
                        "line": 7,
                        "column": 36
                      }
                    },
                    "extra": {
                      "rawValue": "safe-buffer",
                      "raw": "\"safe-buffer\""
                    },
                    "value": "safe-buffer"
                  }
                ]
              },
              "property": {
                "type": "Identifier",
                "start": 304,
                "end": 310,
                "loc": {
                  "start": {
                    "line": 7,
                    "column": 38
                  },
                  "end": {
                    "line": 7,
                    "column": 44
                  },
                  "identifierName": "Buffer"
                },
                "name": "Buffer"
              },
              "computed": false
            }
          }
        ],
        "kind": "const",
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " https://tools.ietf.org/html/rfc6979#section-3.2",
            "start": 313,
            "end": 363,
            "loc": {
              "start": {
                "line": 9,
                "column": 0
              },
              "end": {
                "line": 9,
                "column": 50
              }
            }
          }
        ]
      },
      {
        "type": "Identifier",
        "start": 364,
        "end": 1622,
        "loc": {
          "start": {
            "line": 10,
            "column": 0
          },
          "end": {
            "line": 62,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 373,
          "end": 395,
          "loc": {
            "start": {
              "line": 10,
              "column": 9
            },
            "end": {
              "line": 10,
              "column": 31
            },
            "identifierName": "deterministicGenerateK"
          },
          "name": "deterministicGenerateK",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 396,
            "end": 401,
            "loc": {
              "start": {
                "line": 10,
                "column": 32
              },
              "end": {
                "line": 10,
                "column": 37
              },
              "identifierName": "curve"
            },
            "name": "curve"
          },
          {
            "type": "Identifier",
            "start": 403,
            "end": 407,
            "loc": {
              "start": {
                "line": 10,
                "column": 39
              },
              "end": {
                "line": 10,
                "column": 43
              },
              "identifierName": "hash"
            },
            "name": "hash"
          },
          {
            "type": "Identifier",
            "start": 409,
            "end": 410,
            "loc": {
              "start": {
                "line": 10,
                "column": 45
              },
              "end": {
                "line": 10,
                "column": 46
              },
              "identifierName": "d"
            },
            "name": "d"
          },
          {
            "type": "Identifier",
            "start": 412,
            "end": 420,
            "loc": {
              "start": {
                "line": 10,
                "column": 48
              },
              "end": {
                "line": 10,
                "column": 56
              },
              "identifierName": "checkSig"
            },
            "name": "checkSig"
          },
          {
            "type": "Identifier",
            "start": 422,
            "end": 427,
            "loc": {
              "start": {
                "line": 10,
                "column": 58
              },
              "end": {
                "line": 10,
                "column": 63
              },
              "identifierName": "nonce"
            },
            "name": "nonce"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 429,
          "end": 1622,
          "loc": {
            "start": {
              "line": 10,
              "column": 65
            },
            "end": {
              "line": 62,
              "column": 1
            }
          },
          "body": [
            {
              "type": "ExpressionStatement",
              "start": 435,
              "end": 463,
              "loc": {
                "start": {
                  "line": 11,
                  "column": 4
                },
                "end": {
                  "line": 11,
                  "column": 32
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 435,
                "end": 462,
                "loc": {
                  "start": {
                    "line": 11,
                    "column": 4
                  },
                  "end": {
                    "line": 11,
                    "column": 31
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 435,
                  "end": 446,
                  "loc": {
                    "start": {
                      "line": 11,
                      "column": 4
                    },
                    "end": {
                      "line": 11,
                      "column": 15
                    },
                    "identifierName": "enforceType"
                  },
                  "name": "enforceType"
                },
                "arguments": [
                  {
                    "type": "StringLiteral",
                    "start": 447,
                    "end": 455,
                    "loc": {
                      "start": {
                        "line": 11,
                        "column": 16
                      },
                      "end": {
                        "line": 11,
                        "column": 24
                      }
                    },
                    "extra": {
                      "rawValue": "Buffer",
                      "raw": "\"Buffer\""
                    },
                    "value": "Buffer"
                  },
                  {
                    "type": "Identifier",
                    "start": 457,
                    "end": 461,
                    "loc": {
                      "start": {
                        "line": 11,
                        "column": 26
                      },
                      "end": {
                        "line": 11,
                        "column": 30
                      },
                      "identifierName": "hash"
                    },
                    "name": "hash"
                  }
                ]
              }
            },
            {
              "type": "ExpressionStatement",
              "start": 468,
              "end": 495,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 4
                },
                "end": {
                  "line": 12,
                  "column": 31
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 468,
                "end": 494,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 4
                  },
                  "end": {
                    "line": 12,
                    "column": 30
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 468,
                  "end": 479,
                  "loc": {
                    "start": {
                      "line": 12,
                      "column": 4
                    },
                    "end": {
                      "line": 12,
                      "column": 15
                    },
                    "identifierName": "enforceType"
                  },
                  "name": "enforceType"
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 480,
                    "end": 490,
                    "loc": {
                      "start": {
                        "line": 12,
                        "column": 16
                      },
                      "end": {
                        "line": 12,
                        "column": 26
                      },
                      "identifierName": "BigInteger"
                    },
                    "name": "BigInteger"
                  },
                  {
                    "type": "Identifier",
                    "start": 492,
                    "end": 493,
                    "loc": {
                      "start": {
                        "line": 12,
                        "column": 28
                      },
                      "end": {
                        "line": 12,
                        "column": 29
                      },
                      "identifierName": "d"
                    },
                    "name": "d"
                  }
                ]
              }
            },
            {
              "type": "IfStatement",
              "start": 501,
              "end": 586,
              "loc": {
                "start": {
                  "line": 14,
                  "column": 4
                },
                "end": {
                  "line": 16,
                  "column": 5
                }
              },
              "test": {
                "type": "Identifier",
                "start": 505,
                "end": 510,
                "loc": {
                  "start": {
                    "line": 14,
                    "column": 8
                  },
                  "end": {
                    "line": 14,
                    "column": 13
                  },
                  "identifierName": "nonce"
                },
                "name": "nonce"
              },
              "consequent": {
                "type": "BlockStatement",
                "start": 512,
                "end": 586,
                "loc": {
                  "start": {
                    "line": 14,
                    "column": 15
                  },
                  "end": {
                    "line": 16,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 522,
                    "end": 580,
                    "loc": {
                      "start": {
                        "line": 15,
                        "column": 8
                      },
                      "end": {
                        "line": 15,
                        "column": 66
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 522,
                      "end": 579,
                      "loc": {
                        "start": {
                          "line": 15,
                          "column": 8
                        },
                        "end": {
                          "line": 15,
                          "column": 65
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 522,
                        "end": 526,
                        "loc": {
                          "start": {
                            "line": 15,
                            "column": 8
                          },
                          "end": {
                            "line": 15,
                            "column": 12
                          },
                          "identifierName": "hash"
                        },
                        "name": "hash"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 529,
                        "end": 579,
                        "loc": {
                          "start": {
                            "line": 15,
                            "column": 15
                          },
                          "end": {
                            "line": 15,
                            "column": 65
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 529,
                          "end": 535,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 15
                            },
                            "end": {
                              "line": 15,
                              "column": 21
                            },
                            "identifierName": "sha256"
                          },
                          "name": "sha256"
                        },
                        "arguments": [
                          {
                            "type": "CallExpression",
                            "start": 536,
                            "end": 578,
                            "loc": {
                              "start": {
                                "line": 15,
                                "column": 22
                              },
                              "end": {
                                "line": 15,
                                "column": 64
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 536,
                              "end": 549,
                              "loc": {
                                "start": {
                                  "line": 15,
                                  "column": 22
                                },
                                "end": {
                                  "line": 15,
                                  "column": 35
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 536,
                                "end": 542,
                                "loc": {
                                  "start": {
                                    "line": 15,
                                    "column": 22
                                  },
                                  "end": {
                                    "line": 15,
                                    "column": 28
                                  },
                                  "identifierName": "Buffer"
                                },
                                "name": "Buffer"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 543,
                                "end": 549,
                                "loc": {
                                  "start": {
                                    "line": 15,
                                    "column": 29
                                  },
                                  "end": {
                                    "line": 15,
                                    "column": 35
                                  },
                                  "identifierName": "concat"
                                },
                                "name": "concat"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "ArrayExpression",
                                "start": 550,
                                "end": 577,
                                "loc": {
                                  "start": {
                                    "line": 15,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 15,
                                    "column": 63
                                  }
                                },
                                "elements": [
                                  {
                                    "type": "Identifier",
                                    "start": 551,
                                    "end": 555,
                                    "loc": {
                                      "start": {
                                        "line": 15,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 15,
                                        "column": 41
                                      },
                                      "identifierName": "hash"
                                    },
                                    "name": "hash"
                                  },
                                  {
                                    "type": "CallExpression",
                                    "start": 557,
                                    "end": 576,
                                    "loc": {
                                      "start": {
                                        "line": 15,
                                        "column": 43
                                      },
                                      "end": {
                                        "line": 15,
                                        "column": 62
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 557,
                                      "end": 569,
                                      "loc": {
                                        "start": {
                                          "line": 15,
                                          "column": 43
                                        },
                                        "end": {
                                          "line": 15,
                                          "column": 55
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 557,
                                        "end": 563,
                                        "loc": {
                                          "start": {
                                            "line": 15,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 15,
                                            "column": 49
                                          },
                                          "identifierName": "Buffer"
                                        },
                                        "name": "Buffer"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 564,
                                        "end": 569,
                                        "loc": {
                                          "start": {
                                            "line": 15,
                                            "column": 50
                                          },
                                          "end": {
                                            "line": 15,
                                            "column": 55
                                          },
                                          "identifierName": "alloc"
                                        },
                                        "name": "alloc"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "Identifier",
                                        "start": 570,
                                        "end": 575,
                                        "loc": {
                                          "start": {
                                            "line": 15,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 15,
                                            "column": 61
                                          },
                                          "identifierName": "nonce"
                                        },
                                        "name": "nonce"
                                      }
                                    ]
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    }
                  }
                ],
                "directives": [],
                "trailingComments": null
              },
              "alternate": null,
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " sanity check",
                  "start": 592,
                  "end": 607,
                  "loc": {
                    "start": {
                      "line": 18,
                      "column": 4
                    },
                    "end": {
                      "line": 18,
                      "column": 19
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 612,
              "end": 666,
              "loc": {
                "start": {
                  "line": 19,
                  "column": 4
                },
                "end": {
                  "line": 19,
                  "column": 58
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 612,
                "end": 665,
                "loc": {
                  "start": {
                    "line": 19,
                    "column": 4
                  },
                  "end": {
                    "line": 19,
                    "column": 57
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 612,
                  "end": 624,
                  "loc": {
                    "start": {
                      "line": 19,
                      "column": 4
                    },
                    "end": {
                      "line": 19,
                      "column": 16
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 612,
                    "end": 618,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 4
                      },
                      "end": {
                        "line": 19,
                        "column": 10
                      },
                      "identifierName": "assert"
                    },
                    "name": "assert",
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 619,
                    "end": 624,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 11
                      },
                      "end": {
                        "line": 19,
                        "column": 16
                      },
                      "identifierName": "equal"
                    },
                    "name": "equal"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "MemberExpression",
                    "start": 625,
                    "end": 636,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 17
                      },
                      "end": {
                        "line": 19,
                        "column": 28
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 625,
                      "end": 629,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 17
                        },
                        "end": {
                          "line": 19,
                          "column": 21
                        },
                        "identifierName": "hash"
                      },
                      "name": "hash"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 630,
                      "end": 636,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 22
                        },
                        "end": {
                          "line": 19,
                          "column": 28
                        },
                        "identifierName": "length"
                      },
                      "name": "length"
                    },
                    "computed": false
                  },
                  {
                    "type": "NumericLiteral",
                    "start": 638,
                    "end": 640,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 30
                      },
                      "end": {
                        "line": 19,
                        "column": 32
                      }
                    },
                    "extra": {
                      "rawValue": 32,
                      "raw": "32"
                    },
                    "value": 32
                  },
                  {
                    "type": "StringLiteral",
                    "start": 642,
                    "end": 664,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 34
                      },
                      "end": {
                        "line": 19,
                        "column": 56
                      }
                    },
                    "extra": {
                      "rawValue": "Hash must be 256 bit",
                      "raw": "\"Hash must be 256 bit\""
                    },
                    "value": "Hash must be 256 bit"
                  }
                ],
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " sanity check",
                  "start": 592,
                  "end": 607,
                  "loc": {
                    "start": {
                      "line": 18,
                      "column": 4
                    },
                    "end": {
                      "line": 18,
                      "column": 19
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 672,
              "end": 695,
              "loc": {
                "start": {
                  "line": 21,
                  "column": 4
                },
                "end": {
                  "line": 21,
                  "column": 27
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 676,
                  "end": 694,
                  "loc": {
                    "start": {
                      "line": 21,
                      "column": 8
                    },
                    "end": {
                      "line": 21,
                      "column": 26
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 676,
                    "end": 677,
                    "loc": {
                      "start": {
                        "line": 21,
                        "column": 8
                      },
                      "end": {
                        "line": 21,
                        "column": 9
                      },
                      "identifierName": "x"
                    },
                    "name": "x"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 680,
                    "end": 694,
                    "loc": {
                      "start": {
                        "line": 21,
                        "column": 12
                      },
                      "end": {
                        "line": 21,
                        "column": 26
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 680,
                      "end": 690,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 12
                        },
                        "end": {
                          "line": 21,
                          "column": 22
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 680,
                        "end": 681,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 12
                          },
                          "end": {
                            "line": 21,
                            "column": 13
                          },
                          "identifierName": "d"
                        },
                        "name": "d"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 682,
                        "end": 690,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 14
                          },
                          "end": {
                            "line": 21,
                            "column": 22
                          },
                          "identifierName": "toBuffer"
                        },
                        "name": "toBuffer"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "NumericLiteral",
                        "start": 691,
                        "end": 693,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 23
                          },
                          "end": {
                            "line": 21,
                            "column": 25
                          }
                        },
                        "extra": {
                          "rawValue": 32,
                          "raw": "32"
                        },
                        "value": 32
                      }
                    ]
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 700,
              "end": 725,
              "loc": {
                "start": {
                  "line": 22,
                  "column": 4
                },
                "end": {
                  "line": 22,
                  "column": 29
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 704,
                  "end": 724,
                  "loc": {
                    "start": {
                      "line": 22,
                      "column": 8
                    },
                    "end": {
                      "line": 22,
                      "column": 28
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 704,
                    "end": 705,
                    "loc": {
                      "start": {
                        "line": 22,
                        "column": 8
                      },
                      "end": {
                        "line": 22,
                        "column": 9
                      },
                      "identifierName": "k"
                    },
                    "name": "k"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 708,
                    "end": 724,
                    "loc": {
                      "start": {
                        "line": 22,
                        "column": 12
                      },
                      "end": {
                        "line": 22,
                        "column": 28
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 708,
                      "end": 720,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 12
                        },
                        "end": {
                          "line": 22,
                          "column": 24
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 708,
                        "end": 714,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 12
                          },
                          "end": {
                            "line": 22,
                            "column": 18
                          },
                          "identifierName": "Buffer"
                        },
                        "name": "Buffer"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 715,
                        "end": 720,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 19
                          },
                          "end": {
                            "line": 22,
                            "column": 24
                          },
                          "identifierName": "alloc"
                        },
                        "name": "alloc"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "NumericLiteral",
                        "start": 721,
                        "end": 723,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 25
                          },
                          "end": {
                            "line": 22,
                            "column": 27
                          }
                        },
                        "extra": {
                          "rawValue": 32,
                          "raw": "32"
                        },
                        "value": 32
                      }
                    ]
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 730,
              "end": 755,
              "loc": {
                "start": {
                  "line": 23,
                  "column": 4
                },
                "end": {
                  "line": 23,
                  "column": 29
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 734,
                  "end": 754,
                  "loc": {
                    "start": {
                      "line": 23,
                      "column": 8
                    },
                    "end": {
                      "line": 23,
                      "column": 28
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 734,
                    "end": 735,
                    "loc": {
                      "start": {
                        "line": 23,
                        "column": 8
                      },
                      "end": {
                        "line": 23,
                        "column": 9
                      },
                      "identifierName": "v"
                    },
                    "name": "v"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 738,
                    "end": 754,
                    "loc": {
                      "start": {
                        "line": 23,
                        "column": 12
                      },
                      "end": {
                        "line": 23,
                        "column": 28
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 738,
                      "end": 750,
                      "loc": {
                        "start": {
                          "line": 23,
                          "column": 12
                        },
                        "end": {
                          "line": 23,
                          "column": 24
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 738,
                        "end": 744,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 12
                          },
                          "end": {
                            "line": 23,
                            "column": 18
                          },
                          "identifierName": "Buffer"
                        },
                        "name": "Buffer"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 745,
                        "end": 750,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 19
                          },
                          "end": {
                            "line": 23,
                            "column": 24
                          },
                          "identifierName": "alloc"
                        },
                        "name": "alloc"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "NumericLiteral",
                        "start": 751,
                        "end": 753,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 25
                          },
                          "end": {
                            "line": 23,
                            "column": 27
                          }
                        },
                        "extra": {
                          "rawValue": 32,
                          "raw": "32"
                        },
                        "value": 32
                      }
                    ]
                  }
                }
              ],
              "kind": "var",
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step B",
                  "start": 761,
                  "end": 770,
                  "loc": {
                    "start": {
                      "line": 25,
                      "column": 4
                    },
                    "end": {
                      "line": 25,
                      "column": 13
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 775,
              "end": 785,
              "loc": {
                "start": {
                  "line": 26,
                  "column": 4
                },
                "end": {
                  "line": 26,
                  "column": 14
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 775,
                "end": 784,
                "loc": {
                  "start": {
                    "line": 26,
                    "column": 4
                  },
                  "end": {
                    "line": 26,
                    "column": 13
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 775,
                  "end": 781,
                  "loc": {
                    "start": {
                      "line": 26,
                      "column": 4
                    },
                    "end": {
                      "line": 26,
                      "column": 10
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 775,
                    "end": 776,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 4
                      },
                      "end": {
                        "line": 26,
                        "column": 5
                      },
                      "identifierName": "v"
                    },
                    "name": "v",
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 777,
                    "end": 781,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 6
                      },
                      "end": {
                        "line": 26,
                        "column": 10
                      },
                      "identifierName": "fill"
                    },
                    "name": "fill"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "NumericLiteral",
                    "start": 782,
                    "end": 783,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 11
                      },
                      "end": {
                        "line": 26,
                        "column": 12
                      }
                    },
                    "extra": {
                      "rawValue": 1,
                      "raw": "1"
                    },
                    "value": 1
                  }
                ],
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step B",
                  "start": 761,
                  "end": 770,
                  "loc": {
                    "start": {
                      "line": 25,
                      "column": 4
                    },
                    "end": {
                      "line": 25,
                      "column": 13
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step C",
                  "start": 791,
                  "end": 800,
                  "loc": {
                    "start": {
                      "line": 28,
                      "column": 4
                    },
                    "end": {
                      "line": 28,
                      "column": 13
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 805,
              "end": 815,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 4
                },
                "end": {
                  "line": 29,
                  "column": 14
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 805,
                "end": 814,
                "loc": {
                  "start": {
                    "line": 29,
                    "column": 4
                  },
                  "end": {
                    "line": 29,
                    "column": 13
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 805,
                  "end": 811,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 4
                    },
                    "end": {
                      "line": 29,
                      "column": 10
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 805,
                    "end": 806,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 4
                      },
                      "end": {
                        "line": 29,
                        "column": 5
                      },
                      "identifierName": "k"
                    },
                    "name": "k",
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 807,
                    "end": 811,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 6
                      },
                      "end": {
                        "line": 29,
                        "column": 10
                      },
                      "identifierName": "fill"
                    },
                    "name": "fill"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "NumericLiteral",
                    "start": 812,
                    "end": 813,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 11
                      },
                      "end": {
                        "line": 29,
                        "column": 12
                      }
                    },
                    "extra": {
                      "rawValue": 0,
                      "raw": "0"
                    },
                    "value": 0
                  }
                ],
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step C",
                  "start": 791,
                  "end": 800,
                  "loc": {
                    "start": {
                      "line": 28,
                      "column": 4
                    },
                    "end": {
                      "line": 28,
                      "column": 13
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step D",
                  "start": 821,
                  "end": 830,
                  "loc": {
                    "start": {
                      "line": 31,
                      "column": 4
                    },
                    "end": {
                      "line": 31,
                      "column": 13
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 835,
              "end": 899,
              "loc": {
                "start": {
                  "line": 32,
                  "column": 4
                },
                "end": {
                  "line": 32,
                  "column": 68
                }
              },
              "expression": {
                "type": "AssignmentExpression",
                "start": 835,
                "end": 898,
                "loc": {
                  "start": {
                    "line": 32,
                    "column": 4
                  },
                  "end": {
                    "line": 32,
                    "column": 67
                  }
                },
                "operator": "=",
                "left": {
                  "type": "Identifier",
                  "start": 835,
                  "end": 836,
                  "loc": {
                    "start": {
                      "line": 32,
                      "column": 4
                    },
                    "end": {
                      "line": 32,
                      "column": 5
                    },
                    "identifierName": "k"
                  },
                  "name": "k",
                  "leadingComments": null
                },
                "right": {
                  "type": "CallExpression",
                  "start": 839,
                  "end": 898,
                  "loc": {
                    "start": {
                      "line": 32,
                      "column": 8
                    },
                    "end": {
                      "line": 32,
                      "column": 67
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 839,
                    "end": 849,
                    "loc": {
                      "start": {
                        "line": 32,
                        "column": 8
                      },
                      "end": {
                        "line": 32,
                        "column": 18
                      },
                      "identifierName": "HmacSHA256"
                    },
                    "name": "HmacSHA256"
                  },
                  "arguments": [
                    {
                      "type": "CallExpression",
                      "start": 850,
                      "end": 894,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 19
                        },
                        "end": {
                          "line": 32,
                          "column": 63
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 850,
                        "end": 863,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 19
                          },
                          "end": {
                            "line": 32,
                            "column": 32
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 850,
                          "end": 856,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 19
                            },
                            "end": {
                              "line": 32,
                              "column": 25
                            },
                            "identifierName": "Buffer"
                          },
                          "name": "Buffer"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 857,
                          "end": 863,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 26
                            },
                            "end": {
                              "line": 32,
                              "column": 32
                            },
                            "identifierName": "concat"
                          },
                          "name": "concat"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "ArrayExpression",
                          "start": 864,
                          "end": 893,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 33
                            },
                            "end": {
                              "line": 32,
                              "column": 62
                            }
                          },
                          "elements": [
                            {
                              "type": "Identifier",
                              "start": 865,
                              "end": 866,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 34
                                },
                                "end": {
                                  "line": 32,
                                  "column": 35
                                },
                                "identifierName": "v"
                              },
                              "name": "v"
                            },
                            {
                              "type": "NewExpression",
                              "start": 868,
                              "end": 883,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 37
                                },
                                "end": {
                                  "line": 32,
                                  "column": 52
                                }
                              },
                              "callee": {
                                "type": "Identifier",
                                "start": 872,
                                "end": 878,
                                "loc": {
                                  "start": {
                                    "line": 32,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 32,
                                    "column": 47
                                  },
                                  "identifierName": "Buffer"
                                },
                                "name": "Buffer"
                              },
                              "arguments": [
                                {
                                  "type": "ArrayExpression",
                                  "start": 879,
                                  "end": 882,
                                  "loc": {
                                    "start": {
                                      "line": 32,
                                      "column": 48
                                    },
                                    "end": {
                                      "line": 32,
                                      "column": 51
                                    }
                                  },
                                  "elements": [
                                    {
                                      "type": "NumericLiteral",
                                      "start": 880,
                                      "end": 881,
                                      "loc": {
                                        "start": {
                                          "line": 32,
                                          "column": 49
                                        },
                                        "end": {
                                          "line": 32,
                                          "column": 50
                                        }
                                      },
                                      "extra": {
                                        "rawValue": 0,
                                        "raw": "0"
                                      },
                                      "value": 0
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "Identifier",
                              "start": 885,
                              "end": 886,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 54
                                },
                                "end": {
                                  "line": 32,
                                  "column": 55
                                },
                                "identifierName": "x"
                              },
                              "name": "x"
                            },
                            {
                              "type": "Identifier",
                              "start": 888,
                              "end": 892,
                              "loc": {
                                "start": {
                                  "line": 32,
                                  "column": 57
                                },
                                "end": {
                                  "line": 32,
                                  "column": 61
                                },
                                "identifierName": "hash"
                              },
                              "name": "hash"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "Identifier",
                      "start": 896,
                      "end": 897,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 65
                        },
                        "end": {
                          "line": 32,
                          "column": 66
                        },
                        "identifierName": "k"
                      },
                      "name": "k"
                    }
                  ]
                },
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step D",
                  "start": 821,
                  "end": 830,
                  "loc": {
                    "start": {
                      "line": 31,
                      "column": 4
                    },
                    "end": {
                      "line": 31,
                      "column": 13
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step E",
                  "start": 905,
                  "end": 914,
                  "loc": {
                    "start": {
                      "line": 34,
                      "column": 4
                    },
                    "end": {
                      "line": 34,
                      "column": 13
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 919,
              "end": 940,
              "loc": {
                "start": {
                  "line": 35,
                  "column": 4
                },
                "end": {
                  "line": 35,
                  "column": 25
                }
              },
              "expression": {
                "type": "AssignmentExpression",
                "start": 919,
                "end": 939,
                "loc": {
                  "start": {
                    "line": 35,
                    "column": 4
                  },
                  "end": {
                    "line": 35,
                    "column": 24
                  }
                },
                "operator": "=",
                "left": {
                  "type": "Identifier",
                  "start": 919,
                  "end": 920,
                  "loc": {
                    "start": {
                      "line": 35,
                      "column": 4
                    },
                    "end": {
                      "line": 35,
                      "column": 5
                    },
                    "identifierName": "v"
                  },
                  "name": "v",
                  "leadingComments": null
                },
                "right": {
                  "type": "CallExpression",
                  "start": 923,
                  "end": 939,
                  "loc": {
                    "start": {
                      "line": 35,
                      "column": 8
                    },
                    "end": {
                      "line": 35,
                      "column": 24
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 923,
                    "end": 933,
                    "loc": {
                      "start": {
                        "line": 35,
                        "column": 8
                      },
                      "end": {
                        "line": 35,
                        "column": 18
                      },
                      "identifierName": "HmacSHA256"
                    },
                    "name": "HmacSHA256"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 934,
                      "end": 935,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 19
                        },
                        "end": {
                          "line": 35,
                          "column": 20
                        },
                        "identifierName": "v"
                      },
                      "name": "v"
                    },
                    {
                      "type": "Identifier",
                      "start": 937,
                      "end": 938,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 22
                        },
                        "end": {
                          "line": 35,
                          "column": 23
                        },
                        "identifierName": "k"
                      },
                      "name": "k"
                    }
                  ]
                },
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step E",
                  "start": 905,
                  "end": 914,
                  "loc": {
                    "start": {
                      "line": 34,
                      "column": 4
                    },
                    "end": {
                      "line": 34,
                      "column": 13
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step F",
                  "start": 946,
                  "end": 955,
                  "loc": {
                    "start": {
                      "line": 37,
                      "column": 4
                    },
                    "end": {
                      "line": 37,
                      "column": 13
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 960,
              "end": 1024,
              "loc": {
                "start": {
                  "line": 38,
                  "column": 4
                },
                "end": {
                  "line": 38,
                  "column": 68
                }
              },
              "expression": {
                "type": "AssignmentExpression",
                "start": 960,
                "end": 1023,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 4
                  },
                  "end": {
                    "line": 38,
                    "column": 67
                  }
                },
                "operator": "=",
                "left": {
                  "type": "Identifier",
                  "start": 960,
                  "end": 961,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 4
                    },
                    "end": {
                      "line": 38,
                      "column": 5
                    },
                    "identifierName": "k"
                  },
                  "name": "k",
                  "leadingComments": null
                },
                "right": {
                  "type": "CallExpression",
                  "start": 964,
                  "end": 1023,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 8
                    },
                    "end": {
                      "line": 38,
                      "column": 67
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 964,
                    "end": 974,
                    "loc": {
                      "start": {
                        "line": 38,
                        "column": 8
                      },
                      "end": {
                        "line": 38,
                        "column": 18
                      },
                      "identifierName": "HmacSHA256"
                    },
                    "name": "HmacSHA256"
                  },
                  "arguments": [
                    {
                      "type": "CallExpression",
                      "start": 975,
                      "end": 1019,
                      "loc": {
                        "start": {
                          "line": 38,
                          "column": 19
                        },
                        "end": {
                          "line": 38,
                          "column": 63
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 975,
                        "end": 988,
                        "loc": {
                          "start": {
                            "line": 38,
                            "column": 19
                          },
                          "end": {
                            "line": 38,
                            "column": 32
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 975,
                          "end": 981,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 19
                            },
                            "end": {
                              "line": 38,
                              "column": 25
                            },
                            "identifierName": "Buffer"
                          },
                          "name": "Buffer"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 982,
                          "end": 988,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 26
                            },
                            "end": {
                              "line": 38,
                              "column": 32
                            },
                            "identifierName": "concat"
                          },
                          "name": "concat"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "ArrayExpression",
                          "start": 989,
                          "end": 1018,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 33
                            },
                            "end": {
                              "line": 38,
                              "column": 62
                            }
                          },
                          "elements": [
                            {
                              "type": "Identifier",
                              "start": 990,
                              "end": 991,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 34
                                },
                                "end": {
                                  "line": 38,
                                  "column": 35
                                },
                                "identifierName": "v"
                              },
                              "name": "v"
                            },
                            {
                              "type": "NewExpression",
                              "start": 993,
                              "end": 1008,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 37
                                },
                                "end": {
                                  "line": 38,
                                  "column": 52
                                }
                              },
                              "callee": {
                                "type": "Identifier",
                                "start": 997,
                                "end": 1003,
                                "loc": {
                                  "start": {
                                    "line": 38,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 38,
                                    "column": 47
                                  },
                                  "identifierName": "Buffer"
                                },
                                "name": "Buffer"
                              },
                              "arguments": [
                                {
                                  "type": "ArrayExpression",
                                  "start": 1004,
                                  "end": 1007,
                                  "loc": {
                                    "start": {
                                      "line": 38,
                                      "column": 48
                                    },
                                    "end": {
                                      "line": 38,
                                      "column": 51
                                    }
                                  },
                                  "elements": [
                                    {
                                      "type": "NumericLiteral",
                                      "start": 1005,
                                      "end": 1006,
                                      "loc": {
                                        "start": {
                                          "line": 38,
                                          "column": 49
                                        },
                                        "end": {
                                          "line": 38,
                                          "column": 50
                                        }
                                      },
                                      "extra": {
                                        "rawValue": 1,
                                        "raw": "1"
                                      },
                                      "value": 1
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "Identifier",
                              "start": 1010,
                              "end": 1011,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 54
                                },
                                "end": {
                                  "line": 38,
                                  "column": 55
                                },
                                "identifierName": "x"
                              },
                              "name": "x"
                            },
                            {
                              "type": "Identifier",
                              "start": 1013,
                              "end": 1017,
                              "loc": {
                                "start": {
                                  "line": 38,
                                  "column": 57
                                },
                                "end": {
                                  "line": 38,
                                  "column": 61
                                },
                                "identifierName": "hash"
                              },
                              "name": "hash"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "Identifier",
                      "start": 1021,
                      "end": 1022,
                      "loc": {
                        "start": {
                          "line": 38,
                          "column": 65
                        },
                        "end": {
                          "line": 38,
                          "column": 66
                        },
                        "identifierName": "k"
                      },
                      "name": "k"
                    }
                  ]
                },
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step F",
                  "start": 946,
                  "end": 955,
                  "loc": {
                    "start": {
                      "line": 37,
                      "column": 4
                    },
                    "end": {
                      "line": 37,
                      "column": 13
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step G",
                  "start": 1030,
                  "end": 1039,
                  "loc": {
                    "start": {
                      "line": 40,
                      "column": 4
                    },
                    "end": {
                      "line": 40,
                      "column": 13
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 1044,
              "end": 1065,
              "loc": {
                "start": {
                  "line": 41,
                  "column": 4
                },
                "end": {
                  "line": 41,
                  "column": 25
                }
              },
              "expression": {
                "type": "AssignmentExpression",
                "start": 1044,
                "end": 1064,
                "loc": {
                  "start": {
                    "line": 41,
                    "column": 4
                  },
                  "end": {
                    "line": 41,
                    "column": 24
                  }
                },
                "operator": "=",
                "left": {
                  "type": "Identifier",
                  "start": 1044,
                  "end": 1045,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 4
                    },
                    "end": {
                      "line": 41,
                      "column": 5
                    },
                    "identifierName": "v"
                  },
                  "name": "v",
                  "leadingComments": null
                },
                "right": {
                  "type": "CallExpression",
                  "start": 1048,
                  "end": 1064,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 8
                    },
                    "end": {
                      "line": 41,
                      "column": 24
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 1048,
                    "end": 1058,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 8
                      },
                      "end": {
                        "line": 41,
                        "column": 18
                      },
                      "identifierName": "HmacSHA256"
                    },
                    "name": "HmacSHA256"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 1059,
                      "end": 1060,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 19
                        },
                        "end": {
                          "line": 41,
                          "column": 20
                        },
                        "identifierName": "v"
                      },
                      "name": "v"
                    },
                    {
                      "type": "Identifier",
                      "start": 1062,
                      "end": 1063,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 22
                        },
                        "end": {
                          "line": 41,
                          "column": 23
                        },
                        "identifierName": "k"
                      },
                      "name": "k"
                    }
                  ]
                },
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step G",
                  "start": 1030,
                  "end": 1039,
                  "loc": {
                    "start": {
                      "line": 40,
                      "column": 4
                    },
                    "end": {
                      "line": 40,
                      "column": 13
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step H1/H2a, ignored as tlen === qlen (256 bit)",
                  "start": 1071,
                  "end": 1121,
                  "loc": {
                    "start": {
                      "line": 43,
                      "column": 4
                    },
                    "end": {
                      "line": 43,
                      "column": 54
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": " Step H2b",
                  "start": 1126,
                  "end": 1137,
                  "loc": {
                    "start": {
                      "line": 44,
                      "column": 4
                    },
                    "end": {
                      "line": 44,
                      "column": 15
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 1142,
              "end": 1163,
              "loc": {
                "start": {
                  "line": 45,
                  "column": 4
                },
                "end": {
                  "line": 45,
                  "column": 25
                }
              },
              "expression": {
                "type": "AssignmentExpression",
                "start": 1142,
                "end": 1162,
                "loc": {
                  "start": {
                    "line": 45,
                    "column": 4
                  },
                  "end": {
                    "line": 45,
                    "column": 24
                  }
                },
                "operator": "=",
                "left": {
                  "type": "Identifier",
                  "start": 1142,
                  "end": 1143,
                  "loc": {
                    "start": {
                      "line": 45,
                      "column": 4
                    },
                    "end": {
                      "line": 45,
                      "column": 5
                    },
                    "identifierName": "v"
                  },
                  "name": "v",
                  "leadingComments": null
                },
                "right": {
                  "type": "CallExpression",
                  "start": 1146,
                  "end": 1162,
                  "loc": {
                    "start": {
                      "line": 45,
                      "column": 8
                    },
                    "end": {
                      "line": 45,
                      "column": 24
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 1146,
                    "end": 1156,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 8
                      },
                      "end": {
                        "line": 45,
                        "column": 18
                      },
                      "identifierName": "HmacSHA256"
                    },
                    "name": "HmacSHA256"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 1157,
                      "end": 1158,
                      "loc": {
                        "start": {
                          "line": 45,
                          "column": 19
                        },
                        "end": {
                          "line": 45,
                          "column": 20
                        },
                        "identifierName": "v"
                      },
                      "name": "v"
                    },
                    {
                      "type": "Identifier",
                      "start": 1160,
                      "end": 1161,
                      "loc": {
                        "start": {
                          "line": 45,
                          "column": 22
                        },
                        "end": {
                          "line": 45,
                          "column": 23
                        },
                        "identifierName": "k"
                      },
                      "name": "k"
                    }
                  ]
                },
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step H1/H2a, ignored as tlen === qlen (256 bit)",
                  "start": 1071,
                  "end": 1121,
                  "loc": {
                    "start": {
                      "line": 43,
                      "column": 4
                    },
                    "end": {
                      "line": 43,
                      "column": 54
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": " Step H2b",
                  "start": 1126,
                  "end": 1137,
                  "loc": {
                    "start": {
                      "line": 44,
                      "column": 4
                    },
                    "end": {
                      "line": 44,
                      "column": 15
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 1169,
              "end": 1202,
              "loc": {
                "start": {
                  "line": 47,
                  "column": 4
                },
                "end": {
                  "line": 47,
                  "column": 37
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 1173,
                  "end": 1201,
                  "loc": {
                    "start": {
                      "line": 47,
                      "column": 8
                    },
                    "end": {
                      "line": 47,
                      "column": 36
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 1173,
                    "end": 1174,
                    "loc": {
                      "start": {
                        "line": 47,
                        "column": 8
                      },
                      "end": {
                        "line": 47,
                        "column": 9
                      },
                      "identifierName": "T"
                    },
                    "name": "T"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 1177,
                    "end": 1201,
                    "loc": {
                      "start": {
                        "line": 47,
                        "column": 12
                      },
                      "end": {
                        "line": 47,
                        "column": 36
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 1177,
                      "end": 1198,
                      "loc": {
                        "start": {
                          "line": 47,
                          "column": 12
                        },
                        "end": {
                          "line": 47,
                          "column": 33
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 1177,
                        "end": 1187,
                        "loc": {
                          "start": {
                            "line": 47,
                            "column": 12
                          },
                          "end": {
                            "line": 47,
                            "column": 22
                          },
                          "identifierName": "BigInteger"
                        },
                        "name": "BigInteger"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 1188,
                        "end": 1198,
                        "loc": {
                          "start": {
                            "line": 47,
                            "column": 23
                          },
                          "end": {
                            "line": 47,
                            "column": 33
                          },
                          "identifierName": "fromBuffer"
                        },
                        "name": "fromBuffer"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 1199,
                        "end": 1200,
                        "loc": {
                          "start": {
                            "line": 47,
                            "column": 34
                          },
                          "end": {
                            "line": 47,
                            "column": 35
                          },
                          "identifierName": "v"
                        },
                        "name": "v"
                      }
                    ]
                  }
                }
              ],
              "kind": "var",
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step H3, repeat until T is within the interval [1, n - 1]",
                  "start": 1208,
                  "end": 1268,
                  "loc": {
                    "start": {
                      "line": 49,
                      "column": 4
                    },
                    "end": {
                      "line": 49,
                      "column": 64
                    }
                  }
                }
              ]
            },
            {
              "type": "WhileStatement",
              "start": 1273,
              "end": 1605,
              "loc": {
                "start": {
                  "line": 50,
                  "column": 4
                },
                "end": {
                  "line": 59,
                  "column": 5
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 1280,
                "end": 1340,
                "loc": {
                  "start": {
                    "line": 50,
                    "column": 11
                  },
                  "end": {
                    "line": 50,
                    "column": 71
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 1280,
                  "end": 1324,
                  "loc": {
                    "start": {
                      "line": 50,
                      "column": 11
                    },
                    "end": {
                      "line": 50,
                      "column": 55
                    }
                  },
                  "left": {
                    "type": "BinaryExpression",
                    "start": 1280,
                    "end": 1295,
                    "loc": {
                      "start": {
                        "line": 50,
                        "column": 11
                      },
                      "end": {
                        "line": 50,
                        "column": 26
                      }
                    },
                    "left": {
                      "type": "CallExpression",
                      "start": 1280,
                      "end": 1290,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 11
                        },
                        "end": {
                          "line": 50,
                          "column": 21
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 1280,
                        "end": 1288,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 11
                          },
                          "end": {
                            "line": 50,
                            "column": 19
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 1280,
                          "end": 1281,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 11
                            },
                            "end": {
                              "line": 50,
                              "column": 12
                            },
                            "identifierName": "T"
                          },
                          "name": "T",
                          "leadingComments": null
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 1282,
                          "end": 1288,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 13
                            },
                            "end": {
                              "line": 50,
                              "column": 19
                            },
                            "identifierName": "signum"
                          },
                          "name": "signum"
                        },
                        "computed": false,
                        "leadingComments": null
                      },
                      "arguments": [],
                      "leadingComments": null
                    },
                    "operator": "<=",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 1294,
                      "end": 1295,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 25
                        },
                        "end": {
                          "line": 50,
                          "column": 26
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    },
                    "leadingComments": null
                  },
                  "operator": "||",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 1299,
                    "end": 1324,
                    "loc": {
                      "start": {
                        "line": 50,
                        "column": 30
                      },
                      "end": {
                        "line": 50,
                        "column": 55
                      }
                    },
                    "left": {
                      "type": "CallExpression",
                      "start": 1299,
                      "end": 1319,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 30
                        },
                        "end": {
                          "line": 50,
                          "column": 50
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 1299,
                        "end": 1310,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 30
                          },
                          "end": {
                            "line": 50,
                            "column": 41
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 1299,
                          "end": 1300,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 30
                            },
                            "end": {
                              "line": 50,
                              "column": 31
                            },
                            "identifierName": "T"
                          },
                          "name": "T"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 1301,
                          "end": 1310,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 32
                            },
                            "end": {
                              "line": 50,
                              "column": 41
                            },
                            "identifierName": "compareTo"
                          },
                          "name": "compareTo"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "MemberExpression",
                          "start": 1311,
                          "end": 1318,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 42
                            },
                            "end": {
                              "line": 50,
                              "column": 49
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1311,
                            "end": 1316,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 42
                              },
                              "end": {
                                "line": 50,
                                "column": 47
                              },
                              "identifierName": "curve"
                            },
                            "name": "curve"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1317,
                            "end": 1318,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 48
                              },
                              "end": {
                                "line": 50,
                                "column": 49
                              },
                              "identifierName": "n"
                            },
                            "name": "n"
                          },
                          "computed": false
                        }
                      ]
                    },
                    "operator": ">=",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 1323,
                      "end": 1324,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 54
                        },
                        "end": {
                          "line": 50,
                          "column": 55
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    }
                  },
                  "leadingComments": null
                },
                "operator": "||",
                "right": {
                  "type": "UnaryExpression",
                  "start": 1328,
                  "end": 1340,
                  "loc": {
                    "start": {
                      "line": 50,
                      "column": 59
                    },
                    "end": {
                      "line": 50,
                      "column": 71
                    }
                  },
                  "operator": "!",
                  "prefix": true,
                  "argument": {
                    "type": "CallExpression",
                    "start": 1329,
                    "end": 1340,
                    "loc": {
                      "start": {
                        "line": 50,
                        "column": 60
                      },
                      "end": {
                        "line": 50,
                        "column": 71
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 1329,
                      "end": 1337,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 60
                        },
                        "end": {
                          "line": 50,
                          "column": 68
                        },
                        "identifierName": "checkSig"
                      },
                      "name": "checkSig"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 1338,
                        "end": 1339,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 69
                          },
                          "end": {
                            "line": 50,
                            "column": 70
                          },
                          "identifierName": "T"
                        },
                        "name": "T"
                      }
                    ]
                  },
                  "extra": {
                    "parenthesizedArgument": false
                  }
                },
                "leadingComments": null
              },
              "body": {
                "type": "BlockStatement",
                "start": 1342,
                "end": 1605,
                "loc": {
                  "start": {
                    "line": 50,
                    "column": 73
                  },
                  "end": {
                    "line": 59,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 1352,
                    "end": 1407,
                    "loc": {
                      "start": {
                        "line": 51,
                        "column": 8
                      },
                      "end": {
                        "line": 51,
                        "column": 63
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 1352,
                      "end": 1406,
                      "loc": {
                        "start": {
                          "line": 51,
                          "column": 8
                        },
                        "end": {
                          "line": 51,
                          "column": 62
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 1352,
                        "end": 1353,
                        "loc": {
                          "start": {
                            "line": 51,
                            "column": 8
                          },
                          "end": {
                            "line": 51,
                            "column": 9
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 1356,
                        "end": 1406,
                        "loc": {
                          "start": {
                            "line": 51,
                            "column": 12
                          },
                          "end": {
                            "line": 51,
                            "column": 62
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 1356,
                          "end": 1366,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 12
                            },
                            "end": {
                              "line": 51,
                              "column": 22
                            },
                            "identifierName": "HmacSHA256"
                          },
                          "name": "HmacSHA256"
                        },
                        "arguments": [
                          {
                            "type": "CallExpression",
                            "start": 1367,
                            "end": 1402,
                            "loc": {
                              "start": {
                                "line": 51,
                                "column": 23
                              },
                              "end": {
                                "line": 51,
                                "column": 58
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 1367,
                              "end": 1380,
                              "loc": {
                                "start": {
                                  "line": 51,
                                  "column": 23
                                },
                                "end": {
                                  "line": 51,
                                  "column": 36
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 1367,
                                "end": 1373,
                                "loc": {
                                  "start": {
                                    "line": 51,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 51,
                                    "column": 29
                                  },
                                  "identifierName": "Buffer"
                                },
                                "name": "Buffer"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1374,
                                "end": 1380,
                                "loc": {
                                  "start": {
                                    "line": 51,
                                    "column": 30
                                  },
                                  "end": {
                                    "line": 51,
                                    "column": 36
                                  },
                                  "identifierName": "concat"
                                },
                                "name": "concat"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "ArrayExpression",
                                "start": 1381,
                                "end": 1401,
                                "loc": {
                                  "start": {
                                    "line": 51,
                                    "column": 37
                                  },
                                  "end": {
                                    "line": 51,
                                    "column": 57
                                  }
                                },
                                "elements": [
                                  {
                                    "type": "Identifier",
                                    "start": 1382,
                                    "end": 1383,
                                    "loc": {
                                      "start": {
                                        "line": 51,
                                        "column": 38
                                      },
                                      "end": {
                                        "line": 51,
                                        "column": 39
                                      },
                                      "identifierName": "v"
                                    },
                                    "name": "v"
                                  },
                                  {
                                    "type": "NewExpression",
                                    "start": 1385,
                                    "end": 1400,
                                    "loc": {
                                      "start": {
                                        "line": 51,
                                        "column": 41
                                      },
                                      "end": {
                                        "line": 51,
                                        "column": 56
                                      }
                                    },
                                    "callee": {
                                      "type": "Identifier",
                                      "start": 1389,
                                      "end": 1395,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 45
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 51
                                        },
                                        "identifierName": "Buffer"
                                      },
                                      "name": "Buffer"
                                    },
                                    "arguments": [
                                      {
                                        "type": "ArrayExpression",
                                        "start": 1396,
                                        "end": 1399,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 52
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 55
                                          }
                                        },
                                        "elements": [
                                          {
                                            "type": "NumericLiteral",
                                            "start": 1397,
                                            "end": 1398,
                                            "loc": {
                                              "start": {
                                                "line": 51,
                                                "column": 53
                                              },
                                              "end": {
                                                "line": 51,
                                                "column": 54
                                              }
                                            },
                                            "extra": {
                                              "rawValue": 0,
                                              "raw": "0"
                                            },
                                            "value": 0
                                          }
                                        ]
                                      }
                                    ]
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "Identifier",
                            "start": 1404,
                            "end": 1405,
                            "loc": {
                              "start": {
                                "line": 51,
                                "column": 60
                              },
                              "end": {
                                "line": 51,
                                "column": 61
                              },
                              "identifierName": "k"
                            },
                            "name": "k"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "ExpressionStatement",
                    "start": 1416,
                    "end": 1437,
                    "loc": {
                      "start": {
                        "line": 52,
                        "column": 8
                      },
                      "end": {
                        "line": 52,
                        "column": 29
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 1416,
                      "end": 1436,
                      "loc": {
                        "start": {
                          "line": 52,
                          "column": 8
                        },
                        "end": {
                          "line": 52,
                          "column": 28
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 1416,
                        "end": 1417,
                        "loc": {
                          "start": {
                            "line": 52,
                            "column": 8
                          },
                          "end": {
                            "line": 52,
                            "column": 9
                          },
                          "identifierName": "v"
                        },
                        "name": "v"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 1420,
                        "end": 1436,
                        "loc": {
                          "start": {
                            "line": 52,
                            "column": 12
                          },
                          "end": {
                            "line": 52,
                            "column": 28
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 1420,
                          "end": 1430,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 12
                            },
                            "end": {
                              "line": 52,
                              "column": 22
                            },
                            "identifierName": "HmacSHA256"
                          },
                          "name": "HmacSHA256"
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 1431,
                            "end": 1432,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 23
                              },
                              "end": {
                                "line": 52,
                                "column": 24
                              },
                              "identifierName": "v"
                            },
                            "name": "v"
                          },
                          {
                            "type": "Identifier",
                            "start": 1434,
                            "end": 1435,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 26
                              },
                              "end": {
                                "line": 52,
                                "column": 27
                              },
                              "identifierName": "k"
                            },
                            "name": "k"
                          }
                        ]
                      }
                    },
                    "trailingComments": [
                      {
                        "type": "CommentLine",
                        "value": " Step H1/H2a, again, ignored as tlen === qlen (256 bit)",
                        "start": 1447,
                        "end": 1504,
                        "loc": {
                          "start": {
                            "line": 54,
                            "column": 8
                          },
                          "end": {
                            "line": 54,
                            "column": 65
                          }
                        }
                      },
                      {
                        "type": "CommentLine",
                        "value": " Step H2b again",
                        "start": 1513,
                        "end": 1530,
                        "loc": {
                          "start": {
                            "line": 55,
                            "column": 8
                          },
                          "end": {
                            "line": 55,
                            "column": 25
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "ExpressionStatement",
                    "start": 1539,
                    "end": 1560,
                    "loc": {
                      "start": {
                        "line": 56,
                        "column": 8
                      },
                      "end": {
                        "line": 56,
                        "column": 29
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 1539,
                      "end": 1559,
                      "loc": {
                        "start": {
                          "line": 56,
                          "column": 8
                        },
                        "end": {
                          "line": 56,
                          "column": 28
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 1539,
                        "end": 1540,
                        "loc": {
                          "start": {
                            "line": 56,
                            "column": 8
                          },
                          "end": {
                            "line": 56,
                            "column": 9
                          },
                          "identifierName": "v"
                        },
                        "name": "v",
                        "leadingComments": null
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 1543,
                        "end": 1559,
                        "loc": {
                          "start": {
                            "line": 56,
                            "column": 12
                          },
                          "end": {
                            "line": 56,
                            "column": 28
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 1543,
                          "end": 1553,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 12
                            },
                            "end": {
                              "line": 56,
                              "column": 22
                            },
                            "identifierName": "HmacSHA256"
                          },
                          "name": "HmacSHA256"
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 1554,
                            "end": 1555,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 23
                              },
                              "end": {
                                "line": 56,
                                "column": 24
                              },
                              "identifierName": "v"
                            },
                            "name": "v"
                          },
                          {
                            "type": "Identifier",
                            "start": 1557,
                            "end": 1558,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 26
                              },
                              "end": {
                                "line": 56,
                                "column": 27
                              },
                              "identifierName": "k"
                            },
                            "name": "k"
                          }
                        ]
                      },
                      "leadingComments": null
                    },
                    "leadingComments": [
                      {
                        "type": "CommentLine",
                        "value": " Step H1/H2a, again, ignored as tlen === qlen (256 bit)",
                        "start": 1447,
                        "end": 1504,
                        "loc": {
                          "start": {
                            "line": 54,
                            "column": 8
                          },
                          "end": {
                            "line": 54,
                            "column": 65
                          }
                        }
                      },
                      {
                        "type": "CommentLine",
                        "value": " Step H2b again",
                        "start": 1513,
                        "end": 1530,
                        "loc": {
                          "start": {
                            "line": 55,
                            "column": 8
                          },
                          "end": {
                            "line": 55,
                            "column": 25
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "ExpressionStatement",
                    "start": 1570,
                    "end": 1599,
                    "loc": {
                      "start": {
                        "line": 58,
                        "column": 8
                      },
                      "end": {
                        "line": 58,
                        "column": 37
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 1570,
                      "end": 1598,
                      "loc": {
                        "start": {
                          "line": 58,
                          "column": 8
                        },
                        "end": {
                          "line": 58,
                          "column": 36
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 1570,
                        "end": 1571,
                        "loc": {
                          "start": {
                            "line": 58,
                            "column": 8
                          },
                          "end": {
                            "line": 58,
                            "column": 9
                          },
                          "identifierName": "T"
                        },
                        "name": "T"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 1574,
                        "end": 1598,
                        "loc": {
                          "start": {
                            "line": 58,
                            "column": 12
                          },
                          "end": {
                            "line": 58,
                            "column": 36
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1574,
                          "end": 1595,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 12
                            },
                            "end": {
                              "line": 58,
                              "column": 33
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1574,
                            "end": 1584,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 12
                              },
                              "end": {
                                "line": 58,
                                "column": 22
                              },
                              "identifierName": "BigInteger"
                            },
                            "name": "BigInteger"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1585,
                            "end": 1595,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 23
                              },
                              "end": {
                                "line": 58,
                                "column": 33
                              },
                              "identifierName": "fromBuffer"
                            },
                            "name": "fromBuffer"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 1596,
                            "end": 1597,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 34
                              },
                              "end": {
                                "line": 58,
                                "column": 35
                              },
                              "identifierName": "v"
                            },
                            "name": "v"
                          }
                        ]
                      }
                    }
                  }
                ],
                "directives": []
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Step H3, repeat until T is within the interval [1, n - 1]",
                  "start": 1208,
                  "end": 1268,
                  "loc": {
                    "start": {
                      "line": 49,
                      "column": 4
                    },
                    "end": {
                      "line": 49,
                      "column": 64
                    }
                  }
                }
              ]
            },
            {
              "type": "ReturnStatement",
              "start": 1611,
              "end": 1620,
              "loc": {
                "start": {
                  "line": 61,
                  "column": 4
                },
                "end": {
                  "line": 61,
                  "column": 13
                }
              },
              "argument": {
                "type": "Identifier",
                "start": 1618,
                "end": 1619,
                "loc": {
                  "start": {
                    "line": 61,
                    "column": 11
                  },
                  "end": {
                    "line": 61,
                    "column": 12
                  },
                  "identifierName": "T"
                },
                "name": "T"
              }
            }
          ],
          "directives": []
        },
        "leadingComments": [],
        "name": "_",
        "trailingComments": []
      },
      {
        "type": "Identifier",
        "start": 1624,
        "end": 2522,
        "loc": {
          "start": {
            "line": 64,
            "column": 0
          },
          "end": {
            "line": 103,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 1633,
          "end": 1637,
          "loc": {
            "start": {
              "line": 64,
              "column": 9
            },
            "end": {
              "line": 64,
              "column": 13
            },
            "identifierName": "sign"
          },
          "name": "sign"
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 1638,
            "end": 1643,
            "loc": {
              "start": {
                "line": 64,
                "column": 14
              },
              "end": {
                "line": 64,
                "column": 19
              },
              "identifierName": "curve"
            },
            "name": "curve"
          },
          {
            "type": "Identifier",
            "start": 1645,
            "end": 1649,
            "loc": {
              "start": {
                "line": 64,
                "column": 21
              },
              "end": {
                "line": 64,
                "column": 25
              },
              "identifierName": "hash"
            },
            "name": "hash"
          },
          {
            "type": "Identifier",
            "start": 1651,
            "end": 1652,
            "loc": {
              "start": {
                "line": 64,
                "column": 27
              },
              "end": {
                "line": 64,
                "column": 28
              },
              "identifierName": "d"
            },
            "name": "d"
          },
          {
            "type": "Identifier",
            "start": 1654,
            "end": 1659,
            "loc": {
              "start": {
                "line": 64,
                "column": 30
              },
              "end": {
                "line": 64,
                "column": 35
              },
              "identifierName": "nonce"
            },
            "name": "nonce"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 1661,
          "end": 2522,
          "loc": {
            "start": {
              "line": 64,
              "column": 37
            },
            "end": {
              "line": 103,
              "column": 1
            }
          },
          "body": [
            {
              "type": "VariableDeclaration",
              "start": 1667,
              "end": 1705,
              "loc": {
                "start": {
                  "line": 65,
                  "column": 4
                },
                "end": {
                  "line": 65,
                  "column": 42
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 1673,
                  "end": 1704,
                  "loc": {
                    "start": {
                      "line": 65,
                      "column": 10
                    },
                    "end": {
                      "line": 65,
                      "column": 41
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 1673,
                    "end": 1674,
                    "loc": {
                      "start": {
                        "line": 65,
                        "column": 10
                      },
                      "end": {
                        "line": 65,
                        "column": 11
                      },
                      "identifierName": "e"
                    },
                    "name": "e"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 1677,
                    "end": 1704,
                    "loc": {
                      "start": {
                        "line": 65,
                        "column": 14
                      },
                      "end": {
                        "line": 65,
                        "column": 41
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 1677,
                      "end": 1698,
                      "loc": {
                        "start": {
                          "line": 65,
                          "column": 14
                        },
                        "end": {
                          "line": 65,
                          "column": 35
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 1677,
                        "end": 1687,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 14
                          },
                          "end": {
                            "line": 65,
                            "column": 24
                          },
                          "identifierName": "BigInteger"
                        },
                        "name": "BigInteger"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 1688,
                        "end": 1698,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 25
                          },
                          "end": {
                            "line": 65,
                            "column": 35
                          },
                          "identifierName": "fromBuffer"
                        },
                        "name": "fromBuffer"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 1699,
                        "end": 1703,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 36
                          },
                          "end": {
                            "line": 65,
                            "column": 40
                          },
                          "identifierName": "hash"
                        },
                        "name": "hash"
                      }
                    ]
                  }
                }
              ],
              "kind": "const"
            },
            {
              "type": "VariableDeclaration",
              "start": 1710,
              "end": 1728,
              "loc": {
                "start": {
                  "line": 66,
                  "column": 4
                },
                "end": {
                  "line": 66,
                  "column": 22
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 1716,
                  "end": 1727,
                  "loc": {
                    "start": {
                      "line": 66,
                      "column": 10
                    },
                    "end": {
                      "line": 66,
                      "column": 21
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 1716,
                    "end": 1717,
                    "loc": {
                      "start": {
                        "line": 66,
                        "column": 10
                      },
                      "end": {
                        "line": 66,
                        "column": 11
                      },
                      "identifierName": "n"
                    },
                    "name": "n"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 1720,
                    "end": 1727,
                    "loc": {
                      "start": {
                        "line": 66,
                        "column": 14
                      },
                      "end": {
                        "line": 66,
                        "column": 21
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 1720,
                      "end": 1725,
                      "loc": {
                        "start": {
                          "line": 66,
                          "column": 14
                        },
                        "end": {
                          "line": 66,
                          "column": 19
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 1726,
                      "end": 1727,
                      "loc": {
                        "start": {
                          "line": 66,
                          "column": 20
                        },
                        "end": {
                          "line": 66,
                          "column": 21
                        },
                        "identifierName": "n"
                      },
                      "name": "n"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "const"
            },
            {
              "type": "VariableDeclaration",
              "start": 1733,
              "end": 1751,
              "loc": {
                "start": {
                  "line": 67,
                  "column": 4
                },
                "end": {
                  "line": 67,
                  "column": 22
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 1739,
                  "end": 1750,
                  "loc": {
                    "start": {
                      "line": 67,
                      "column": 10
                    },
                    "end": {
                      "line": 67,
                      "column": 21
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 1739,
                    "end": 1740,
                    "loc": {
                      "start": {
                        "line": 67,
                        "column": 10
                      },
                      "end": {
                        "line": 67,
                        "column": 11
                      },
                      "identifierName": "G"
                    },
                    "name": "G"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 1743,
                    "end": 1750,
                    "loc": {
                      "start": {
                        "line": 67,
                        "column": 14
                      },
                      "end": {
                        "line": 67,
                        "column": 21
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 1743,
                      "end": 1748,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 14
                        },
                        "end": {
                          "line": 67,
                          "column": 19
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 1749,
                      "end": 1750,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 20
                        },
                        "end": {
                          "line": 67,
                          "column": 21
                        },
                        "identifierName": "G"
                      },
                      "name": "G"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "const"
            },
            {
              "type": "VariableDeclaration",
              "start": 1757,
              "end": 1766,
              "loc": {
                "start": {
                  "line": 69,
                  "column": 4
                },
                "end": {
                  "line": 69,
                  "column": 13
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 1761,
                  "end": 1762,
                  "loc": {
                    "start": {
                      "line": 69,
                      "column": 8
                    },
                    "end": {
                      "line": 69,
                      "column": 9
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 1761,
                    "end": 1762,
                    "loc": {
                      "start": {
                        "line": 69,
                        "column": 8
                      },
                      "end": {
                        "line": 69,
                        "column": 9
                      },
                      "identifierName": "r"
                    },
                    "name": "r"
                  },
                  "init": null
                },
                {
                  "type": "VariableDeclarator",
                  "start": 1764,
                  "end": 1765,
                  "loc": {
                    "start": {
                      "line": 69,
                      "column": 11
                    },
                    "end": {
                      "line": 69,
                      "column": 12
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 1764,
                    "end": 1765,
                    "loc": {
                      "start": {
                        "line": 69,
                        "column": 11
                      },
                      "end": {
                        "line": 69,
                        "column": 12
                      },
                      "identifierName": "s"
                    },
                    "name": "s"
                  },
                  "init": null
                }
              ],
              "kind": "let"
            },
            {
              "type": "ExpressionStatement",
              "start": 1772,
              "end": 2304,
              "loc": {
                "start": {
                  "line": 71,
                  "column": 4
                },
                "end": {
                  "line": 93,
                  "column": 6
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 1772,
                "end": 2303,
                "loc": {
                  "start": {
                    "line": 71,
                    "column": 4
                  },
                  "end": {
                    "line": 93,
                    "column": 5
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 1772,
                  "end": 1794,
                  "loc": {
                    "start": {
                      "line": 71,
                      "column": 4
                    },
                    "end": {
                      "line": 71,
                      "column": 26
                    },
                    "identifierName": "deterministicGenerateK"
                  },
                  "name": "deterministicGenerateK"
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 1804,
                    "end": 1809,
                    "loc": {
                      "start": {
                        "line": 72,
                        "column": 8
                      },
                      "end": {
                        "line": 72,
                        "column": 13
                      },
                      "identifierName": "curve"
                    },
                    "name": "curve"
                  },
                  {
                    "type": "Identifier",
                    "start": 1819,
                    "end": 1823,
                    "loc": {
                      "start": {
                        "line": 73,
                        "column": 8
                      },
                      "end": {
                        "line": 73,
                        "column": 12
                      },
                      "identifierName": "hash"
                    },
                    "name": "hash"
                  },
                  {
                    "type": "Identifier",
                    "start": 1833,
                    "end": 1834,
                    "loc": {
                      "start": {
                        "line": 74,
                        "column": 8
                      },
                      "end": {
                        "line": 74,
                        "column": 9
                      },
                      "identifierName": "d"
                    },
                    "name": "d"
                  },
                  {
                    "type": "FunctionExpression",
                    "start": 1844,
                    "end": 2282,
                    "loc": {
                      "start": {
                        "line": 75,
                        "column": 8
                      },
                      "end": {
                        "line": 91,
                        "column": 9
                      }
                    },
                    "id": null,
                    "generator": false,
                    "expression": false,
                    "async": false,
                    "params": [
                      {
                        "type": "Identifier",
                        "start": 1853,
                        "end": 1854,
                        "loc": {
                          "start": {
                            "line": 75,
                            "column": 17
                          },
                          "end": {
                            "line": 75,
                            "column": 18
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      }
                    ],
                    "body": {
                      "type": "BlockStatement",
                      "start": 1856,
                      "end": 2282,
                      "loc": {
                        "start": {
                          "line": 75,
                          "column": 20
                        },
                        "end": {
                          "line": 91,
                          "column": 9
                        }
                      },
                      "body": [
                        {
                          "type": "VariableDeclaration",
                          "start": 1918,
                          "end": 1940,
                          "loc": {
                            "start": {
                              "line": 77,
                              "column": 12
                            },
                            "end": {
                              "line": 77,
                              "column": 34
                            }
                          },
                          "declarations": [
                            {
                              "type": "VariableDeclarator",
                              "start": 1922,
                              "end": 1939,
                              "loc": {
                                "start": {
                                  "line": 77,
                                  "column": 16
                                },
                                "end": {
                                  "line": 77,
                                  "column": 33
                                }
                              },
                              "id": {
                                "type": "Identifier",
                                "start": 1922,
                                "end": 1923,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 17
                                  },
                                  "identifierName": "Q"
                                },
                                "name": "Q",
                                "leadingComments": null
                              },
                              "init": {
                                "type": "CallExpression",
                                "start": 1926,
                                "end": 1939,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 33
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 1926,
                                  "end": 1936,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 30
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 1926,
                                    "end": 1927,
                                    "loc": {
                                      "start": {
                                        "line": 77,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 77,
                                        "column": 21
                                      },
                                      "identifierName": "G"
                                    },
                                    "name": "G"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1928,
                                    "end": 1936,
                                    "loc": {
                                      "start": {
                                        "line": 77,
                                        "column": 22
                                      },
                                      "end": {
                                        "line": 77,
                                        "column": 30
                                      },
                                      "identifierName": "multiply"
                                    },
                                    "name": "multiply"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "Identifier",
                                    "start": 1937,
                                    "end": 1938,
                                    "loc": {
                                      "start": {
                                        "line": 77,
                                        "column": 31
                                      },
                                      "end": {
                                        "line": 77,
                                        "column": 32
                                      },
                                      "identifierName": "k"
                                    },
                                    "name": "k"
                                  }
                                ]
                              },
                              "leadingComments": null
                            }
                          ],
                          "kind": "let",
                          "leadingComments": [
                            {
                              "type": "CommentLine",
                              "value": " find canonically valid signature",
                              "start": 1870,
                              "end": 1905,
                              "loc": {
                                "start": {
                                  "line": 76,
                                  "column": 12
                                },
                                "end": {
                                  "line": 76,
                                  "column": 47
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "IfStatement",
                          "start": 1954,
                          "end": 1992,
                          "loc": {
                            "start": {
                              "line": 79,
                              "column": 12
                            },
                            "end": {
                              "line": 79,
                              "column": 50
                            }
                          },
                          "test": {
                            "type": "CallExpression",
                            "start": 1958,
                            "end": 1977,
                            "loc": {
                              "start": {
                                "line": 79,
                                "column": 16
                              },
                              "end": {
                                "line": 79,
                                "column": 35
                              }
                            },
                            "callee": {
                              "type": "MemberExpression",
                              "start": 1958,
                              "end": 1974,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 16
                                },
                                "end": {
                                  "line": 79,
                                  "column": 32
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 1958,
                                "end": 1963,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 21
                                  },
                                  "identifierName": "curve"
                                },
                                "name": "curve"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1964,
                                "end": 1974,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 22
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 32
                                  },
                                  "identifierName": "isInfinity"
                                },
                                "name": "isInfinity"
                              },
                              "computed": false
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 1975,
                                "end": 1976,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 34
                                  },
                                  "identifierName": "Q"
                                },
                                "name": "Q"
                              }
                            ]
                          },
                          "consequent": {
                            "type": "ReturnStatement",
                            "start": 1979,
                            "end": 1992,
                            "loc": {
                              "start": {
                                "line": 79,
                                "column": 37
                              },
                              "end": {
                                "line": 79,
                                "column": 50
                              }
                            },
                            "argument": {
                              "type": "BooleanLiteral",
                              "start": 1986,
                              "end": 1991,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 44
                                },
                                "end": {
                                  "line": 79,
                                  "column": 49
                                }
                              },
                              "value": false
                            }
                          },
                          "alternate": null
                        },
                        {
                          "type": "ExpressionStatement",
                          "start": 2006,
                          "end": 2027,
                          "loc": {
                            "start": {
                              "line": 81,
                              "column": 12
                            },
                            "end": {
                              "line": 81,
                              "column": 33
                            }
                          },
                          "expression": {
                            "type": "AssignmentExpression",
                            "start": 2006,
                            "end": 2026,
                            "loc": {
                              "start": {
                                "line": 81,
                                "column": 12
                              },
                              "end": {
                                "line": 81,
                                "column": 32
                              }
                            },
                            "operator": "=",
                            "left": {
                              "type": "Identifier",
                              "start": 2006,
                              "end": 2007,
                              "loc": {
                                "start": {
                                  "line": 81,
                                  "column": 12
                                },
                                "end": {
                                  "line": 81,
                                  "column": 13
                                },
                                "identifierName": "r"
                              },
                              "name": "r"
                            },
                            "right": {
                              "type": "CallExpression",
                              "start": 2010,
                              "end": 2026,
                              "loc": {
                                "start": {
                                  "line": 81,
                                  "column": 16
                                },
                                "end": {
                                  "line": 81,
                                  "column": 32
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 2010,
                                "end": 2023,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 29
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2010,
                                  "end": 2019,
                                  "loc": {
                                    "start": {
                                      "line": 81,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 81,
                                      "column": 25
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 2010,
                                    "end": 2011,
                                    "loc": {
                                      "start": {
                                        "line": 81,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 81,
                                        "column": 17
                                      },
                                      "identifierName": "Q"
                                    },
                                    "name": "Q"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2012,
                                    "end": 2019,
                                    "loc": {
                                      "start": {
                                        "line": 81,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 81,
                                        "column": 25
                                      },
                                      "identifierName": "affineX"
                                    },
                                    "name": "affineX"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2020,
                                  "end": 2023,
                                  "loc": {
                                    "start": {
                                      "line": 81,
                                      "column": 26
                                    },
                                    "end": {
                                      "line": 81,
                                      "column": 29
                                    },
                                    "identifierName": "mod"
                                  },
                                  "name": "mod"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "Identifier",
                                  "start": 2024,
                                  "end": 2025,
                                  "loc": {
                                    "start": {
                                      "line": 81,
                                      "column": 30
                                    },
                                    "end": {
                                      "line": 81,
                                      "column": 31
                                    },
                                    "identifierName": "n"
                                  },
                                  "name": "n"
                                }
                              ]
                            }
                          }
                        },
                        {
                          "type": "IfStatement",
                          "start": 2040,
                          "end": 2075,
                          "loc": {
                            "start": {
                              "line": 82,
                              "column": 12
                            },
                            "end": {
                              "line": 82,
                              "column": 47
                            }
                          },
                          "test": {
                            "type": "BinaryExpression",
                            "start": 2044,
                            "end": 2060,
                            "loc": {
                              "start": {
                                "line": 82,
                                "column": 16
                              },
                              "end": {
                                "line": 82,
                                "column": 32
                              }
                            },
                            "left": {
                              "type": "CallExpression",
                              "start": 2044,
                              "end": 2054,
                              "loc": {
                                "start": {
                                  "line": 82,
                                  "column": 16
                                },
                                "end": {
                                  "line": 82,
                                  "column": 26
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 2044,
                                "end": 2052,
                                "loc": {
                                  "start": {
                                    "line": 82,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 82,
                                    "column": 24
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2044,
                                  "end": 2045,
                                  "loc": {
                                    "start": {
                                      "line": 82,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 82,
                                      "column": 17
                                    },
                                    "identifierName": "r"
                                  },
                                  "name": "r"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2046,
                                  "end": 2052,
                                  "loc": {
                                    "start": {
                                      "line": 82,
                                      "column": 18
                                    },
                                    "end": {
                                      "line": 82,
                                      "column": 24
                                    },
                                    "identifierName": "signum"
                                  },
                                  "name": "signum"
                                },
                                "computed": false
                              },
                              "arguments": []
                            },
                            "operator": "===",
                            "right": {
                              "type": "NumericLiteral",
                              "start": 2059,
                              "end": 2060,
                              "loc": {
                                "start": {
                                  "line": 82,
                                  "column": 31
                                },
                                "end": {
                                  "line": 82,
                                  "column": 32
                                }
                              },
                              "extra": {
                                "rawValue": 0,
                                "raw": "0"
                              },
                              "value": 0
                            }
                          },
                          "consequent": {
                            "type": "ReturnStatement",
                            "start": 2062,
                            "end": 2075,
                            "loc": {
                              "start": {
                                "line": 82,
                                "column": 34
                              },
                              "end": {
                                "line": 82,
                                "column": 47
                              }
                            },
                            "argument": {
                              "type": "BooleanLiteral",
                              "start": 2069,
                              "end": 2074,
                              "loc": {
                                "start": {
                                  "line": 82,
                                  "column": 41
                                },
                                "end": {
                                  "line": 82,
                                  "column": 46
                                }
                              },
                              "value": false
                            }
                          },
                          "alternate": null
                        },
                        {
                          "type": "ExpressionStatement",
                          "start": 2089,
                          "end": 2198,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 12
                            },
                            "end": {
                              "line": 87,
                              "column": 24
                            }
                          },
                          "expression": {
                            "type": "AssignmentExpression",
                            "start": 2089,
                            "end": 2197,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 12
                              },
                              "end": {
                                "line": 87,
                                "column": 23
                              }
                            },
                            "operator": "=",
                            "left": {
                              "type": "Identifier",
                              "start": 2089,
                              "end": 2090,
                              "loc": {
                                "start": {
                                  "line": 84,
                                  "column": 12
                                },
                                "end": {
                                  "line": 84,
                                  "column": 13
                                },
                                "identifierName": "s"
                              },
                              "name": "s"
                            },
                            "right": {
                              "type": "CallExpression",
                              "start": 2093,
                              "end": 2197,
                              "loc": {
                                "start": {
                                  "line": 84,
                                  "column": 16
                                },
                                "end": {
                                  "line": 87,
                                  "column": 23
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 2093,
                                "end": 2194,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 87,
                                    "column": 20
                                  }
                                },
                                "object": {
                                  "type": "CallExpression",
                                  "start": 2093,
                                  "end": 2173,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 86,
                                      "column": 47
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 2093,
                                    "end": 2151,
                                    "loc": {
                                      "start": {
                                        "line": 84,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 86,
                                        "column": 25
                                      }
                                    },
                                    "object": {
                                      "type": "CallExpression",
                                      "start": 2093,
                                      "end": 2125,
                                      "loc": {
                                        "start": {
                                          "line": 84,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 85,
                                          "column": 30
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 2093,
                                        "end": 2122,
                                        "loc": {
                                          "start": {
                                            "line": 84,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 27
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2093,
                                          "end": 2094,
                                          "loc": {
                                            "start": {
                                              "line": 84,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 84,
                                              "column": 17
                                            },
                                            "identifierName": "k"
                                          },
                                          "name": "k"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 2112,
                                          "end": 2122,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 27
                                            },
                                            "identifierName": "modInverse"
                                          },
                                          "name": "modInverse"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "Identifier",
                                          "start": 2123,
                                          "end": 2124,
                                          "loc": {
                                            "start": {
                                              "line": 85,
                                              "column": 28
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 29
                                            },
                                            "identifierName": "n"
                                          },
                                          "name": "n"
                                        }
                                      ]
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2143,
                                      "end": 2151,
                                      "loc": {
                                        "start": {
                                          "line": 86,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 86,
                                          "column": 25
                                        },
                                        "identifierName": "multiply"
                                      },
                                      "name": "multiply"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "CallExpression",
                                      "start": 2152,
                                      "end": 2172,
                                      "loc": {
                                        "start": {
                                          "line": 86,
                                          "column": 26
                                        },
                                        "end": {
                                          "line": 86,
                                          "column": 46
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 2152,
                                        "end": 2157,
                                        "loc": {
                                          "start": {
                                            "line": 86,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 86,
                                            "column": 31
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2152,
                                          "end": 2153,
                                          "loc": {
                                            "start": {
                                              "line": 86,
                                              "column": 26
                                            },
                                            "end": {
                                              "line": 86,
                                              "column": 27
                                            },
                                            "identifierName": "e"
                                          },
                                          "name": "e"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 2154,
                                          "end": 2157,
                                          "loc": {
                                            "start": {
                                              "line": 86,
                                              "column": 28
                                            },
                                            "end": {
                                              "line": 86,
                                              "column": 31
                                            },
                                            "identifierName": "add"
                                          },
                                          "name": "add"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "CallExpression",
                                          "start": 2158,
                                          "end": 2171,
                                          "loc": {
                                            "start": {
                                              "line": 86,
                                              "column": 32
                                            },
                                            "end": {
                                              "line": 86,
                                              "column": 45
                                            }
                                          },
                                          "callee": {
                                            "type": "MemberExpression",
                                            "start": 2158,
                                            "end": 2168,
                                            "loc": {
                                              "start": {
                                                "line": 86,
                                                "column": 32
                                              },
                                              "end": {
                                                "line": 86,
                                                "column": 42
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 2158,
                                              "end": 2159,
                                              "loc": {
                                                "start": {
                                                  "line": 86,
                                                  "column": 32
                                                },
                                                "end": {
                                                  "line": 86,
                                                  "column": 33
                                                },
                                                "identifierName": "d"
                                              },
                                              "name": "d"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 2160,
                                              "end": 2168,
                                              "loc": {
                                                "start": {
                                                  "line": 86,
                                                  "column": 34
                                                },
                                                "end": {
                                                  "line": 86,
                                                  "column": 42
                                                },
                                                "identifierName": "multiply"
                                              },
                                              "name": "multiply"
                                            },
                                            "computed": false
                                          },
                                          "arguments": [
                                            {
                                              "type": "Identifier",
                                              "start": 2169,
                                              "end": 2170,
                                              "loc": {
                                                "start": {
                                                  "line": 86,
                                                  "column": 43
                                                },
                                                "end": {
                                                  "line": 86,
                                                  "column": 44
                                                },
                                                "identifierName": "r"
                                              },
                                              "name": "r"
                                            }
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2191,
                                  "end": 2194,
                                  "loc": {
                                    "start": {
                                      "line": 87,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 87,
                                      "column": 20
                                    },
                                    "identifierName": "mod"
                                  },
                                  "name": "mod"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "Identifier",
                                  "start": 2195,
                                  "end": 2196,
                                  "loc": {
                                    "start": {
                                      "line": 87,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 87,
                                      "column": 22
                                    },
                                    "identifierName": "n"
                                  },
                                  "name": "n"
                                }
                              ]
                            }
                          }
                        },
                        {
                          "type": "IfStatement",
                          "start": 2211,
                          "end": 2246,
                          "loc": {
                            "start": {
                              "line": 88,
                              "column": 12
                            },
                            "end": {
                              "line": 88,
                              "column": 47
                            }
                          },
                          "test": {
                            "type": "BinaryExpression",
                            "start": 2215,
                            "end": 2231,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 16
                              },
                              "end": {
                                "line": 88,
                                "column": 32
                              }
                            },
                            "left": {
                              "type": "CallExpression",
                              "start": 2215,
                              "end": 2225,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 16
                                },
                                "end": {
                                  "line": 88,
                                  "column": 26
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 2215,
                                "end": 2223,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 24
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 2215,
                                  "end": 2216,
                                  "loc": {
                                    "start": {
                                      "line": 88,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 88,
                                      "column": 17
                                    },
                                    "identifierName": "s"
                                  },
                                  "name": "s"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2217,
                                  "end": 2223,
                                  "loc": {
                                    "start": {
                                      "line": 88,
                                      "column": 18
                                    },
                                    "end": {
                                      "line": 88,
                                      "column": 24
                                    },
                                    "identifierName": "signum"
                                  },
                                  "name": "signum"
                                },
                                "computed": false
                              },
                              "arguments": []
                            },
                            "operator": "===",
                            "right": {
                              "type": "NumericLiteral",
                              "start": 2230,
                              "end": 2231,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 31
                                },
                                "end": {
                                  "line": 88,
                                  "column": 32
                                }
                              },
                              "extra": {
                                "rawValue": 0,
                                "raw": "0"
                              },
                              "value": 0
                            }
                          },
                          "consequent": {
                            "type": "ReturnStatement",
                            "start": 2233,
                            "end": 2246,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 34
                              },
                              "end": {
                                "line": 88,
                                "column": 47
                              }
                            },
                            "argument": {
                              "type": "BooleanLiteral",
                              "start": 2240,
                              "end": 2245,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 41
                                },
                                "end": {
                                  "line": 88,
                                  "column": 46
                                }
                              },
                              "value": false
                            }
                          },
                          "alternate": null
                        },
                        {
                          "type": "ReturnStatement",
                          "start": 2260,
                          "end": 2272,
                          "loc": {
                            "start": {
                              "line": 90,
                              "column": 12
                            },
                            "end": {
                              "line": 90,
                              "column": 24
                            }
                          },
                          "argument": {
                            "type": "BooleanLiteral",
                            "start": 2267,
                            "end": 2271,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 19
                              },
                              "end": {
                                "line": 90,
                                "column": 23
                              }
                            },
                            "value": true
                          }
                        }
                      ],
                      "directives": []
                    }
                  },
                  {
                    "type": "Identifier",
                    "start": 2292,
                    "end": 2297,
                    "loc": {
                      "start": {
                        "line": 92,
                        "column": 8
                      },
                      "end": {
                        "line": 92,
                        "column": 13
                      },
                      "identifierName": "nonce"
                    },
                    "name": "nonce"
                  }
                ]
              }
            },
            {
              "type": "VariableDeclaration",
              "start": 2310,
              "end": 2343,
              "loc": {
                "start": {
                  "line": 95,
                  "column": 4
                },
                "end": {
                  "line": 95,
                  "column": 37
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2314,
                  "end": 2342,
                  "loc": {
                    "start": {
                      "line": 95,
                      "column": 8
                    },
                    "end": {
                      "line": 95,
                      "column": 36
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2314,
                    "end": 2324,
                    "loc": {
                      "start": {
                        "line": 95,
                        "column": 8
                      },
                      "end": {
                        "line": 95,
                        "column": 18
                      },
                      "identifierName": "N_OVER_TWO"
                    },
                    "name": "N_OVER_TWO"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 2327,
                    "end": 2342,
                    "loc": {
                      "start": {
                        "line": 95,
                        "column": 21
                      },
                      "end": {
                        "line": 95,
                        "column": 36
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2327,
                      "end": 2339,
                      "loc": {
                        "start": {
                          "line": 95,
                          "column": 21
                        },
                        "end": {
                          "line": 95,
                          "column": 33
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2327,
                        "end": 2328,
                        "loc": {
                          "start": {
                            "line": 95,
                            "column": 21
                          },
                          "end": {
                            "line": 95,
                            "column": 22
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2329,
                        "end": 2339,
                        "loc": {
                          "start": {
                            "line": 95,
                            "column": 23
                          },
                          "end": {
                            "line": 95,
                            "column": 33
                          },
                          "identifierName": "shiftRight"
                        },
                        "name": "shiftRight"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "NumericLiteral",
                        "start": 2340,
                        "end": 2341,
                        "loc": {
                          "start": {
                            "line": 95,
                            "column": 34
                          },
                          "end": {
                            "line": 95,
                            "column": 35
                          }
                        },
                        "extra": {
                          "rawValue": 1,
                          "raw": "1"
                        },
                        "value": 1
                      }
                    ]
                  }
                }
              ],
              "kind": "let",
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " enforce low S values, see bip62: 'low s values in signatures'",
                  "start": 2349,
                  "end": 2413,
                  "loc": {
                    "start": {
                      "line": 97,
                      "column": 4
                    },
                    "end": {
                      "line": 97,
                      "column": 68
                    }
                  }
                }
              ]
            },
            {
              "type": "IfStatement",
              "start": 2418,
              "end": 2485,
              "loc": {
                "start": {
                  "line": 98,
                  "column": 4
                },
                "end": {
                  "line": 100,
                  "column": 5
                }
              },
              "test": {
                "type": "BinaryExpression",
                "start": 2422,
                "end": 2449,
                "loc": {
                  "start": {
                    "line": 98,
                    "column": 8
                  },
                  "end": {
                    "line": 98,
                    "column": 35
                  }
                },
                "left": {
                  "type": "CallExpression",
                  "start": 2422,
                  "end": 2445,
                  "loc": {
                    "start": {
                      "line": 98,
                      "column": 8
                    },
                    "end": {
                      "line": 98,
                      "column": 31
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 2422,
                    "end": 2433,
                    "loc": {
                      "start": {
                        "line": 98,
                        "column": 8
                      },
                      "end": {
                        "line": 98,
                        "column": 19
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 2422,
                      "end": 2423,
                      "loc": {
                        "start": {
                          "line": 98,
                          "column": 8
                        },
                        "end": {
                          "line": 98,
                          "column": 9
                        },
                        "identifierName": "s"
                      },
                      "name": "s",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 2424,
                      "end": 2433,
                      "loc": {
                        "start": {
                          "line": 98,
                          "column": 10
                        },
                        "end": {
                          "line": 98,
                          "column": 19
                        },
                        "identifierName": "compareTo"
                      },
                      "name": "compareTo"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 2434,
                      "end": 2444,
                      "loc": {
                        "start": {
                          "line": 98,
                          "column": 20
                        },
                        "end": {
                          "line": 98,
                          "column": 30
                        },
                        "identifierName": "N_OVER_TWO"
                      },
                      "name": "N_OVER_TWO"
                    }
                  ],
                  "leadingComments": null
                },
                "operator": ">",
                "right": {
                  "type": "NumericLiteral",
                  "start": 2448,
                  "end": 2449,
                  "loc": {
                    "start": {
                      "line": 98,
                      "column": 34
                    },
                    "end": {
                      "line": 98,
                      "column": 35
                    }
                  },
                  "extra": {
                    "rawValue": 0,
                    "raw": "0"
                  },
                  "value": 0
                },
                "leadingComments": null
              },
              "consequent": {
                "type": "BlockStatement",
                "start": 2451,
                "end": 2485,
                "loc": {
                  "start": {
                    "line": 98,
                    "column": 37
                  },
                  "end": {
                    "line": 100,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 2461,
                    "end": 2479,
                    "loc": {
                      "start": {
                        "line": 99,
                        "column": 8
                      },
                      "end": {
                        "line": 99,
                        "column": 26
                      }
                    },
                    "expression": {
                      "type": "AssignmentExpression",
                      "start": 2461,
                      "end": 2478,
                      "loc": {
                        "start": {
                          "line": 99,
                          "column": 8
                        },
                        "end": {
                          "line": 99,
                          "column": 25
                        }
                      },
                      "operator": "=",
                      "left": {
                        "type": "Identifier",
                        "start": 2461,
                        "end": 2462,
                        "loc": {
                          "start": {
                            "line": 99,
                            "column": 8
                          },
                          "end": {
                            "line": 99,
                            "column": 9
                          },
                          "identifierName": "s"
                        },
                        "name": "s"
                      },
                      "right": {
                        "type": "CallExpression",
                        "start": 2465,
                        "end": 2478,
                        "loc": {
                          "start": {
                            "line": 99,
                            "column": 12
                          },
                          "end": {
                            "line": 99,
                            "column": 25
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 2465,
                          "end": 2475,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 12
                            },
                            "end": {
                              "line": 99,
                              "column": 22
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2465,
                            "end": 2466,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 12
                              },
                              "end": {
                                "line": 99,
                                "column": 13
                              },
                              "identifierName": "n"
                            },
                            "name": "n"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2467,
                            "end": 2475,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 14
                              },
                              "end": {
                                "line": 99,
                                "column": 22
                              },
                              "identifierName": "subtract"
                            },
                            "name": "subtract"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 2476,
                            "end": 2477,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 23
                              },
                              "end": {
                                "line": 99,
                                "column": 24
                              },
                              "identifierName": "s"
                            },
                            "name": "s"
                          }
                        ]
                      }
                    }
                  }
                ],
                "directives": []
              },
              "alternate": null,
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " enforce low S values, see bip62: 'low s values in signatures'",
                  "start": 2349,
                  "end": 2413,
                  "loc": {
                    "start": {
                      "line": 97,
                      "column": 4
                    },
                    "end": {
                      "line": 97,
                      "column": 68
                    }
                  }
                }
              ]
            },
            {
              "type": "ReturnStatement",
              "start": 2491,
              "end": 2520,
              "loc": {
                "start": {
                  "line": 102,
                  "column": 4
                },
                "end": {
                  "line": 102,
                  "column": 33
                }
              },
              "argument": {
                "type": "NewExpression",
                "start": 2498,
                "end": 2519,
                "loc": {
                  "start": {
                    "line": 102,
                    "column": 11
                  },
                  "end": {
                    "line": 102,
                    "column": 32
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 2502,
                  "end": 2513,
                  "loc": {
                    "start": {
                      "line": 102,
                      "column": 15
                    },
                    "end": {
                      "line": 102,
                      "column": 26
                    },
                    "identifierName": "ECSignature"
                  },
                  "name": "ECSignature"
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 2514,
                    "end": 2515,
                    "loc": {
                      "start": {
                        "line": 102,
                        "column": 27
                      },
                      "end": {
                        "line": 102,
                        "column": 28
                      },
                      "identifierName": "r"
                    },
                    "name": "r"
                  },
                  {
                    "type": "Identifier",
                    "start": 2517,
                    "end": 2518,
                    "loc": {
                      "start": {
                        "line": 102,
                        "column": 30
                      },
                      "end": {
                        "line": 102,
                        "column": 31
                      },
                      "identifierName": "s"
                    },
                    "name": "s"
                  }
                ]
              }
            }
          ],
          "directives": []
        },
        "name": "_",
        "leadingComments": [],
        "trailingComments": []
      },
      {
        "type": "Identifier",
        "start": 2524,
        "end": 3472,
        "loc": {
          "start": {
            "line": 105,
            "column": 0
          },
          "end": {
            "line": 138,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 2533,
          "end": 2542,
          "loc": {
            "start": {
              "line": 105,
              "column": 9
            },
            "end": {
              "line": 105,
              "column": 18
            },
            "identifierName": "verifyRaw"
          },
          "name": "verifyRaw"
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 2543,
            "end": 2548,
            "loc": {
              "start": {
                "line": 105,
                "column": 19
              },
              "end": {
                "line": 105,
                "column": 24
              },
              "identifierName": "curve"
            },
            "name": "curve"
          },
          {
            "type": "Identifier",
            "start": 2550,
            "end": 2551,
            "loc": {
              "start": {
                "line": 105,
                "column": 26
              },
              "end": {
                "line": 105,
                "column": 27
              },
              "identifierName": "e"
            },
            "name": "e"
          },
          {
            "type": "Identifier",
            "start": 2553,
            "end": 2562,
            "loc": {
              "start": {
                "line": 105,
                "column": 29
              },
              "end": {
                "line": 105,
                "column": 38
              },
              "identifierName": "signature"
            },
            "name": "signature"
          },
          {
            "type": "Identifier",
            "start": 2564,
            "end": 2565,
            "loc": {
              "start": {
                "line": 105,
                "column": 40
              },
              "end": {
                "line": 105,
                "column": 41
              },
              "identifierName": "Q"
            },
            "name": "Q"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 2567,
          "end": 3472,
          "loc": {
            "start": {
              "line": 105,
              "column": 43
            },
            "end": {
              "line": 138,
              "column": 1
            }
          },
          "body": [
            {
              "type": "VariableDeclaration",
              "start": 2573,
              "end": 2589,
              "loc": {
                "start": {
                  "line": 106,
                  "column": 4
                },
                "end": {
                  "line": 106,
                  "column": 20
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2577,
                  "end": 2588,
                  "loc": {
                    "start": {
                      "line": 106,
                      "column": 8
                    },
                    "end": {
                      "line": 106,
                      "column": 19
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2577,
                    "end": 2578,
                    "loc": {
                      "start": {
                        "line": 106,
                        "column": 8
                      },
                      "end": {
                        "line": 106,
                        "column": 9
                      },
                      "identifierName": "n"
                    },
                    "name": "n"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 2581,
                    "end": 2588,
                    "loc": {
                      "start": {
                        "line": 106,
                        "column": 12
                      },
                      "end": {
                        "line": 106,
                        "column": 19
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 2581,
                      "end": 2586,
                      "loc": {
                        "start": {
                          "line": 106,
                          "column": 12
                        },
                        "end": {
                          "line": 106,
                          "column": 17
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 2587,
                      "end": 2588,
                      "loc": {
                        "start": {
                          "line": 106,
                          "column": 18
                        },
                        "end": {
                          "line": 106,
                          "column": 19
                        },
                        "identifierName": "n"
                      },
                      "name": "n"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 2594,
              "end": 2610,
              "loc": {
                "start": {
                  "line": 107,
                  "column": 4
                },
                "end": {
                  "line": 107,
                  "column": 20
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2598,
                  "end": 2609,
                  "loc": {
                    "start": {
                      "line": 107,
                      "column": 8
                    },
                    "end": {
                      "line": 107,
                      "column": 19
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2598,
                    "end": 2599,
                    "loc": {
                      "start": {
                        "line": 107,
                        "column": 8
                      },
                      "end": {
                        "line": 107,
                        "column": 9
                      },
                      "identifierName": "G"
                    },
                    "name": "G"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 2602,
                    "end": 2609,
                    "loc": {
                      "start": {
                        "line": 107,
                        "column": 12
                      },
                      "end": {
                        "line": 107,
                        "column": 19
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 2602,
                      "end": 2607,
                      "loc": {
                        "start": {
                          "line": 107,
                          "column": 12
                        },
                        "end": {
                          "line": 107,
                          "column": 17
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 2608,
                      "end": 2609,
                      "loc": {
                        "start": {
                          "line": 107,
                          "column": 18
                        },
                        "end": {
                          "line": 107,
                          "column": 19
                        },
                        "identifierName": "G"
                      },
                      "name": "G"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 2616,
              "end": 2636,
              "loc": {
                "start": {
                  "line": 109,
                  "column": 4
                },
                "end": {
                  "line": 109,
                  "column": 24
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2620,
                  "end": 2635,
                  "loc": {
                    "start": {
                      "line": 109,
                      "column": 8
                    },
                    "end": {
                      "line": 109,
                      "column": 23
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2620,
                    "end": 2621,
                    "loc": {
                      "start": {
                        "line": 109,
                        "column": 8
                      },
                      "end": {
                        "line": 109,
                        "column": 9
                      },
                      "identifierName": "r"
                    },
                    "name": "r"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 2624,
                    "end": 2635,
                    "loc": {
                      "start": {
                        "line": 109,
                        "column": 12
                      },
                      "end": {
                        "line": 109,
                        "column": 23
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 2624,
                      "end": 2633,
                      "loc": {
                        "start": {
                          "line": 109,
                          "column": 12
                        },
                        "end": {
                          "line": 109,
                          "column": 21
                        },
                        "identifierName": "signature"
                      },
                      "name": "signature"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 2634,
                      "end": 2635,
                      "loc": {
                        "start": {
                          "line": 109,
                          "column": 22
                        },
                        "end": {
                          "line": 109,
                          "column": 23
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 2641,
              "end": 2661,
              "loc": {
                "start": {
                  "line": 110,
                  "column": 4
                },
                "end": {
                  "line": 110,
                  "column": 24
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2645,
                  "end": 2660,
                  "loc": {
                    "start": {
                      "line": 110,
                      "column": 8
                    },
                    "end": {
                      "line": 110,
                      "column": 23
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2645,
                    "end": 2646,
                    "loc": {
                      "start": {
                        "line": 110,
                        "column": 8
                      },
                      "end": {
                        "line": 110,
                        "column": 9
                      },
                      "identifierName": "s"
                    },
                    "name": "s"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 2649,
                    "end": 2660,
                    "loc": {
                      "start": {
                        "line": 110,
                        "column": 12
                      },
                      "end": {
                        "line": 110,
                        "column": 23
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 2649,
                      "end": 2658,
                      "loc": {
                        "start": {
                          "line": 110,
                          "column": 12
                        },
                        "end": {
                          "line": 110,
                          "column": 21
                        },
                        "identifierName": "signature"
                      },
                      "name": "signature"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 2659,
                      "end": 2660,
                      "loc": {
                        "start": {
                          "line": 110,
                          "column": 22
                        },
                        "end": {
                          "line": 110,
                          "column": 23
                        },
                        "identifierName": "s"
                      },
                      "name": "s"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var",
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]",
                  "start": 2667,
                  "end": 2736,
                  "loc": {
                    "start": {
                      "line": 112,
                      "column": 4
                    },
                    "end": {
                      "line": 112,
                      "column": 73
                    }
                  }
                }
              ]
            },
            {
              "type": "IfStatement",
              "start": 2741,
              "end": 2798,
              "loc": {
                "start": {
                  "line": 113,
                  "column": 4
                },
                "end": {
                  "line": 113,
                  "column": 61
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 2745,
                "end": 2783,
                "loc": {
                  "start": {
                    "line": 113,
                    "column": 8
                  },
                  "end": {
                    "line": 113,
                    "column": 46
                  }
                },
                "left": {
                  "type": "BinaryExpression",
                  "start": 2745,
                  "end": 2760,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 8
                    },
                    "end": {
                      "line": 113,
                      "column": 23
                    }
                  },
                  "left": {
                    "type": "CallExpression",
                    "start": 2745,
                    "end": 2755,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 8
                      },
                      "end": {
                        "line": 113,
                        "column": 18
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2745,
                      "end": 2753,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 8
                        },
                        "end": {
                          "line": 113,
                          "column": 16
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2745,
                        "end": 2746,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 8
                          },
                          "end": {
                            "line": 113,
                            "column": 9
                          },
                          "identifierName": "r"
                        },
                        "name": "r",
                        "leadingComments": null
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2747,
                        "end": 2753,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 10
                          },
                          "end": {
                            "line": 113,
                            "column": 16
                          },
                          "identifierName": "signum"
                        },
                        "name": "signum"
                      },
                      "computed": false,
                      "leadingComments": null
                    },
                    "arguments": [],
                    "leadingComments": null
                  },
                  "operator": "<=",
                  "right": {
                    "type": "NumericLiteral",
                    "start": 2759,
                    "end": 2760,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 22
                      },
                      "end": {
                        "line": 113,
                        "column": 23
                      }
                    },
                    "extra": {
                      "rawValue": 0,
                      "raw": "0"
                    },
                    "value": 0
                  },
                  "leadingComments": null
                },
                "operator": "||",
                "right": {
                  "type": "BinaryExpression",
                  "start": 2764,
                  "end": 2783,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 27
                    },
                    "end": {
                      "line": 113,
                      "column": 46
                    }
                  },
                  "left": {
                    "type": "CallExpression",
                    "start": 2764,
                    "end": 2778,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 27
                      },
                      "end": {
                        "line": 113,
                        "column": 41
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2764,
                      "end": 2775,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 27
                        },
                        "end": {
                          "line": 113,
                          "column": 38
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2764,
                        "end": 2765,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 27
                          },
                          "end": {
                            "line": 113,
                            "column": 28
                          },
                          "identifierName": "r"
                        },
                        "name": "r"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2766,
                        "end": 2775,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 29
                          },
                          "end": {
                            "line": 113,
                            "column": 38
                          },
                          "identifierName": "compareTo"
                        },
                        "name": "compareTo"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 2776,
                        "end": 2777,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 39
                          },
                          "end": {
                            "line": 113,
                            "column": 40
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "operator": ">=",
                  "right": {
                    "type": "NumericLiteral",
                    "start": 2782,
                    "end": 2783,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 45
                      },
                      "end": {
                        "line": 113,
                        "column": 46
                      }
                    },
                    "extra": {
                      "rawValue": 0,
                      "raw": "0"
                    },
                    "value": 0
                  }
                },
                "leadingComments": null
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 2785,
                "end": 2798,
                "loc": {
                  "start": {
                    "line": 113,
                    "column": 48
                  },
                  "end": {
                    "line": 113,
                    "column": 61
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 2792,
                  "end": 2797,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 55
                    },
                    "end": {
                      "line": 113,
                      "column": 60
                    }
                  },
                  "value": false
                }
              },
              "alternate": null,
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]",
                  "start": 2667,
                  "end": 2736,
                  "loc": {
                    "start": {
                      "line": 112,
                      "column": 4
                    },
                    "end": {
                      "line": 112,
                      "column": 73
                    }
                  }
                }
              ]
            },
            {
              "type": "IfStatement",
              "start": 2803,
              "end": 2860,
              "loc": {
                "start": {
                  "line": 114,
                  "column": 4
                },
                "end": {
                  "line": 114,
                  "column": 61
                }
              },
              "test": {
                "type": "LogicalExpression",
                "start": 2807,
                "end": 2845,
                "loc": {
                  "start": {
                    "line": 114,
                    "column": 8
                  },
                  "end": {
                    "line": 114,
                    "column": 46
                  }
                },
                "left": {
                  "type": "BinaryExpression",
                  "start": 2807,
                  "end": 2822,
                  "loc": {
                    "start": {
                      "line": 114,
                      "column": 8
                    },
                    "end": {
                      "line": 114,
                      "column": 23
                    }
                  },
                  "left": {
                    "type": "CallExpression",
                    "start": 2807,
                    "end": 2817,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 8
                      },
                      "end": {
                        "line": 114,
                        "column": 18
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2807,
                      "end": 2815,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 8
                        },
                        "end": {
                          "line": 114,
                          "column": 16
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2807,
                        "end": 2808,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 8
                          },
                          "end": {
                            "line": 114,
                            "column": 9
                          },
                          "identifierName": "s"
                        },
                        "name": "s"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2809,
                        "end": 2815,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 10
                          },
                          "end": {
                            "line": 114,
                            "column": 16
                          },
                          "identifierName": "signum"
                        },
                        "name": "signum"
                      },
                      "computed": false
                    },
                    "arguments": []
                  },
                  "operator": "<=",
                  "right": {
                    "type": "NumericLiteral",
                    "start": 2821,
                    "end": 2822,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 22
                      },
                      "end": {
                        "line": 114,
                        "column": 23
                      }
                    },
                    "extra": {
                      "rawValue": 0,
                      "raw": "0"
                    },
                    "value": 0
                  }
                },
                "operator": "||",
                "right": {
                  "type": "BinaryExpression",
                  "start": 2826,
                  "end": 2845,
                  "loc": {
                    "start": {
                      "line": 114,
                      "column": 27
                    },
                    "end": {
                      "line": 114,
                      "column": 46
                    }
                  },
                  "left": {
                    "type": "CallExpression",
                    "start": 2826,
                    "end": 2840,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 27
                      },
                      "end": {
                        "line": 114,
                        "column": 41
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2826,
                      "end": 2837,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 27
                        },
                        "end": {
                          "line": 114,
                          "column": 38
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2826,
                        "end": 2827,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 27
                          },
                          "end": {
                            "line": 114,
                            "column": 28
                          },
                          "identifierName": "s"
                        },
                        "name": "s"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2828,
                        "end": 2837,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 29
                          },
                          "end": {
                            "line": 114,
                            "column": 38
                          },
                          "identifierName": "compareTo"
                        },
                        "name": "compareTo"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 2838,
                        "end": 2839,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 39
                          },
                          "end": {
                            "line": 114,
                            "column": 40
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "operator": ">=",
                  "right": {
                    "type": "NumericLiteral",
                    "start": 2844,
                    "end": 2845,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 45
                      },
                      "end": {
                        "line": 114,
                        "column": 46
                      }
                    },
                    "extra": {
                      "rawValue": 0,
                      "raw": "0"
                    },
                    "value": 0
                  }
                }
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 2847,
                "end": 2860,
                "loc": {
                  "start": {
                    "line": 114,
                    "column": 48
                  },
                  "end": {
                    "line": 114,
                    "column": 61
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 2854,
                  "end": 2859,
                  "loc": {
                    "start": {
                      "line": 114,
                      "column": 55
                    },
                    "end": {
                      "line": 114,
                      "column": 60
                    }
                  },
                  "value": false
                },
                "trailingComments": null
              },
              "alternate": null,
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " c = s^-1 mod n",
                  "start": 2866,
                  "end": 2883,
                  "loc": {
                    "start": {
                      "line": 116,
                      "column": 4
                    },
                    "end": {
                      "line": 116,
                      "column": 21
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 2888,
              "end": 2912,
              "loc": {
                "start": {
                  "line": 117,
                  "column": 4
                },
                "end": {
                  "line": 117,
                  "column": 28
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2892,
                  "end": 2911,
                  "loc": {
                    "start": {
                      "line": 117,
                      "column": 8
                    },
                    "end": {
                      "line": 117,
                      "column": 27
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2892,
                    "end": 2893,
                    "loc": {
                      "start": {
                        "line": 117,
                        "column": 8
                      },
                      "end": {
                        "line": 117,
                        "column": 9
                      },
                      "identifierName": "c"
                    },
                    "name": "c",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 2896,
                    "end": 2911,
                    "loc": {
                      "start": {
                        "line": 117,
                        "column": 12
                      },
                      "end": {
                        "line": 117,
                        "column": 27
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2896,
                      "end": 2908,
                      "loc": {
                        "start": {
                          "line": 117,
                          "column": 12
                        },
                        "end": {
                          "line": 117,
                          "column": 24
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2896,
                        "end": 2897,
                        "loc": {
                          "start": {
                            "line": 117,
                            "column": 12
                          },
                          "end": {
                            "line": 117,
                            "column": 13
                          },
                          "identifierName": "s"
                        },
                        "name": "s"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2898,
                        "end": 2908,
                        "loc": {
                          "start": {
                            "line": 117,
                            "column": 14
                          },
                          "end": {
                            "line": 117,
                            "column": 24
                          },
                          "identifierName": "modInverse"
                        },
                        "name": "modInverse"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 2909,
                        "end": 2910,
                        "loc": {
                          "start": {
                            "line": 117,
                            "column": 25
                          },
                          "end": {
                            "line": 117,
                            "column": 26
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " c = s^-1 mod n",
                  "start": 2866,
                  "end": 2883,
                  "loc": {
                    "start": {
                      "line": 116,
                      "column": 4
                    },
                    "end": {
                      "line": 116,
                      "column": 21
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.4 Compute u1 = es^−1 mod n",
                  "start": 2918,
                  "end": 2951,
                  "loc": {
                    "start": {
                      "line": 119,
                      "column": 4
                    },
                    "end": {
                      "line": 119,
                      "column": 37
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": "               u2 = rs^−1 mod n",
                  "start": 2956,
                  "end": 2989,
                  "loc": {
                    "start": {
                      "line": 120,
                      "column": 4
                    },
                    "end": {
                      "line": 120,
                      "column": 37
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 2994,
              "end": 3024,
              "loc": {
                "start": {
                  "line": 121,
                  "column": 4
                },
                "end": {
                  "line": 121,
                  "column": 34
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 2998,
                  "end": 3023,
                  "loc": {
                    "start": {
                      "line": 121,
                      "column": 8
                    },
                    "end": {
                      "line": 121,
                      "column": 33
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 2998,
                    "end": 3000,
                    "loc": {
                      "start": {
                        "line": 121,
                        "column": 8
                      },
                      "end": {
                        "line": 121,
                        "column": 10
                      },
                      "identifierName": "u1"
                    },
                    "name": "u1",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 3003,
                    "end": 3023,
                    "loc": {
                      "start": {
                        "line": 121,
                        "column": 13
                      },
                      "end": {
                        "line": 121,
                        "column": 33
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 3003,
                      "end": 3020,
                      "loc": {
                        "start": {
                          "line": 121,
                          "column": 13
                        },
                        "end": {
                          "line": 121,
                          "column": 30
                        }
                      },
                      "object": {
                        "type": "CallExpression",
                        "start": 3003,
                        "end": 3016,
                        "loc": {
                          "start": {
                            "line": 121,
                            "column": 13
                          },
                          "end": {
                            "line": 121,
                            "column": 26
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 3003,
                          "end": 3013,
                          "loc": {
                            "start": {
                              "line": 121,
                              "column": 13
                            },
                            "end": {
                              "line": 121,
                              "column": 23
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3003,
                            "end": 3004,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 13
                              },
                              "end": {
                                "line": 121,
                                "column": 14
                              },
                              "identifierName": "e"
                            },
                            "name": "e"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3005,
                            "end": 3013,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 15
                              },
                              "end": {
                                "line": 121,
                                "column": 23
                              },
                              "identifierName": "multiply"
                            },
                            "name": "multiply"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 3014,
                            "end": 3015,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 24
                              },
                              "end": {
                                "line": 121,
                                "column": 25
                              },
                              "identifierName": "c"
                            },
                            "name": "c"
                          }
                        ]
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3017,
                        "end": 3020,
                        "loc": {
                          "start": {
                            "line": 121,
                            "column": 27
                          },
                          "end": {
                            "line": 121,
                            "column": 30
                          },
                          "identifierName": "mod"
                        },
                        "name": "mod"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3021,
                        "end": 3022,
                        "loc": {
                          "start": {
                            "line": 121,
                            "column": 31
                          },
                          "end": {
                            "line": 121,
                            "column": 32
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.4 Compute u1 = es^−1 mod n",
                  "start": 2918,
                  "end": 2951,
                  "loc": {
                    "start": {
                      "line": 119,
                      "column": 4
                    },
                    "end": {
                      "line": 119,
                      "column": 37
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": "               u2 = rs^−1 mod n",
                  "start": 2956,
                  "end": 2989,
                  "loc": {
                    "start": {
                      "line": 120,
                      "column": 4
                    },
                    "end": {
                      "line": 120,
                      "column": 37
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 3029,
              "end": 3059,
              "loc": {
                "start": {
                  "line": 122,
                  "column": 4
                },
                "end": {
                  "line": 122,
                  "column": 34
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3033,
                  "end": 3058,
                  "loc": {
                    "start": {
                      "line": 122,
                      "column": 8
                    },
                    "end": {
                      "line": 122,
                      "column": 33
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3033,
                    "end": 3035,
                    "loc": {
                      "start": {
                        "line": 122,
                        "column": 8
                      },
                      "end": {
                        "line": 122,
                        "column": 10
                      },
                      "identifierName": "u2"
                    },
                    "name": "u2"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 3038,
                    "end": 3058,
                    "loc": {
                      "start": {
                        "line": 122,
                        "column": 13
                      },
                      "end": {
                        "line": 122,
                        "column": 33
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 3038,
                      "end": 3055,
                      "loc": {
                        "start": {
                          "line": 122,
                          "column": 13
                        },
                        "end": {
                          "line": 122,
                          "column": 30
                        }
                      },
                      "object": {
                        "type": "CallExpression",
                        "start": 3038,
                        "end": 3051,
                        "loc": {
                          "start": {
                            "line": 122,
                            "column": 13
                          },
                          "end": {
                            "line": 122,
                            "column": 26
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 3038,
                          "end": 3048,
                          "loc": {
                            "start": {
                              "line": 122,
                              "column": 13
                            },
                            "end": {
                              "line": 122,
                              "column": 23
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3038,
                            "end": 3039,
                            "loc": {
                              "start": {
                                "line": 122,
                                "column": 13
                              },
                              "end": {
                                "line": 122,
                                "column": 14
                              },
                              "identifierName": "r"
                            },
                            "name": "r"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3040,
                            "end": 3048,
                            "loc": {
                              "start": {
                                "line": 122,
                                "column": 15
                              },
                              "end": {
                                "line": 122,
                                "column": 23
                              },
                              "identifierName": "multiply"
                            },
                            "name": "multiply"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 3049,
                            "end": 3050,
                            "loc": {
                              "start": {
                                "line": 122,
                                "column": 24
                              },
                              "end": {
                                "line": 122,
                                "column": 25
                              },
                              "identifierName": "c"
                            },
                            "name": "c"
                          }
                        ]
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3052,
                        "end": 3055,
                        "loc": {
                          "start": {
                            "line": 122,
                            "column": 27
                          },
                          "end": {
                            "line": 122,
                            "column": 30
                          },
                          "identifierName": "mod"
                        },
                        "name": "mod"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3056,
                        "end": 3057,
                        "loc": {
                          "start": {
                            "line": 122,
                            "column": 31
                          },
                          "end": {
                            "line": 122,
                            "column": 32
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  }
                }
              ],
              "kind": "var",
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.5 Compute R = (xR, yR) = u1G + u2Q",
                  "start": 3065,
                  "end": 3106,
                  "loc": {
                    "start": {
                      "line": 124,
                      "column": 4
                    },
                    "end": {
                      "line": 124,
                      "column": 45
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 3111,
              "end": 3144,
              "loc": {
                "start": {
                  "line": 125,
                  "column": 4
                },
                "end": {
                  "line": 125,
                  "column": 37
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3115,
                  "end": 3143,
                  "loc": {
                    "start": {
                      "line": 125,
                      "column": 8
                    },
                    "end": {
                      "line": 125,
                      "column": 36
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3115,
                    "end": 3116,
                    "loc": {
                      "start": {
                        "line": 125,
                        "column": 8
                      },
                      "end": {
                        "line": 125,
                        "column": 9
                      },
                      "identifierName": "R"
                    },
                    "name": "R",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 3119,
                    "end": 3143,
                    "loc": {
                      "start": {
                        "line": 125,
                        "column": 12
                      },
                      "end": {
                        "line": 125,
                        "column": 36
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 3119,
                      "end": 3132,
                      "loc": {
                        "start": {
                          "line": 125,
                          "column": 12
                        },
                        "end": {
                          "line": 125,
                          "column": 25
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3119,
                        "end": 3120,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 12
                          },
                          "end": {
                            "line": 125,
                            "column": 13
                          },
                          "identifierName": "G"
                        },
                        "name": "G"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3121,
                        "end": 3132,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 14
                          },
                          "end": {
                            "line": 125,
                            "column": 25
                          },
                          "identifierName": "multiplyTwo"
                        },
                        "name": "multiplyTwo"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3133,
                        "end": 3135,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 26
                          },
                          "end": {
                            "line": 125,
                            "column": 28
                          },
                          "identifierName": "u1"
                        },
                        "name": "u1"
                      },
                      {
                        "type": "Identifier",
                        "start": 3137,
                        "end": 3138,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 30
                          },
                          "end": {
                            "line": 125,
                            "column": 31
                          },
                          "identifierName": "Q"
                        },
                        "name": "Q"
                      },
                      {
                        "type": "Identifier",
                        "start": 3140,
                        "end": 3142,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 33
                          },
                          "end": {
                            "line": 125,
                            "column": 35
                          },
                          "identifierName": "u2"
                        },
                        "name": "u2"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.5 Compute R = (xR, yR) = u1G + u2Q",
                  "start": 3065,
                  "end": 3106,
                  "loc": {
                    "start": {
                      "line": 124,
                      "column": 4
                    },
                    "end": {
                      "line": 124,
                      "column": 45
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.5 (cont.) Enforce R is not at infinity",
                  "start": 3150,
                  "end": 3195,
                  "loc": {
                    "start": {
                      "line": 127,
                      "column": 4
                    },
                    "end": {
                      "line": 127,
                      "column": 49
                    }
                  }
                }
              ]
            },
            {
              "type": "IfStatement",
              "start": 3200,
              "end": 3238,
              "loc": {
                "start": {
                  "line": 128,
                  "column": 4
                },
                "end": {
                  "line": 128,
                  "column": 42
                }
              },
              "test": {
                "type": "CallExpression",
                "start": 3204,
                "end": 3223,
                "loc": {
                  "start": {
                    "line": 128,
                    "column": 8
                  },
                  "end": {
                    "line": 128,
                    "column": 27
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 3204,
                  "end": 3220,
                  "loc": {
                    "start": {
                      "line": 128,
                      "column": 8
                    },
                    "end": {
                      "line": 128,
                      "column": 24
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3204,
                    "end": 3209,
                    "loc": {
                      "start": {
                        "line": 128,
                        "column": 8
                      },
                      "end": {
                        "line": 128,
                        "column": 13
                      },
                      "identifierName": "curve"
                    },
                    "name": "curve",
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3210,
                    "end": 3220,
                    "loc": {
                      "start": {
                        "line": 128,
                        "column": 14
                      },
                      "end": {
                        "line": 128,
                        "column": 24
                      },
                      "identifierName": "isInfinity"
                    },
                    "name": "isInfinity"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 3221,
                    "end": 3222,
                    "loc": {
                      "start": {
                        "line": 128,
                        "column": 25
                      },
                      "end": {
                        "line": 128,
                        "column": 26
                      },
                      "identifierName": "R"
                    },
                    "name": "R"
                  }
                ],
                "leadingComments": null
              },
              "consequent": {
                "type": "ReturnStatement",
                "start": 3225,
                "end": 3238,
                "loc": {
                  "start": {
                    "line": 128,
                    "column": 29
                  },
                  "end": {
                    "line": 128,
                    "column": 42
                  }
                },
                "argument": {
                  "type": "BooleanLiteral",
                  "start": 3232,
                  "end": 3237,
                  "loc": {
                    "start": {
                      "line": 128,
                      "column": 36
                    },
                    "end": {
                      "line": 128,
                      "column": 41
                    }
                  },
                  "value": false
                },
                "trailingComments": null
              },
              "alternate": null,
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.5 (cont.) Enforce R is not at infinity",
                  "start": 3150,
                  "end": 3195,
                  "loc": {
                    "start": {
                      "line": 127,
                      "column": 4
                    },
                    "end": {
                      "line": 127,
                      "column": 49
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.6 Convert the field element R.x to an integer",
                  "start": 3244,
                  "end": 3296,
                  "loc": {
                    "start": {
                      "line": 130,
                      "column": 4
                    },
                    "end": {
                      "line": 130,
                      "column": 56
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 3301,
              "end": 3320,
              "loc": {
                "start": {
                  "line": 131,
                  "column": 4
                },
                "end": {
                  "line": 131,
                  "column": 23
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3305,
                  "end": 3319,
                  "loc": {
                    "start": {
                      "line": 131,
                      "column": 8
                    },
                    "end": {
                      "line": 131,
                      "column": 22
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3305,
                    "end": 3307,
                    "loc": {
                      "start": {
                        "line": 131,
                        "column": 8
                      },
                      "end": {
                        "line": 131,
                        "column": 10
                      },
                      "identifierName": "xR"
                    },
                    "name": "xR",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 3310,
                    "end": 3319,
                    "loc": {
                      "start": {
                        "line": 131,
                        "column": 13
                      },
                      "end": {
                        "line": 131,
                        "column": 22
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3310,
                      "end": 3311,
                      "loc": {
                        "start": {
                          "line": 131,
                          "column": 13
                        },
                        "end": {
                          "line": 131,
                          "column": 14
                        },
                        "identifierName": "R"
                      },
                      "name": "R"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3312,
                      "end": 3319,
                      "loc": {
                        "start": {
                          "line": 131,
                          "column": 15
                        },
                        "end": {
                          "line": 131,
                          "column": 22
                        },
                        "identifierName": "affineX"
                      },
                      "name": "affineX"
                    },
                    "computed": false
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.6 Convert the field element R.x to an integer",
                  "start": 3244,
                  "end": 3296,
                  "loc": {
                    "start": {
                      "line": 130,
                      "column": 4
                    },
                    "end": {
                      "line": 130,
                      "column": 56
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.7 Set v = xR mod n",
                  "start": 3326,
                  "end": 3351,
                  "loc": {
                    "start": {
                      "line": 133,
                      "column": 4
                    },
                    "end": {
                      "line": 133,
                      "column": 29
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 3356,
              "end": 3374,
              "loc": {
                "start": {
                  "line": 134,
                  "column": 4
                },
                "end": {
                  "line": 134,
                  "column": 22
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3360,
                  "end": 3373,
                  "loc": {
                    "start": {
                      "line": 134,
                      "column": 8
                    },
                    "end": {
                      "line": 134,
                      "column": 21
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3360,
                    "end": 3361,
                    "loc": {
                      "start": {
                        "line": 134,
                        "column": 8
                      },
                      "end": {
                        "line": 134,
                        "column": 9
                      },
                      "identifierName": "v"
                    },
                    "name": "v",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 3364,
                    "end": 3373,
                    "loc": {
                      "start": {
                        "line": 134,
                        "column": 12
                      },
                      "end": {
                        "line": 134,
                        "column": 21
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 3364,
                      "end": 3370,
                      "loc": {
                        "start": {
                          "line": 134,
                          "column": 12
                        },
                        "end": {
                          "line": 134,
                          "column": 18
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3364,
                        "end": 3366,
                        "loc": {
                          "start": {
                            "line": 134,
                            "column": 12
                          },
                          "end": {
                            "line": 134,
                            "column": 14
                          },
                          "identifierName": "xR"
                        },
                        "name": "xR"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3367,
                        "end": 3370,
                        "loc": {
                          "start": {
                            "line": 134,
                            "column": 15
                          },
                          "end": {
                            "line": 134,
                            "column": 18
                          },
                          "identifierName": "mod"
                        },
                        "name": "mod"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3371,
                        "end": 3372,
                        "loc": {
                          "start": {
                            "line": 134,
                            "column": 19
                          },
                          "end": {
                            "line": 134,
                            "column": 20
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.7 Set v = xR mod n",
                  "start": 3326,
                  "end": 3351,
                  "loc": {
                    "start": {
                      "line": 133,
                      "column": 4
                    },
                    "end": {
                      "line": 133,
                      "column": 29
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"",
                  "start": 3380,
                  "end": 3446,
                  "loc": {
                    "start": {
                      "line": 136,
                      "column": 4
                    },
                    "end": {
                      "line": 136,
                      "column": 70
                    }
                  }
                }
              ]
            },
            {
              "type": "ReturnStatement",
              "start": 3451,
              "end": 3470,
              "loc": {
                "start": {
                  "line": 137,
                  "column": 4
                },
                "end": {
                  "line": 137,
                  "column": 23
                }
              },
              "argument": {
                "type": "CallExpression",
                "start": 3458,
                "end": 3469,
                "loc": {
                  "start": {
                    "line": 137,
                    "column": 11
                  },
                  "end": {
                    "line": 137,
                    "column": 22
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 3458,
                  "end": 3466,
                  "loc": {
                    "start": {
                      "line": 137,
                      "column": 11
                    },
                    "end": {
                      "line": 137,
                      "column": 19
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3458,
                    "end": 3459,
                    "loc": {
                      "start": {
                        "line": 137,
                        "column": 11
                      },
                      "end": {
                        "line": 137,
                        "column": 12
                      },
                      "identifierName": "v"
                    },
                    "name": "v",
                    "leadingComments": null
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3460,
                    "end": 3466,
                    "loc": {
                      "start": {
                        "line": 137,
                        "column": 13
                      },
                      "end": {
                        "line": 137,
                        "column": 19
                      },
                      "identifierName": "equals"
                    },
                    "name": "equals"
                  },
                  "computed": false,
                  "leadingComments": null
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 3467,
                    "end": 3468,
                    "loc": {
                      "start": {
                        "line": 137,
                        "column": 20
                      },
                      "end": {
                        "line": 137,
                        "column": 21
                      },
                      "identifierName": "r"
                    },
                    "name": "r"
                  }
                ],
                "leadingComments": null
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"",
                  "start": 3380,
                  "end": 3446,
                  "loc": {
                    "start": {
                      "line": 136,
                      "column": 4
                    },
                    "end": {
                      "line": 136,
                      "column": 70
                    }
                  }
                }
              ]
            }
          ],
          "directives": []
        },
        "name": "_",
        "leadingComments": [],
        "trailingComments": []
      },
      {
        "type": "Identifier",
        "start": 3474,
        "end": 3677,
        "loc": {
          "start": {
            "line": 140,
            "column": 0
          },
          "end": {
            "line": 145,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 3483,
          "end": 3489,
          "loc": {
            "start": {
              "line": 140,
              "column": 9
            },
            "end": {
              "line": 140,
              "column": 15
            },
            "identifierName": "verify"
          },
          "name": "verify"
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 3490,
            "end": 3495,
            "loc": {
              "start": {
                "line": 140,
                "column": 16
              },
              "end": {
                "line": 140,
                "column": 21
              },
              "identifierName": "curve"
            },
            "name": "curve"
          },
          {
            "type": "Identifier",
            "start": 3497,
            "end": 3501,
            "loc": {
              "start": {
                "line": 140,
                "column": 23
              },
              "end": {
                "line": 140,
                "column": 27
              },
              "identifierName": "hash"
            },
            "name": "hash"
          },
          {
            "type": "Identifier",
            "start": 3503,
            "end": 3512,
            "loc": {
              "start": {
                "line": 140,
                "column": 29
              },
              "end": {
                "line": 140,
                "column": 38
              },
              "identifierName": "signature"
            },
            "name": "signature"
          },
          {
            "type": "Identifier",
            "start": 3514,
            "end": 3515,
            "loc": {
              "start": {
                "line": 140,
                "column": 40
              },
              "end": {
                "line": 140,
                "column": 41
              },
              "identifierName": "Q"
            },
            "name": "Q"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 3517,
          "end": 3677,
          "loc": {
            "start": {
              "line": 140,
              "column": 43
            },
            "end": {
              "line": 145,
              "column": 1
            }
          },
          "body": [
            {
              "type": "VariableDeclaration",
              "start": 3593,
              "end": 3629,
              "loc": {
                "start": {
                  "line": 143,
                  "column": 4
                },
                "end": {
                  "line": 143,
                  "column": 40
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 3597,
                  "end": 3628,
                  "loc": {
                    "start": {
                      "line": 143,
                      "column": 8
                    },
                    "end": {
                      "line": 143,
                      "column": 39
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 3597,
                    "end": 3598,
                    "loc": {
                      "start": {
                        "line": 143,
                        "column": 8
                      },
                      "end": {
                        "line": 143,
                        "column": 9
                      },
                      "identifierName": "e"
                    },
                    "name": "e",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 3601,
                    "end": 3628,
                    "loc": {
                      "start": {
                        "line": 143,
                        "column": 12
                      },
                      "end": {
                        "line": 143,
                        "column": 39
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 3601,
                      "end": 3622,
                      "loc": {
                        "start": {
                          "line": 143,
                          "column": 12
                        },
                        "end": {
                          "line": 143,
                          "column": 33
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3601,
                        "end": 3611,
                        "loc": {
                          "start": {
                            "line": 143,
                            "column": 12
                          },
                          "end": {
                            "line": 143,
                            "column": 22
                          },
                          "identifierName": "BigInteger"
                        },
                        "name": "BigInteger"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3612,
                        "end": 3622,
                        "loc": {
                          "start": {
                            "line": 143,
                            "column": 23
                          },
                          "end": {
                            "line": 143,
                            "column": 33
                          },
                          "identifierName": "fromBuffer"
                        },
                        "name": "fromBuffer"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3623,
                        "end": 3627,
                        "loc": {
                          "start": {
                            "line": 143,
                            "column": 34
                          },
                          "end": {
                            "line": 143,
                            "column": 38
                          },
                          "identifierName": "hash"
                        },
                        "name": "hash"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4.2 H = Hash(M), already done by the user",
                  "start": 3523,
                  "end": 3569,
                  "loc": {
                    "start": {
                      "line": 141,
                      "column": 4
                    },
                    "end": {
                      "line": 141,
                      "column": 50
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": " 1.4.3 e = H",
                  "start": 3574,
                  "end": 3588,
                  "loc": {
                    "start": {
                      "line": 142,
                      "column": 4
                    },
                    "end": {
                      "line": 142,
                      "column": 18
                    }
                  }
                }
              ]
            },
            {
              "type": "ReturnStatement",
              "start": 3634,
              "end": 3675,
              "loc": {
                "start": {
                  "line": 144,
                  "column": 4
                },
                "end": {
                  "line": 144,
                  "column": 45
                }
              },
              "argument": {
                "type": "CallExpression",
                "start": 3641,
                "end": 3674,
                "loc": {
                  "start": {
                    "line": 144,
                    "column": 11
                  },
                  "end": {
                    "line": 144,
                    "column": 44
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 3641,
                  "end": 3650,
                  "loc": {
                    "start": {
                      "line": 144,
                      "column": 11
                    },
                    "end": {
                      "line": 144,
                      "column": 20
                    },
                    "identifierName": "verifyRaw"
                  },
                  "name": "verifyRaw"
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 3651,
                    "end": 3656,
                    "loc": {
                      "start": {
                        "line": 144,
                        "column": 21
                      },
                      "end": {
                        "line": 144,
                        "column": 26
                      },
                      "identifierName": "curve"
                    },
                    "name": "curve"
                  },
                  {
                    "type": "Identifier",
                    "start": 3658,
                    "end": 3659,
                    "loc": {
                      "start": {
                        "line": 144,
                        "column": 28
                      },
                      "end": {
                        "line": 144,
                        "column": 29
                      },
                      "identifierName": "e"
                    },
                    "name": "e"
                  },
                  {
                    "type": "Identifier",
                    "start": 3661,
                    "end": 3670,
                    "loc": {
                      "start": {
                        "line": 144,
                        "column": 31
                      },
                      "end": {
                        "line": 144,
                        "column": 40
                      },
                      "identifierName": "signature"
                    },
                    "name": "signature"
                  },
                  {
                    "type": "Identifier",
                    "start": 3672,
                    "end": 3673,
                    "loc": {
                      "start": {
                        "line": 144,
                        "column": 42
                      },
                      "end": {
                        "line": 144,
                        "column": 43
                      },
                      "identifierName": "Q"
                    },
                    "name": "Q"
                  }
                ]
              }
            }
          ],
          "directives": [],
          "trailingComments": null
        },
        "trailingComments": [],
        "name": "_",
        "leadingComments": []
      },
      {
        "type": "Identifier",
        "start": 3881,
        "end": 4968,
        "loc": {
          "start": {
            "line": 155,
            "column": 0
          },
          "end": {
            "line": 193,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 3890,
          "end": 3903,
          "loc": {
            "start": {
              "line": 155,
              "column": 9
            },
            "end": {
              "line": 155,
              "column": 22
            },
            "identifierName": "recoverPubKey"
          },
          "name": "recoverPubKey",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 3904,
            "end": 3909,
            "loc": {
              "start": {
                "line": 155,
                "column": 23
              },
              "end": {
                "line": 155,
                "column": 28
              },
              "identifierName": "curve"
            },
            "name": "curve"
          },
          {
            "type": "Identifier",
            "start": 3911,
            "end": 3912,
            "loc": {
              "start": {
                "line": 155,
                "column": 30
              },
              "end": {
                "line": 155,
                "column": 31
              },
              "identifierName": "e"
            },
            "name": "e"
          },
          {
            "type": "Identifier",
            "start": 3914,
            "end": 3923,
            "loc": {
              "start": {
                "line": 155,
                "column": 33
              },
              "end": {
                "line": 155,
                "column": 42
              },
              "identifierName": "signature"
            },
            "name": "signature"
          },
          {
            "type": "Identifier",
            "start": 3925,
            "end": 3926,
            "loc": {
              "start": {
                "line": 155,
                "column": 44
              },
              "end": {
                "line": 155,
                "column": 45
              },
              "identifierName": "i"
            },
            "name": "i"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 3928,
          "end": 4968,
          "loc": {
            "start": {
              "line": 155,
              "column": 47
            },
            "end": {
              "line": 193,
              "column": 1
            }
          },
          "body": [
            {
              "type": "ExpressionStatement",
              "start": 3934,
              "end": 4003,
              "loc": {
                "start": {
                  "line": 156,
                  "column": 4
                },
                "end": {
                  "line": 156,
                  "column": 73
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 3934,
                "end": 4002,
                "loc": {
                  "start": {
                    "line": 156,
                    "column": 4
                  },
                  "end": {
                    "line": 156,
                    "column": 72
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 3934,
                  "end": 3952,
                  "loc": {
                    "start": {
                      "line": 156,
                      "column": 4
                    },
                    "end": {
                      "line": 156,
                      "column": 22
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 3934,
                    "end": 3940,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 4
                      },
                      "end": {
                        "line": 156,
                        "column": 10
                      },
                      "identifierName": "assert"
                    },
                    "name": "assert"
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 3941,
                    "end": 3952,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 11
                      },
                      "end": {
                        "line": 156,
                        "column": 22
                      },
                      "identifierName": "strictEqual"
                    },
                    "name": "strictEqual"
                  },
                  "computed": false
                },
                "arguments": [
                  {
                    "type": "BinaryExpression",
                    "start": 3953,
                    "end": 3958,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 23
                      },
                      "end": {
                        "line": 156,
                        "column": 28
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 3953,
                      "end": 3954,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 23
                        },
                        "end": {
                          "line": 156,
                          "column": 24
                        },
                        "identifierName": "i"
                      },
                      "name": "i"
                    },
                    "operator": "&",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 3957,
                      "end": 3958,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 27
                        },
                        "end": {
                          "line": 156,
                          "column": 28
                        }
                      },
                      "extra": {
                        "rawValue": 3,
                        "raw": "3"
                      },
                      "value": 3
                    }
                  },
                  {
                    "type": "Identifier",
                    "start": 3960,
                    "end": 3961,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 30
                      },
                      "end": {
                        "line": 156,
                        "column": 31
                      },
                      "identifierName": "i"
                    },
                    "name": "i"
                  },
                  {
                    "type": "StringLiteral",
                    "start": 3963,
                    "end": 4001,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 33
                      },
                      "end": {
                        "line": 156,
                        "column": 71
                      }
                    },
                    "extra": {
                      "rawValue": "Recovery param is more than two bits",
                      "raw": "\"Recovery param is more than two bits\""
                    },
                    "value": "Recovery param is more than two bits"
                  }
                ]
              }
            },
            {
              "type": "VariableDeclaration",
              "start": 4009,
              "end": 4025,
              "loc": {
                "start": {
                  "line": 158,
                  "column": 4
                },
                "end": {
                  "line": 158,
                  "column": 20
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4013,
                  "end": 4024,
                  "loc": {
                    "start": {
                      "line": 158,
                      "column": 8
                    },
                    "end": {
                      "line": 158,
                      "column": 19
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4013,
                    "end": 4014,
                    "loc": {
                      "start": {
                        "line": 158,
                        "column": 8
                      },
                      "end": {
                        "line": 158,
                        "column": 9
                      },
                      "identifierName": "n"
                    },
                    "name": "n"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 4017,
                    "end": 4024,
                    "loc": {
                      "start": {
                        "line": 158,
                        "column": 12
                      },
                      "end": {
                        "line": 158,
                        "column": 19
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 4017,
                      "end": 4022,
                      "loc": {
                        "start": {
                          "line": 158,
                          "column": 12
                        },
                        "end": {
                          "line": 158,
                          "column": 17
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 4023,
                      "end": 4024,
                      "loc": {
                        "start": {
                          "line": 158,
                          "column": 18
                        },
                        "end": {
                          "line": 158,
                          "column": 19
                        },
                        "identifierName": "n"
                      },
                      "name": "n"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 4030,
              "end": 4046,
              "loc": {
                "start": {
                  "line": 159,
                  "column": 4
                },
                "end": {
                  "line": 159,
                  "column": 20
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4034,
                  "end": 4045,
                  "loc": {
                    "start": {
                      "line": 159,
                      "column": 8
                    },
                    "end": {
                      "line": 159,
                      "column": 19
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4034,
                    "end": 4035,
                    "loc": {
                      "start": {
                        "line": 159,
                        "column": 8
                      },
                      "end": {
                        "line": 159,
                        "column": 9
                      },
                      "identifierName": "G"
                    },
                    "name": "G"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 4038,
                    "end": 4045,
                    "loc": {
                      "start": {
                        "line": 159,
                        "column": 12
                      },
                      "end": {
                        "line": 159,
                        "column": 19
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 4038,
                      "end": 4043,
                      "loc": {
                        "start": {
                          "line": 159,
                          "column": 12
                        },
                        "end": {
                          "line": 159,
                          "column": 17
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 4044,
                      "end": 4045,
                      "loc": {
                        "start": {
                          "line": 159,
                          "column": 18
                        },
                        "end": {
                          "line": 159,
                          "column": 19
                        },
                        "identifierName": "G"
                      },
                      "name": "G"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 4052,
              "end": 4072,
              "loc": {
                "start": {
                  "line": 161,
                  "column": 4
                },
                "end": {
                  "line": 161,
                  "column": 24
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4056,
                  "end": 4071,
                  "loc": {
                    "start": {
                      "line": 161,
                      "column": 8
                    },
                    "end": {
                      "line": 161,
                      "column": 23
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4056,
                    "end": 4057,
                    "loc": {
                      "start": {
                        "line": 161,
                        "column": 8
                      },
                      "end": {
                        "line": 161,
                        "column": 9
                      },
                      "identifierName": "r"
                    },
                    "name": "r"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 4060,
                    "end": 4071,
                    "loc": {
                      "start": {
                        "line": 161,
                        "column": 12
                      },
                      "end": {
                        "line": 161,
                        "column": 23
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 4060,
                      "end": 4069,
                      "loc": {
                        "start": {
                          "line": 161,
                          "column": 12
                        },
                        "end": {
                          "line": 161,
                          "column": 21
                        },
                        "identifierName": "signature"
                      },
                      "name": "signature"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 4070,
                      "end": 4071,
                      "loc": {
                        "start": {
                          "line": 161,
                          "column": 22
                        },
                        "end": {
                          "line": 161,
                          "column": 23
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "VariableDeclaration",
              "start": 4077,
              "end": 4097,
              "loc": {
                "start": {
                  "line": 162,
                  "column": 4
                },
                "end": {
                  "line": 162,
                  "column": 24
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4081,
                  "end": 4096,
                  "loc": {
                    "start": {
                      "line": 162,
                      "column": 8
                    },
                    "end": {
                      "line": 162,
                      "column": 23
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4081,
                    "end": 4082,
                    "loc": {
                      "start": {
                        "line": 162,
                        "column": 8
                      },
                      "end": {
                        "line": 162,
                        "column": 9
                      },
                      "identifierName": "s"
                    },
                    "name": "s"
                  },
                  "init": {
                    "type": "MemberExpression",
                    "start": 4085,
                    "end": 4096,
                    "loc": {
                      "start": {
                        "line": 162,
                        "column": 12
                      },
                      "end": {
                        "line": 162,
                        "column": 23
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 4085,
                      "end": 4094,
                      "loc": {
                        "start": {
                          "line": 162,
                          "column": 12
                        },
                        "end": {
                          "line": 162,
                          "column": 21
                        },
                        "identifierName": "signature"
                      },
                      "name": "signature"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 4095,
                      "end": 4096,
                      "loc": {
                        "start": {
                          "line": 162,
                          "column": 22
                        },
                        "end": {
                          "line": 162,
                          "column": 23
                        },
                        "identifierName": "s"
                      },
                      "name": "s"
                    },
                    "computed": false
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "ExpressionStatement",
              "start": 4103,
              "end": 4167,
              "loc": {
                "start": {
                  "line": 164,
                  "column": 4
                },
                "end": {
                  "line": 164,
                  "column": 68
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 4103,
                "end": 4166,
                "loc": {
                  "start": {
                    "line": 164,
                    "column": 4
                  },
                  "end": {
                    "line": 164,
                    "column": 67
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 4103,
                  "end": 4109,
                  "loc": {
                    "start": {
                      "line": 164,
                      "column": 4
                    },
                    "end": {
                      "line": 164,
                      "column": 10
                    },
                    "identifierName": "assert"
                  },
                  "name": "assert"
                },
                "arguments": [
                  {
                    "type": "LogicalExpression",
                    "start": 4110,
                    "end": 4146,
                    "loc": {
                      "start": {
                        "line": 164,
                        "column": 11
                      },
                      "end": {
                        "line": 164,
                        "column": 47
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 4110,
                      "end": 4124,
                      "loc": {
                        "start": {
                          "line": 164,
                          "column": 11
                        },
                        "end": {
                          "line": 164,
                          "column": 25
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 4110,
                        "end": 4120,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 11
                          },
                          "end": {
                            "line": 164,
                            "column": 21
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4110,
                          "end": 4118,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 11
                            },
                            "end": {
                              "line": 164,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4110,
                            "end": 4111,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 11
                              },
                              "end": {
                                "line": 164,
                                "column": 12
                              },
                              "identifierName": "r"
                            },
                            "name": "r"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4112,
                            "end": 4118,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 13
                              },
                              "end": {
                                "line": 164,
                                "column": 19
                              },
                              "identifierName": "signum"
                            },
                            "name": "signum"
                          },
                          "computed": false
                        },
                        "arguments": []
                      },
                      "operator": ">",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 4123,
                        "end": 4124,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 24
                          },
                          "end": {
                            "line": 164,
                            "column": 25
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 4128,
                      "end": 4146,
                      "loc": {
                        "start": {
                          "line": 164,
                          "column": 29
                        },
                        "end": {
                          "line": 164,
                          "column": 47
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 4128,
                        "end": 4142,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 29
                          },
                          "end": {
                            "line": 164,
                            "column": 43
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4128,
                          "end": 4139,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 29
                            },
                            "end": {
                              "line": 164,
                              "column": 40
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4128,
                            "end": 4129,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 29
                              },
                              "end": {
                                "line": 164,
                                "column": 30
                              },
                              "identifierName": "r"
                            },
                            "name": "r"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4130,
                            "end": 4139,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 31
                              },
                              "end": {
                                "line": 164,
                                "column": 40
                              },
                              "identifierName": "compareTo"
                            },
                            "name": "compareTo"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4140,
                            "end": 4141,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 41
                              },
                              "end": {
                                "line": 164,
                                "column": 42
                              },
                              "identifierName": "n"
                            },
                            "name": "n"
                          }
                        ]
                      },
                      "operator": "<",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 4145,
                        "end": 4146,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 46
                          },
                          "end": {
                            "line": 164,
                            "column": 47
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      }
                    }
                  },
                  {
                    "type": "StringLiteral",
                    "start": 4148,
                    "end": 4165,
                    "loc": {
                      "start": {
                        "line": 164,
                        "column": 49
                      },
                      "end": {
                        "line": 164,
                        "column": 66
                      }
                    },
                    "extra": {
                      "rawValue": "Invalid r value",
                      "raw": "\"Invalid r value\""
                    },
                    "value": "Invalid r value"
                  }
                ]
              }
            },
            {
              "type": "ExpressionStatement",
              "start": 4172,
              "end": 4236,
              "loc": {
                "start": {
                  "line": 165,
                  "column": 4
                },
                "end": {
                  "line": 165,
                  "column": 68
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 4172,
                "end": 4235,
                "loc": {
                  "start": {
                    "line": 165,
                    "column": 4
                  },
                  "end": {
                    "line": 165,
                    "column": 67
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 4172,
                  "end": 4178,
                  "loc": {
                    "start": {
                      "line": 165,
                      "column": 4
                    },
                    "end": {
                      "line": 165,
                      "column": 10
                    },
                    "identifierName": "assert"
                  },
                  "name": "assert"
                },
                "arguments": [
                  {
                    "type": "LogicalExpression",
                    "start": 4179,
                    "end": 4215,
                    "loc": {
                      "start": {
                        "line": 165,
                        "column": 11
                      },
                      "end": {
                        "line": 165,
                        "column": 47
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 4179,
                      "end": 4193,
                      "loc": {
                        "start": {
                          "line": 165,
                          "column": 11
                        },
                        "end": {
                          "line": 165,
                          "column": 25
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 4179,
                        "end": 4189,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 11
                          },
                          "end": {
                            "line": 165,
                            "column": 21
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4179,
                          "end": 4187,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 11
                            },
                            "end": {
                              "line": 165,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4179,
                            "end": 4180,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 11
                              },
                              "end": {
                                "line": 165,
                                "column": 12
                              },
                              "identifierName": "s"
                            },
                            "name": "s"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4181,
                            "end": 4187,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 13
                              },
                              "end": {
                                "line": 165,
                                "column": 19
                              },
                              "identifierName": "signum"
                            },
                            "name": "signum"
                          },
                          "computed": false
                        },
                        "arguments": []
                      },
                      "operator": ">",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 4192,
                        "end": 4193,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 24
                          },
                          "end": {
                            "line": 165,
                            "column": 25
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 4197,
                      "end": 4215,
                      "loc": {
                        "start": {
                          "line": 165,
                          "column": 29
                        },
                        "end": {
                          "line": 165,
                          "column": 47
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 4197,
                        "end": 4211,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 29
                          },
                          "end": {
                            "line": 165,
                            "column": 43
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4197,
                          "end": 4208,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 29
                            },
                            "end": {
                              "line": 165,
                              "column": 40
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4197,
                            "end": 4198,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 29
                              },
                              "end": {
                                "line": 165,
                                "column": 30
                              },
                              "identifierName": "s"
                            },
                            "name": "s"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4199,
                            "end": 4208,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 31
                              },
                              "end": {
                                "line": 165,
                                "column": 40
                              },
                              "identifierName": "compareTo"
                            },
                            "name": "compareTo"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4209,
                            "end": 4210,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 41
                              },
                              "end": {
                                "line": 165,
                                "column": 42
                              },
                              "identifierName": "n"
                            },
                            "name": "n"
                          }
                        ]
                      },
                      "operator": "<",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 4214,
                        "end": 4215,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 46
                          },
                          "end": {
                            "line": 165,
                            "column": 47
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      }
                    }
                  },
                  {
                    "type": "StringLiteral",
                    "start": 4217,
                    "end": 4234,
                    "loc": {
                      "start": {
                        "line": 165,
                        "column": 49
                      },
                      "end": {
                        "line": 165,
                        "column": 66
                      }
                    },
                    "extra": {
                      "rawValue": "Invalid s value",
                      "raw": "\"Invalid s value\""
                    },
                    "value": "Invalid s value"
                  }
                ]
              },
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " A set LSB signifies that the y-coordinate is odd",
                  "start": 4242,
                  "end": 4293,
                  "loc": {
                    "start": {
                      "line": 167,
                      "column": 4
                    },
                    "end": {
                      "line": 167,
                      "column": 55
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4298,
              "end": 4317,
              "loc": {
                "start": {
                  "line": 168,
                  "column": 4
                },
                "end": {
                  "line": 168,
                  "column": 23
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4302,
                  "end": 4316,
                  "loc": {
                    "start": {
                      "line": 168,
                      "column": 8
                    },
                    "end": {
                      "line": 168,
                      "column": 22
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4302,
                    "end": 4308,
                    "loc": {
                      "start": {
                        "line": 168,
                        "column": 8
                      },
                      "end": {
                        "line": 168,
                        "column": 14
                      },
                      "identifierName": "isYOdd"
                    },
                    "name": "isYOdd",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "BinaryExpression",
                    "start": 4311,
                    "end": 4316,
                    "loc": {
                      "start": {
                        "line": 168,
                        "column": 17
                      },
                      "end": {
                        "line": 168,
                        "column": 22
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 4311,
                      "end": 4312,
                      "loc": {
                        "start": {
                          "line": 168,
                          "column": 17
                        },
                        "end": {
                          "line": 168,
                          "column": 18
                        },
                        "identifierName": "i"
                      },
                      "name": "i"
                    },
                    "operator": "&",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 4315,
                      "end": 4316,
                      "loc": {
                        "start": {
                          "line": 168,
                          "column": 21
                        },
                        "end": {
                          "line": 168,
                          "column": 22
                        }
                      },
                      "extra": {
                        "rawValue": 1,
                        "raw": "1"
                      },
                      "value": 1
                    }
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " A set LSB signifies that the y-coordinate is odd",
                  "start": 4242,
                  "end": 4293,
                  "loc": {
                    "start": {
                      "line": 167,
                      "column": 4
                    },
                    "end": {
                      "line": 167,
                      "column": 55
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " The more significant bit specifies whether we should use the",
                  "start": 4323,
                  "end": 4386,
                  "loc": {
                    "start": {
                      "line": 170,
                      "column": 4
                    },
                    "end": {
                      "line": 170,
                      "column": 67
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": " first or second candidate key.",
                  "start": 4391,
                  "end": 4424,
                  "loc": {
                    "start": {
                      "line": 171,
                      "column": 4
                    },
                    "end": {
                      "line": 171,
                      "column": 37
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4429,
              "end": 4454,
              "loc": {
                "start": {
                  "line": 172,
                  "column": 4
                },
                "end": {
                  "line": 172,
                  "column": 29
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4433,
                  "end": 4453,
                  "loc": {
                    "start": {
                      "line": 172,
                      "column": 8
                    },
                    "end": {
                      "line": 172,
                      "column": 28
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4433,
                    "end": 4444,
                    "loc": {
                      "start": {
                        "line": 172,
                        "column": 8
                      },
                      "end": {
                        "line": 172,
                        "column": 19
                      },
                      "identifierName": "isSecondKey"
                    },
                    "name": "isSecondKey",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "BinaryExpression",
                    "start": 4447,
                    "end": 4453,
                    "loc": {
                      "start": {
                        "line": 172,
                        "column": 22
                      },
                      "end": {
                        "line": 172,
                        "column": 28
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 4447,
                      "end": 4448,
                      "loc": {
                        "start": {
                          "line": 172,
                          "column": 22
                        },
                        "end": {
                          "line": 172,
                          "column": 23
                        },
                        "identifierName": "i"
                      },
                      "name": "i"
                    },
                    "operator": ">>",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 4452,
                      "end": 4453,
                      "loc": {
                        "start": {
                          "line": 172,
                          "column": 27
                        },
                        "end": {
                          "line": 172,
                          "column": 28
                        }
                      },
                      "extra": {
                        "rawValue": 1,
                        "raw": "1"
                      },
                      "value": 1
                    }
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " The more significant bit specifies whether we should use the",
                  "start": 4323,
                  "end": 4386,
                  "loc": {
                    "start": {
                      "line": 170,
                      "column": 4
                    },
                    "end": {
                      "line": 170,
                      "column": 67
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": " first or second candidate key.",
                  "start": 4391,
                  "end": 4424,
                  "loc": {
                    "start": {
                      "line": 171,
                      "column": 4
                    },
                    "end": {
                      "line": 171,
                      "column": 37
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.1 Let x = r + jn",
                  "start": 4460,
                  "end": 4481,
                  "loc": {
                    "start": {
                      "line": 174,
                      "column": 4
                    },
                    "end": {
                      "line": 174,
                      "column": 25
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4486,
              "end": 4521,
              "loc": {
                "start": {
                  "line": 175,
                  "column": 4
                },
                "end": {
                  "line": 175,
                  "column": 39
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4490,
                  "end": 4520,
                  "loc": {
                    "start": {
                      "line": 175,
                      "column": 8
                    },
                    "end": {
                      "line": 175,
                      "column": 38
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4490,
                    "end": 4491,
                    "loc": {
                      "start": {
                        "line": 175,
                        "column": 8
                      },
                      "end": {
                        "line": 175,
                        "column": 9
                      },
                      "identifierName": "x"
                    },
                    "name": "x",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "ConditionalExpression",
                    "start": 4494,
                    "end": 4520,
                    "loc": {
                      "start": {
                        "line": 175,
                        "column": 12
                      },
                      "end": {
                        "line": 175,
                        "column": 38
                      }
                    },
                    "test": {
                      "type": "Identifier",
                      "start": 4494,
                      "end": 4505,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 12
                        },
                        "end": {
                          "line": 175,
                          "column": 23
                        },
                        "identifierName": "isSecondKey"
                      },
                      "name": "isSecondKey"
                    },
                    "consequent": {
                      "type": "CallExpression",
                      "start": 4508,
                      "end": 4516,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 26
                        },
                        "end": {
                          "line": 175,
                          "column": 34
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4508,
                        "end": 4513,
                        "loc": {
                          "start": {
                            "line": 175,
                            "column": 26
                          },
                          "end": {
                            "line": 175,
                            "column": 31
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4508,
                          "end": 4509,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 26
                            },
                            "end": {
                              "line": 175,
                              "column": 27
                            },
                            "identifierName": "r"
                          },
                          "name": "r"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4510,
                          "end": 4513,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 28
                            },
                            "end": {
                              "line": 175,
                              "column": 31
                            },
                            "identifierName": "add"
                          },
                          "name": "add"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4514,
                          "end": 4515,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 32
                            },
                            "end": {
                              "line": 175,
                              "column": 33
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "alternate": {
                      "type": "Identifier",
                      "start": 4519,
                      "end": 4520,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 37
                        },
                        "end": {
                          "line": 175,
                          "column": 38
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    }
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.1 Let x = r + jn",
                  "start": 4460,
                  "end": 4481,
                  "loc": {
                    "start": {
                      "line": 174,
                      "column": 4
                    },
                    "end": {
                      "line": 174,
                      "column": 25
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4526,
              "end": 4562,
              "loc": {
                "start": {
                  "line": 176,
                  "column": 4
                },
                "end": {
                  "line": 176,
                  "column": 40
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4530,
                  "end": 4561,
                  "loc": {
                    "start": {
                      "line": 176,
                      "column": 8
                    },
                    "end": {
                      "line": 176,
                      "column": 39
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4530,
                    "end": 4531,
                    "loc": {
                      "start": {
                        "line": 176,
                        "column": 8
                      },
                      "end": {
                        "line": 176,
                        "column": 9
                      },
                      "identifierName": "R"
                    },
                    "name": "R"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 4534,
                    "end": 4561,
                    "loc": {
                      "start": {
                        "line": 176,
                        "column": 12
                      },
                      "end": {
                        "line": 176,
                        "column": 39
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4534,
                      "end": 4550,
                      "loc": {
                        "start": {
                          "line": 176,
                          "column": 12
                        },
                        "end": {
                          "line": 176,
                          "column": 28
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4534,
                        "end": 4539,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 12
                          },
                          "end": {
                            "line": 176,
                            "column": 17
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4540,
                        "end": 4550,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 18
                          },
                          "end": {
                            "line": 176,
                            "column": 28
                          },
                          "identifierName": "pointFromX"
                        },
                        "name": "pointFromX"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4551,
                        "end": 4557,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 29
                          },
                          "end": {
                            "line": 176,
                            "column": 35
                          },
                          "identifierName": "isYOdd"
                        },
                        "name": "isYOdd"
                      },
                      {
                        "type": "Identifier",
                        "start": 4559,
                        "end": 4560,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 37
                          },
                          "end": {
                            "line": 176,
                            "column": 38
                          },
                          "identifierName": "x"
                        },
                        "name": "x"
                      }
                    ]
                  }
                }
              ],
              "kind": "var",
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4 Check that nR is at infinity",
                  "start": 4568,
                  "end": 4603,
                  "loc": {
                    "start": {
                      "line": 178,
                      "column": 4
                    },
                    "end": {
                      "line": 178,
                      "column": 39
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4608,
              "end": 4631,
              "loc": {
                "start": {
                  "line": 179,
                  "column": 4
                },
                "end": {
                  "line": 179,
                  "column": 27
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4612,
                  "end": 4630,
                  "loc": {
                    "start": {
                      "line": 179,
                      "column": 8
                    },
                    "end": {
                      "line": 179,
                      "column": 26
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4612,
                    "end": 4614,
                    "loc": {
                      "start": {
                        "line": 179,
                        "column": 8
                      },
                      "end": {
                        "line": 179,
                        "column": 10
                      },
                      "identifierName": "nR"
                    },
                    "name": "nR",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 4617,
                    "end": 4630,
                    "loc": {
                      "start": {
                        "line": 179,
                        "column": 13
                      },
                      "end": {
                        "line": 179,
                        "column": 26
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4617,
                      "end": 4627,
                      "loc": {
                        "start": {
                          "line": 179,
                          "column": 13
                        },
                        "end": {
                          "line": 179,
                          "column": 23
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4617,
                        "end": 4618,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 13
                          },
                          "end": {
                            "line": 179,
                            "column": 14
                          },
                          "identifierName": "R"
                        },
                        "name": "R"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4619,
                        "end": 4627,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 15
                          },
                          "end": {
                            "line": 179,
                            "column": 23
                          },
                          "identifierName": "multiply"
                        },
                        "name": "multiply"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4628,
                        "end": 4629,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 24
                          },
                          "end": {
                            "line": 179,
                            "column": 25
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.4 Check that nR is at infinity",
                  "start": 4568,
                  "end": 4603,
                  "loc": {
                    "start": {
                      "line": 178,
                      "column": 4
                    },
                    "end": {
                      "line": 178,
                      "column": 39
                    }
                  }
                }
              ]
            },
            {
              "type": "ExpressionStatement",
              "start": 4636,
              "end": 4698,
              "loc": {
                "start": {
                  "line": 180,
                  "column": 4
                },
                "end": {
                  "line": 180,
                  "column": 66
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 4636,
                "end": 4697,
                "loc": {
                  "start": {
                    "line": 180,
                    "column": 4
                  },
                  "end": {
                    "line": 180,
                    "column": 65
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 4636,
                  "end": 4642,
                  "loc": {
                    "start": {
                      "line": 180,
                      "column": 4
                    },
                    "end": {
                      "line": 180,
                      "column": 10
                    },
                    "identifierName": "assert"
                  },
                  "name": "assert"
                },
                "arguments": [
                  {
                    "type": "CallExpression",
                    "start": 4643,
                    "end": 4663,
                    "loc": {
                      "start": {
                        "line": 180,
                        "column": 11
                      },
                      "end": {
                        "line": 180,
                        "column": 31
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4643,
                      "end": 4659,
                      "loc": {
                        "start": {
                          "line": 180,
                          "column": 11
                        },
                        "end": {
                          "line": 180,
                          "column": 27
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4643,
                        "end": 4648,
                        "loc": {
                          "start": {
                            "line": 180,
                            "column": 11
                          },
                          "end": {
                            "line": 180,
                            "column": 16
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4649,
                        "end": 4659,
                        "loc": {
                          "start": {
                            "line": 180,
                            "column": 17
                          },
                          "end": {
                            "line": 180,
                            "column": 27
                          },
                          "identifierName": "isInfinity"
                        },
                        "name": "isInfinity"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4660,
                        "end": 4662,
                        "loc": {
                          "start": {
                            "line": 180,
                            "column": 28
                          },
                          "end": {
                            "line": 180,
                            "column": 30
                          },
                          "identifierName": "nR"
                        },
                        "name": "nR"
                      }
                    ]
                  },
                  {
                    "type": "StringLiteral",
                    "start": 4665,
                    "end": 4696,
                    "loc": {
                      "start": {
                        "line": 180,
                        "column": 33
                      },
                      "end": {
                        "line": 180,
                        "column": 64
                      }
                    },
                    "extra": {
                      "rawValue": "nR is not a valid curve point",
                      "raw": "\"nR is not a valid curve point\""
                    },
                    "value": "nR is not a valid curve point"
                  }
                ]
              },
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " Compute -e from e",
                  "start": 4704,
                  "end": 4724,
                  "loc": {
                    "start": {
                      "line": 182,
                      "column": 4
                    },
                    "end": {
                      "line": 182,
                      "column": 24
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4729,
              "end": 4758,
              "loc": {
                "start": {
                  "line": 183,
                  "column": 4
                },
                "end": {
                  "line": 183,
                  "column": 33
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4733,
                  "end": 4757,
                  "loc": {
                    "start": {
                      "line": 183,
                      "column": 8
                    },
                    "end": {
                      "line": 183,
                      "column": 32
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4733,
                    "end": 4737,
                    "loc": {
                      "start": {
                        "line": 183,
                        "column": 8
                      },
                      "end": {
                        "line": 183,
                        "column": 12
                      },
                      "identifierName": "eNeg"
                    },
                    "name": "eNeg",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 4740,
                    "end": 4757,
                    "loc": {
                      "start": {
                        "line": 183,
                        "column": 15
                      },
                      "end": {
                        "line": 183,
                        "column": 32
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4740,
                      "end": 4754,
                      "loc": {
                        "start": {
                          "line": 183,
                          "column": 15
                        },
                        "end": {
                          "line": 183,
                          "column": 29
                        }
                      },
                      "object": {
                        "type": "CallExpression",
                        "start": 4740,
                        "end": 4750,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 15
                          },
                          "end": {
                            "line": 183,
                            "column": 25
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4740,
                          "end": 4748,
                          "loc": {
                            "start": {
                              "line": 183,
                              "column": 15
                            },
                            "end": {
                              "line": 183,
                              "column": 23
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4740,
                            "end": 4741,
                            "loc": {
                              "start": {
                                "line": 183,
                                "column": 15
                              },
                              "end": {
                                "line": 183,
                                "column": 16
                              },
                              "identifierName": "e"
                            },
                            "name": "e"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4742,
                            "end": 4748,
                            "loc": {
                              "start": {
                                "line": 183,
                                "column": 17
                              },
                              "end": {
                                "line": 183,
                                "column": 23
                              },
                              "identifierName": "negate"
                            },
                            "name": "negate"
                          },
                          "computed": false
                        },
                        "arguments": []
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4751,
                        "end": 4754,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 26
                          },
                          "end": {
                            "line": 183,
                            "column": 29
                          },
                          "identifierName": "mod"
                        },
                        "name": "mod"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4755,
                        "end": 4756,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 30
                          },
                          "end": {
                            "line": 183,
                            "column": 31
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " Compute -e from e",
                  "start": 4704,
                  "end": 4724,
                  "loc": {
                    "start": {
                      "line": 182,
                      "column": 4
                    },
                    "end": {
                      "line": 182,
                      "column": 24
                    }
                  }
                }
              ],
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.6.1 Compute Q = r^-1 (sR -  eG)",
                  "start": 4764,
                  "end": 4800,
                  "loc": {
                    "start": {
                      "line": 185,
                      "column": 4
                    },
                    "end": {
                      "line": 185,
                      "column": 40
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": "               Q = r^-1 (sR + -eG)",
                  "start": 4805,
                  "end": 4841,
                  "loc": {
                    "start": {
                      "line": 186,
                      "column": 4
                    },
                    "end": {
                      "line": 186,
                      "column": 40
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4846,
              "end": 4873,
              "loc": {
                "start": {
                  "line": 187,
                  "column": 4
                },
                "end": {
                  "line": 187,
                  "column": 31
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4850,
                  "end": 4872,
                  "loc": {
                    "start": {
                      "line": 187,
                      "column": 8
                    },
                    "end": {
                      "line": 187,
                      "column": 30
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4850,
                    "end": 4854,
                    "loc": {
                      "start": {
                        "line": 187,
                        "column": 8
                      },
                      "end": {
                        "line": 187,
                        "column": 12
                      },
                      "identifierName": "rInv"
                    },
                    "name": "rInv",
                    "leadingComments": null
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 4857,
                    "end": 4872,
                    "loc": {
                      "start": {
                        "line": 187,
                        "column": 15
                      },
                      "end": {
                        "line": 187,
                        "column": 30
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4857,
                      "end": 4869,
                      "loc": {
                        "start": {
                          "line": 187,
                          "column": 15
                        },
                        "end": {
                          "line": 187,
                          "column": 27
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4857,
                        "end": 4858,
                        "loc": {
                          "start": {
                            "line": 187,
                            "column": 15
                          },
                          "end": {
                            "line": 187,
                            "column": 16
                          },
                          "identifierName": "r"
                        },
                        "name": "r"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4859,
                        "end": 4869,
                        "loc": {
                          "start": {
                            "line": 187,
                            "column": 17
                          },
                          "end": {
                            "line": 187,
                            "column": 27
                          },
                          "identifierName": "modInverse"
                        },
                        "name": "modInverse"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4870,
                        "end": 4871,
                        "loc": {
                          "start": {
                            "line": 187,
                            "column": 28
                          },
                          "end": {
                            "line": 187,
                            "column": 29
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      }
                    ]
                  },
                  "leadingComments": null
                }
              ],
              "kind": "var",
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " 1.6.1 Compute Q = r^-1 (sR -  eG)",
                  "start": 4764,
                  "end": 4800,
                  "loc": {
                    "start": {
                      "line": 185,
                      "column": 4
                    },
                    "end": {
                      "line": 185,
                      "column": 40
                    }
                  }
                },
                {
                  "type": "CommentLine",
                  "value": "               Q = r^-1 (sR + -eG)",
                  "start": 4805,
                  "end": 4841,
                  "loc": {
                    "start": {
                      "line": 186,
                      "column": 4
                    },
                    "end": {
                      "line": 186,
                      "column": 40
                    }
                  }
                }
              ]
            },
            {
              "type": "VariableDeclaration",
              "start": 4879,
              "end": 4928,
              "loc": {
                "start": {
                  "line": 189,
                  "column": 4
                },
                "end": {
                  "line": 189,
                  "column": 53
                }
              },
              "declarations": [
                {
                  "type": "VariableDeclarator",
                  "start": 4883,
                  "end": 4927,
                  "loc": {
                    "start": {
                      "line": 189,
                      "column": 8
                    },
                    "end": {
                      "line": 189,
                      "column": 52
                    }
                  },
                  "id": {
                    "type": "Identifier",
                    "start": 4883,
                    "end": 4884,
                    "loc": {
                      "start": {
                        "line": 189,
                        "column": 8
                      },
                      "end": {
                        "line": 189,
                        "column": 9
                      },
                      "identifierName": "Q"
                    },
                    "name": "Q"
                  },
                  "init": {
                    "type": "CallExpression",
                    "start": 4887,
                    "end": 4927,
                    "loc": {
                      "start": {
                        "line": 189,
                        "column": 12
                      },
                      "end": {
                        "line": 189,
                        "column": 52
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4887,
                      "end": 4921,
                      "loc": {
                        "start": {
                          "line": 189,
                          "column": 12
                        },
                        "end": {
                          "line": 189,
                          "column": 46
                        }
                      },
                      "object": {
                        "type": "CallExpression",
                        "start": 4887,
                        "end": 4912,
                        "loc": {
                          "start": {
                            "line": 189,
                            "column": 12
                          },
                          "end": {
                            "line": 189,
                            "column": 37
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4887,
                          "end": 4900,
                          "loc": {
                            "start": {
                              "line": 189,
                              "column": 12
                            },
                            "end": {
                              "line": 189,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4887,
                            "end": 4888,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 12
                              },
                              "end": {
                                "line": 189,
                                "column": 13
                              },
                              "identifierName": "R"
                            },
                            "name": "R"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4889,
                            "end": 4900,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 14
                              },
                              "end": {
                                "line": 189,
                                "column": 25
                              },
                              "identifierName": "multiplyTwo"
                            },
                            "name": "multiplyTwo"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4901,
                            "end": 4902,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 26
                              },
                              "end": {
                                "line": 189,
                                "column": 27
                              },
                              "identifierName": "s"
                            },
                            "name": "s"
                          },
                          {
                            "type": "Identifier",
                            "start": 4904,
                            "end": 4905,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 29
                              },
                              "end": {
                                "line": 189,
                                "column": 30
                              },
                              "identifierName": "G"
                            },
                            "name": "G"
                          },
                          {
                            "type": "Identifier",
                            "start": 4907,
                            "end": 4911,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 32
                              },
                              "end": {
                                "line": 189,
                                "column": 36
                              },
                              "identifierName": "eNeg"
                            },
                            "name": "eNeg"
                          }
                        ]
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4913,
                        "end": 4921,
                        "loc": {
                          "start": {
                            "line": 189,
                            "column": 38
                          },
                          "end": {
                            "line": 189,
                            "column": 46
                          },
                          "identifierName": "multiply"
                        },
                        "name": "multiply"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4922,
                        "end": 4926,
                        "loc": {
                          "start": {
                            "line": 189,
                            "column": 47
                          },
                          "end": {
                            "line": 189,
                            "column": 51
                          },
                          "identifierName": "rInv"
                        },
                        "name": "rInv"
                      }
                    ]
                  }
                }
              ],
              "kind": "var"
            },
            {
              "type": "ExpressionStatement",
              "start": 4933,
              "end": 4951,
              "loc": {
                "start": {
                  "line": 190,
                  "column": 4
                },
                "end": {
                  "line": 190,
                  "column": 22
                }
              },
              "expression": {
                "type": "CallExpression",
                "start": 4933,
                "end": 4950,
                "loc": {
                  "start": {
                    "line": 190,
                    "column": 4
                  },
                  "end": {
                    "line": 190,
                    "column": 21
                  }
                },
                "callee": {
                  "type": "MemberExpression",
                  "start": 4933,
                  "end": 4947,
                  "loc": {
                    "start": {
                      "line": 190,
                      "column": 4
                    },
                    "end": {
                      "line": 190,
                      "column": 18
                    }
                  },
                  "object": {
                    "type": "Identifier",
                    "start": 4933,
                    "end": 4938,
                    "loc": {
                      "start": {
                        "line": 190,
                        "column": 4
                      },
                      "end": {
                        "line": 190,
                        "column": 9
                      },
                      "identifierName": "curve"
                    },
                    "name": "curve"
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 4939,
                    "end": 4947,
                    "loc": {
                      "start": {
                        "line": 190,
                        "column": 10
                      },
                      "end": {
                        "line": 190,
                        "column": 18
                      },
                      "identifierName": "validate"
                    },
                    "name": "validate"
                  },
                  "computed": false
                },
                "arguments": [
                  {
                    "type": "Identifier",
                    "start": 4948,
                    "end": 4949,
                    "loc": {
                      "start": {
                        "line": 190,
                        "column": 19
                      },
                      "end": {
                        "line": 190,
                        "column": 20
                      },
                      "identifierName": "Q"
                    },
                    "name": "Q"
                  }
                ]
              }
            },
            {
              "type": "ReturnStatement",
              "start": 4957,
              "end": 4966,
              "loc": {
                "start": {
                  "line": 192,
                  "column": 4
                },
                "end": {
                  "line": 192,
                  "column": 13
                }
              },
              "argument": {
                "type": "Identifier",
                "start": 4964,
                "end": 4965,
                "loc": {
                  "start": {
                    "line": 192,
                    "column": 11
                  },
                  "end": {
                    "line": 192,
                    "column": 12
                  },
                  "identifierName": "Q"
                },
                "name": "Q"
              }
            }
          ],
          "directives": [],
          "trailingComments": null
        },
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 5343,
        "end": 5656,
        "loc": {
          "start": {
            "line": 206,
            "column": 0
          },
          "end": {
            "line": 217,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 5352,
          "end": 5375,
          "loc": {
            "start": {
              "line": 206,
              "column": 9
            },
            "end": {
              "line": 206,
              "column": 32
            },
            "identifierName": "calcPubKeyRecoveryParam"
          },
          "name": "calcPubKeyRecoveryParam",
          "leadingComments": null
        },
        "generator": false,
        "expression": false,
        "async": false,
        "params": [
          {
            "type": "Identifier",
            "start": 5376,
            "end": 5381,
            "loc": {
              "start": {
                "line": 206,
                "column": 33
              },
              "end": {
                "line": 206,
                "column": 38
              },
              "identifierName": "curve"
            },
            "name": "curve"
          },
          {
            "type": "Identifier",
            "start": 5383,
            "end": 5384,
            "loc": {
              "start": {
                "line": 206,
                "column": 40
              },
              "end": {
                "line": 206,
                "column": 41
              },
              "identifierName": "e"
            },
            "name": "e"
          },
          {
            "type": "Identifier",
            "start": 5386,
            "end": 5395,
            "loc": {
              "start": {
                "line": 206,
                "column": 43
              },
              "end": {
                "line": 206,
                "column": 52
              },
              "identifierName": "signature"
            },
            "name": "signature"
          },
          {
            "type": "Identifier",
            "start": 5397,
            "end": 5398,
            "loc": {
              "start": {
                "line": 206,
                "column": 54
              },
              "end": {
                "line": 206,
                "column": 55
              },
              "identifierName": "Q"
            },
            "name": "Q"
          }
        ],
        "body": {
          "type": "BlockStatement",
          "start": 5400,
          "end": 5656,
          "loc": {
            "start": {
              "line": 206,
              "column": 57
            },
            "end": {
              "line": 217,
              "column": 1
            }
          },
          "body": [
            {
              "type": "ForStatement",
              "start": 5406,
              "end": 5592,
              "loc": {
                "start": {
                  "line": 207,
                  "column": 4
                },
                "end": {
                  "line": 214,
                  "column": 5
                }
              },
              "init": {
                "type": "VariableDeclaration",
                "start": 5411,
                "end": 5420,
                "loc": {
                  "start": {
                    "line": 207,
                    "column": 9
                  },
                  "end": {
                    "line": 207,
                    "column": 18
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 5415,
                    "end": 5420,
                    "loc": {
                      "start": {
                        "line": 207,
                        "column": 13
                      },
                      "end": {
                        "line": 207,
                        "column": 18
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 5415,
                      "end": 5416,
                      "loc": {
                        "start": {
                          "line": 207,
                          "column": 13
                        },
                        "end": {
                          "line": 207,
                          "column": 14
                        },
                        "identifierName": "i"
                      },
                      "name": "i"
                    },
                    "init": {
                      "type": "NumericLiteral",
                      "start": 5419,
                      "end": 5420,
                      "loc": {
                        "start": {
                          "line": 207,
                          "column": 17
                        },
                        "end": {
                          "line": 207,
                          "column": 18
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    }
                  }
                ],
                "kind": "var"
              },
              "test": {
                "type": "BinaryExpression",
                "start": 5422,
                "end": 5427,
                "loc": {
                  "start": {
                    "line": 207,
                    "column": 20
                  },
                  "end": {
                    "line": 207,
                    "column": 25
                  }
                },
                "left": {
                  "type": "Identifier",
                  "start": 5422,
                  "end": 5423,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 20
                    },
                    "end": {
                      "line": 207,
                      "column": 21
                    },
                    "identifierName": "i"
                  },
                  "name": "i"
                },
                "operator": "<",
                "right": {
                  "type": "NumericLiteral",
                  "start": 5426,
                  "end": 5427,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 24
                    },
                    "end": {
                      "line": 207,
                      "column": 25
                    }
                  },
                  "extra": {
                    "rawValue": 4,
                    "raw": "4"
                  },
                  "value": 4
                }
              },
              "update": {
                "type": "UpdateExpression",
                "start": 5429,
                "end": 5432,
                "loc": {
                  "start": {
                    "line": 207,
                    "column": 27
                  },
                  "end": {
                    "line": 207,
                    "column": 30
                  }
                },
                "operator": "++",
                "prefix": false,
                "argument": {
                  "type": "Identifier",
                  "start": 5429,
                  "end": 5430,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 27
                    },
                    "end": {
                      "line": 207,
                      "column": 28
                    },
                    "identifierName": "i"
                  },
                  "name": "i"
                }
              },
              "body": {
                "type": "BlockStatement",
                "start": 5434,
                "end": 5592,
                "loc": {
                  "start": {
                    "line": 207,
                    "column": 32
                  },
                  "end": {
                    "line": 214,
                    "column": 5
                  }
                },
                "body": [
                  {
                    "type": "VariableDeclaration",
                    "start": 5444,
                    "end": 5495,
                    "loc": {
                      "start": {
                        "line": 208,
                        "column": 8
                      },
                      "end": {
                        "line": 208,
                        "column": 59
                      }
                    },
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "start": 5448,
                        "end": 5494,
                        "loc": {
                          "start": {
                            "line": 208,
                            "column": 12
                          },
                          "end": {
                            "line": 208,
                            "column": 58
                          }
                        },
                        "id": {
                          "type": "Identifier",
                          "start": 5448,
                          "end": 5454,
                          "loc": {
                            "start": {
                              "line": 208,
                              "column": 12
                            },
                            "end": {
                              "line": 208,
                              "column": 18
                            },
                            "identifierName": "Qprime"
                          },
                          "name": "Qprime"
                        },
                        "init": {
                          "type": "CallExpression",
                          "start": 5457,
                          "end": 5494,
                          "loc": {
                            "start": {
                              "line": 208,
                              "column": 21
                            },
                            "end": {
                              "line": 208,
                              "column": 58
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 5457,
                            "end": 5470,
                            "loc": {
                              "start": {
                                "line": 208,
                                "column": 21
                              },
                              "end": {
                                "line": 208,
                                "column": 34
                              },
                              "identifierName": "recoverPubKey"
                            },
                            "name": "recoverPubKey"
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 5471,
                              "end": 5476,
                              "loc": {
                                "start": {
                                  "line": 208,
                                  "column": 35
                                },
                                "end": {
                                  "line": 208,
                                  "column": 40
                                },
                                "identifierName": "curve"
                              },
                              "name": "curve"
                            },
                            {
                              "type": "Identifier",
                              "start": 5478,
                              "end": 5479,
                              "loc": {
                                "start": {
                                  "line": 208,
                                  "column": 42
                                },
                                "end": {
                                  "line": 208,
                                  "column": 43
                                },
                                "identifierName": "e"
                              },
                              "name": "e"
                            },
                            {
                              "type": "Identifier",
                              "start": 5481,
                              "end": 5490,
                              "loc": {
                                "start": {
                                  "line": 208,
                                  "column": 45
                                },
                                "end": {
                                  "line": 208,
                                  "column": 54
                                },
                                "identifierName": "signature"
                              },
                              "name": "signature"
                            },
                            {
                              "type": "Identifier",
                              "start": 5492,
                              "end": 5493,
                              "loc": {
                                "start": {
                                  "line": 208,
                                  "column": 56
                                },
                                "end": {
                                  "line": 208,
                                  "column": 57
                                },
                                "identifierName": "i"
                              },
                              "name": "i"
                            }
                          ]
                        }
                      }
                    ],
                    "kind": "var",
                    "trailingComments": [
                      {
                        "type": "CommentLine",
                        "value": " 1.6.2 Verify Q",
                        "start": 5505,
                        "end": 5522,
                        "loc": {
                          "start": {
                            "line": 210,
                            "column": 8
                          },
                          "end": {
                            "line": 210,
                            "column": 25
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "IfStatement",
                    "start": 5531,
                    "end": 5586,
                    "loc": {
                      "start": {
                        "line": 211,
                        "column": 8
                      },
                      "end": {
                        "line": 213,
                        "column": 9
                      }
                    },
                    "test": {
                      "type": "CallExpression",
                      "start": 5535,
                      "end": 5551,
                      "loc": {
                        "start": {
                          "line": 211,
                          "column": 12
                        },
                        "end": {
                          "line": 211,
                          "column": 28
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 5535,
                        "end": 5548,
                        "loc": {
                          "start": {
                            "line": 211,
                            "column": 12
                          },
                          "end": {
                            "line": 211,
                            "column": 25
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 5535,
                          "end": 5541,
                          "loc": {
                            "start": {
                              "line": 211,
                              "column": 12
                            },
                            "end": {
                              "line": 211,
                              "column": 18
                            },
                            "identifierName": "Qprime"
                          },
                          "name": "Qprime",
                          "leadingComments": null
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 5542,
                          "end": 5548,
                          "loc": {
                            "start": {
                              "line": 211,
                              "column": 19
                            },
                            "end": {
                              "line": 211,
                              "column": 25
                            },
                            "identifierName": "equals"
                          },
                          "name": "equals"
                        },
                        "computed": false,
                        "leadingComments": null
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 5549,
                          "end": 5550,
                          "loc": {
                            "start": {
                              "line": 211,
                              "column": 26
                            },
                            "end": {
                              "line": 211,
                              "column": 27
                            },
                            "identifierName": "Q"
                          },
                          "name": "Q"
                        }
                      ],
                      "leadingComments": null
                    },
                    "consequent": {
                      "type": "BlockStatement",
                      "start": 5553,
                      "end": 5586,
                      "loc": {
                        "start": {
                          "line": 211,
                          "column": 30
                        },
                        "end": {
                          "line": 213,
                          "column": 9
                        }
                      },
                      "body": [
                        {
                          "type": "ReturnStatement",
                          "start": 5567,
                          "end": 5576,
                          "loc": {
                            "start": {
                              "line": 212,
                              "column": 12
                            },
                            "end": {
                              "line": 212,
                              "column": 21
                            }
                          },
                          "argument": {
                            "type": "Identifier",
                            "start": 5574,
                            "end": 5575,
                            "loc": {
                              "start": {
                                "line": 212,
                                "column": 19
                              },
                              "end": {
                                "line": 212,
                                "column": 20
                              },
                              "identifierName": "i"
                            },
                            "name": "i"
                          }
                        }
                      ],
                      "directives": []
                    },
                    "alternate": null,
                    "leadingComments": [
                      {
                        "type": "CommentLine",
                        "value": " 1.6.2 Verify Q",
                        "start": 5505,
                        "end": 5522,
                        "loc": {
                          "start": {
                            "line": 210,
                            "column": 8
                          },
                          "end": {
                            "line": 210,
                            "column": 25
                          }
                        }
                      }
                    ]
                  }
                ],
                "directives": []
              }
            },
            {
              "type": "ThrowStatement",
              "start": 5598,
              "end": 5654,
              "loc": {
                "start": {
                  "line": 216,
                  "column": 4
                },
                "end": {
                  "line": 216,
                  "column": 60
                }
              },
              "argument": {
                "type": "NewExpression",
                "start": 5604,
                "end": 5653,
                "loc": {
                  "start": {
                    "line": 216,
                    "column": 10
                  },
                  "end": {
                    "line": 216,
                    "column": 59
                  }
                },
                "callee": {
                  "type": "Identifier",
                  "start": 5608,
                  "end": 5613,
                  "loc": {
                    "start": {
                      "line": 216,
                      "column": 14
                    },
                    "end": {
                      "line": 216,
                      "column": 19
                    },
                    "identifierName": "Error"
                  },
                  "name": "Error"
                },
                "arguments": [
                  {
                    "type": "StringLiteral",
                    "start": 5614,
                    "end": 5652,
                    "loc": {
                      "start": {
                        "line": 216,
                        "column": 20
                      },
                      "end": {
                        "line": 216,
                        "column": 58
                      }
                    },
                    "extra": {
                      "rawValue": "Unable to find valid recovery factor",
                      "raw": "\"Unable to find valid recovery factor\""
                    },
                    "value": "Unable to find valid recovery factor"
                  }
                ]
              }
            }
          ],
          "directives": []
        },
        "leadingComments": [],
        "name": "_",
        "trailingComments": []
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": null,
        "specifiers": [
          {
            "type": "ExportSpecifier",
            "start": 5671,
            "end": 5694,
            "loc": {
              "start": {
                "line": 220,
                "column": 4
              },
              "end": {
                "line": 220,
                "column": 27
              }
            },
            "local": {
              "type": "Identifier",
              "start": 5671,
              "end": 5694,
              "loc": {
                "start": {
                  "line": 220,
                  "column": 4
                },
                "end": {
                  "line": 220,
                  "column": 27
                },
                "identifierName": "calcPubKeyRecoveryParam"
              },
              "name": "calcPubKeyRecoveryParam"
            },
            "exported": {
              "type": "Identifier",
              "start": 5671,
              "end": 5694,
              "loc": {
                "start": {
                  "line": 220,
                  "column": 4
                },
                "end": {
                  "line": 220,
                  "column": 27
                },
                "identifierName": "calcPubKeyRecoveryParam"
              },
              "name": "calcPubKeyRecoveryParam"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 5700,
            "end": 5722,
            "loc": {
              "start": {
                "line": 221,
                "column": 4
              },
              "end": {
                "line": 221,
                "column": 26
              }
            },
            "local": {
              "type": "Identifier",
              "start": 5700,
              "end": 5722,
              "loc": {
                "start": {
                  "line": 221,
                  "column": 4
                },
                "end": {
                  "line": 221,
                  "column": 26
                },
                "identifierName": "deterministicGenerateK"
              },
              "name": "deterministicGenerateK"
            },
            "exported": {
              "type": "Identifier",
              "start": 5700,
              "end": 5722,
              "loc": {
                "start": {
                  "line": 221,
                  "column": 4
                },
                "end": {
                  "line": 221,
                  "column": 26
                },
                "identifierName": "deterministicGenerateK"
              },
              "name": "deterministicGenerateK"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 5728,
            "end": 5741,
            "loc": {
              "start": {
                "line": 222,
                "column": 4
              },
              "end": {
                "line": 222,
                "column": 17
              }
            },
            "local": {
              "type": "Identifier",
              "start": 5728,
              "end": 5741,
              "loc": {
                "start": {
                  "line": 222,
                  "column": 4
                },
                "end": {
                  "line": 222,
                  "column": 17
                },
                "identifierName": "recoverPubKey"
              },
              "name": "recoverPubKey"
            },
            "exported": {
              "type": "Identifier",
              "start": 5728,
              "end": 5741,
              "loc": {
                "start": {
                  "line": 222,
                  "column": 4
                },
                "end": {
                  "line": 222,
                  "column": 17
                },
                "identifierName": "recoverPubKey"
              },
              "name": "recoverPubKey"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 5747,
            "end": 5751,
            "loc": {
              "start": {
                "line": 223,
                "column": 4
              },
              "end": {
                "line": 223,
                "column": 8
              }
            },
            "local": {
              "type": "Identifier",
              "start": 5747,
              "end": 5751,
              "loc": {
                "start": {
                  "line": 223,
                  "column": 4
                },
                "end": {
                  "line": 223,
                  "column": 8
                },
                "identifierName": "sign"
              },
              "name": "sign"
            },
            "exported": {
              "type": "Identifier",
              "start": 5747,
              "end": 5751,
              "loc": {
                "start": {
                  "line": 223,
                  "column": 4
                },
                "end": {
                  "line": 223,
                  "column": 8
                },
                "identifierName": "sign"
              },
              "name": "sign"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 5757,
            "end": 5763,
            "loc": {
              "start": {
                "line": 224,
                "column": 4
              },
              "end": {
                "line": 224,
                "column": 10
              }
            },
            "local": {
              "type": "Identifier",
              "start": 5757,
              "end": 5763,
              "loc": {
                "start": {
                  "line": 224,
                  "column": 4
                },
                "end": {
                  "line": 224,
                  "column": 10
                },
                "identifierName": "verify"
              },
              "name": "verify"
            },
            "exported": {
              "type": "Identifier",
              "start": 5757,
              "end": 5763,
              "loc": {
                "start": {
                  "line": 224,
                  "column": 4
                },
                "end": {
                  "line": 224,
                  "column": 10
                },
                "identifierName": "verify"
              },
              "name": "verify"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 5769,
            "end": 5778,
            "loc": {
              "start": {
                "line": 225,
                "column": 4
              },
              "end": {
                "line": 225,
                "column": 13
              }
            },
            "local": {
              "type": "Identifier",
              "start": 5769,
              "end": 5778,
              "loc": {
                "start": {
                  "line": 225,
                  "column": 4
                },
                "end": {
                  "line": 225,
                  "column": 13
                },
                "identifierName": "verifyRaw"
              },
              "name": "verifyRaw"
            },
            "exported": {
              "type": "Identifier",
              "start": 5769,
              "end": 5778,
              "loc": {
                "start": {
                  "line": 225,
                  "column": 4
                },
                "end": {
                  "line": 225,
                  "column": 13
                },
                "identifierName": "verifyRaw"
              },
              "name": "verifyRaw"
            }
          }
        ],
        "source": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 5343,
          "end": 5656,
          "loc": {
            "start": {
              "line": 206,
              "column": 0
            },
            "end": {
              "line": 217,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 5352,
            "end": 5375,
            "loc": {
              "start": {
                "line": 206,
                "column": 9
              },
              "end": {
                "line": 206,
                "column": 32
              },
              "identifierName": "calcPubKeyRecoveryParam"
            },
            "name": "calcPubKeyRecoveryParam",
            "leadingComments": null
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 5376,
              "end": 5381,
              "loc": {
                "start": {
                  "line": 206,
                  "column": 33
                },
                "end": {
                  "line": 206,
                  "column": 38
                },
                "identifierName": "curve"
              },
              "name": "curve"
            },
            {
              "type": "Identifier",
              "start": 5383,
              "end": 5384,
              "loc": {
                "start": {
                  "line": 206,
                  "column": 40
                },
                "end": {
                  "line": 206,
                  "column": 41
                },
                "identifierName": "e"
              },
              "name": "e"
            },
            {
              "type": "Identifier",
              "start": 5386,
              "end": 5395,
              "loc": {
                "start": {
                  "line": 206,
                  "column": 43
                },
                "end": {
                  "line": 206,
                  "column": 52
                },
                "identifierName": "signature"
              },
              "name": "signature"
            },
            {
              "type": "Identifier",
              "start": 5397,
              "end": 5398,
              "loc": {
                "start": {
                  "line": 206,
                  "column": 54
                },
                "end": {
                  "line": 206,
                  "column": 55
                },
                "identifierName": "Q"
              },
              "name": "Q"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 5400,
            "end": 5656,
            "loc": {
              "start": {
                "line": 206,
                "column": 57
              },
              "end": {
                "line": 217,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ForStatement",
                "start": 5406,
                "end": 5592,
                "loc": {
                  "start": {
                    "line": 207,
                    "column": 4
                  },
                  "end": {
                    "line": 214,
                    "column": 5
                  }
                },
                "init": {
                  "type": "VariableDeclaration",
                  "start": 5411,
                  "end": 5420,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 9
                    },
                    "end": {
                      "line": 207,
                      "column": 18
                    }
                  },
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "start": 5415,
                      "end": 5420,
                      "loc": {
                        "start": {
                          "line": 207,
                          "column": 13
                        },
                        "end": {
                          "line": 207,
                          "column": 18
                        }
                      },
                      "id": {
                        "type": "Identifier",
                        "start": 5415,
                        "end": 5416,
                        "loc": {
                          "start": {
                            "line": 207,
                            "column": 13
                          },
                          "end": {
                            "line": 207,
                            "column": 14
                          },
                          "identifierName": "i"
                        },
                        "name": "i"
                      },
                      "init": {
                        "type": "NumericLiteral",
                        "start": 5419,
                        "end": 5420,
                        "loc": {
                          "start": {
                            "line": 207,
                            "column": 17
                          },
                          "end": {
                            "line": 207,
                            "column": 18
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      }
                    }
                  ],
                  "kind": "var"
                },
                "test": {
                  "type": "BinaryExpression",
                  "start": 5422,
                  "end": 5427,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 20
                    },
                    "end": {
                      "line": 207,
                      "column": 25
                    }
                  },
                  "left": {
                    "type": "Identifier",
                    "start": 5422,
                    "end": 5423,
                    "loc": {
                      "start": {
                        "line": 207,
                        "column": 20
                      },
                      "end": {
                        "line": 207,
                        "column": 21
                      },
                      "identifierName": "i"
                    },
                    "name": "i"
                  },
                  "operator": "<",
                  "right": {
                    "type": "NumericLiteral",
                    "start": 5426,
                    "end": 5427,
                    "loc": {
                      "start": {
                        "line": 207,
                        "column": 24
                      },
                      "end": {
                        "line": 207,
                        "column": 25
                      }
                    },
                    "extra": {
                      "rawValue": 4,
                      "raw": "4"
                    },
                    "value": 4
                  }
                },
                "update": {
                  "type": "UpdateExpression",
                  "start": 5429,
                  "end": 5432,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 27
                    },
                    "end": {
                      "line": 207,
                      "column": 30
                    }
                  },
                  "operator": "++",
                  "prefix": false,
                  "argument": {
                    "type": "Identifier",
                    "start": 5429,
                    "end": 5430,
                    "loc": {
                      "start": {
                        "line": 207,
                        "column": 27
                      },
                      "end": {
                        "line": 207,
                        "column": 28
                      },
                      "identifierName": "i"
                    },
                    "name": "i"
                  }
                },
                "body": {
                  "type": "BlockStatement",
                  "start": 5434,
                  "end": 5592,
                  "loc": {
                    "start": {
                      "line": 207,
                      "column": 32
                    },
                    "end": {
                      "line": 214,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 5444,
                      "end": 5495,
                      "loc": {
                        "start": {
                          "line": 208,
                          "column": 8
                        },
                        "end": {
                          "line": 208,
                          "column": 59
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 5448,
                          "end": 5494,
                          "loc": {
                            "start": {
                              "line": 208,
                              "column": 12
                            },
                            "end": {
                              "line": 208,
                              "column": 58
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 5448,
                            "end": 5454,
                            "loc": {
                              "start": {
                                "line": 208,
                                "column": 12
                              },
                              "end": {
                                "line": 208,
                                "column": 18
                              },
                              "identifierName": "Qprime"
                            },
                            "name": "Qprime"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 5457,
                            "end": 5494,
                            "loc": {
                              "start": {
                                "line": 208,
                                "column": 21
                              },
                              "end": {
                                "line": 208,
                                "column": 58
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 5457,
                              "end": 5470,
                              "loc": {
                                "start": {
                                  "line": 208,
                                  "column": 21
                                },
                                "end": {
                                  "line": 208,
                                  "column": 34
                                },
                                "identifierName": "recoverPubKey"
                              },
                              "name": "recoverPubKey"
                            },
                            "arguments": [
                              {
                                "type": "Identifier",
                                "start": 5471,
                                "end": 5476,
                                "loc": {
                                  "start": {
                                    "line": 208,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 208,
                                    "column": 40
                                  },
                                  "identifierName": "curve"
                                },
                                "name": "curve"
                              },
                              {
                                "type": "Identifier",
                                "start": 5478,
                                "end": 5479,
                                "loc": {
                                  "start": {
                                    "line": 208,
                                    "column": 42
                                  },
                                  "end": {
                                    "line": 208,
                                    "column": 43
                                  },
                                  "identifierName": "e"
                                },
                                "name": "e"
                              },
                              {
                                "type": "Identifier",
                                "start": 5481,
                                "end": 5490,
                                "loc": {
                                  "start": {
                                    "line": 208,
                                    "column": 45
                                  },
                                  "end": {
                                    "line": 208,
                                    "column": 54
                                  },
                                  "identifierName": "signature"
                                },
                                "name": "signature"
                              },
                              {
                                "type": "Identifier",
                                "start": 5492,
                                "end": 5493,
                                "loc": {
                                  "start": {
                                    "line": 208,
                                    "column": 56
                                  },
                                  "end": {
                                    "line": 208,
                                    "column": 57
                                  },
                                  "identifierName": "i"
                                },
                                "name": "i"
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "var",
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " 1.6.2 Verify Q",
                          "start": 5505,
                          "end": 5522,
                          "loc": {
                            "start": {
                              "line": 210,
                              "column": 8
                            },
                            "end": {
                              "line": 210,
                              "column": 25
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 5531,
                      "end": 5586,
                      "loc": {
                        "start": {
                          "line": 211,
                          "column": 8
                        },
                        "end": {
                          "line": 213,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "CallExpression",
                        "start": 5535,
                        "end": 5551,
                        "loc": {
                          "start": {
                            "line": 211,
                            "column": 12
                          },
                          "end": {
                            "line": 211,
                            "column": 28
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 5535,
                          "end": 5548,
                          "loc": {
                            "start": {
                              "line": 211,
                              "column": 12
                            },
                            "end": {
                              "line": 211,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 5535,
                            "end": 5541,
                            "loc": {
                              "start": {
                                "line": 211,
                                "column": 12
                              },
                              "end": {
                                "line": 211,
                                "column": 18
                              },
                              "identifierName": "Qprime"
                            },
                            "name": "Qprime",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5542,
                            "end": 5548,
                            "loc": {
                              "start": {
                                "line": 211,
                                "column": 19
                              },
                              "end": {
                                "line": 211,
                                "column": 25
                              },
                              "identifierName": "equals"
                            },
                            "name": "equals"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 5549,
                            "end": 5550,
                            "loc": {
                              "start": {
                                "line": 211,
                                "column": 26
                              },
                              "end": {
                                "line": 211,
                                "column": 27
                              },
                              "identifierName": "Q"
                            },
                            "name": "Q"
                          }
                        ],
                        "leadingComments": null
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 5553,
                        "end": 5586,
                        "loc": {
                          "start": {
                            "line": 211,
                            "column": 30
                          },
                          "end": {
                            "line": 213,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "ReturnStatement",
                            "start": 5567,
                            "end": 5576,
                            "loc": {
                              "start": {
                                "line": 212,
                                "column": 12
                              },
                              "end": {
                                "line": 212,
                                "column": 21
                              }
                            },
                            "argument": {
                              "type": "Identifier",
                              "start": 5574,
                              "end": 5575,
                              "loc": {
                                "start": {
                                  "line": 212,
                                  "column": 19
                                },
                                "end": {
                                  "line": 212,
                                  "column": 20
                                },
                                "identifierName": "i"
                              },
                              "name": "i"
                            }
                          }
                        ],
                        "directives": []
                      },
                      "alternate": null,
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " 1.6.2 Verify Q",
                          "start": 5505,
                          "end": 5522,
                          "loc": {
                            "start": {
                              "line": 210,
                              "column": 8
                            },
                            "end": {
                              "line": 210,
                              "column": 25
                            }
                          }
                        }
                      ]
                    }
                  ],
                  "directives": []
                }
              },
              {
                "type": "ThrowStatement",
                "start": 5598,
                "end": 5654,
                "loc": {
                  "start": {
                    "line": 216,
                    "column": 4
                  },
                  "end": {
                    "line": 216,
                    "column": 60
                  }
                },
                "argument": {
                  "type": "NewExpression",
                  "start": 5604,
                  "end": 5653,
                  "loc": {
                    "start": {
                      "line": 216,
                      "column": 10
                    },
                    "end": {
                      "line": 216,
                      "column": 59
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 5608,
                    "end": 5613,
                    "loc": {
                      "start": {
                        "line": 216,
                        "column": 14
                      },
                      "end": {
                        "line": 216,
                        "column": 19
                      },
                      "identifierName": "Error"
                    },
                    "name": "Error"
                  },
                  "arguments": [
                    {
                      "type": "StringLiteral",
                      "start": 5614,
                      "end": 5652,
                      "loc": {
                        "start": {
                          "line": 216,
                          "column": 20
                        },
                        "end": {
                          "line": 216,
                          "column": 58
                        }
                      },
                      "extra": {
                        "rawValue": "Unable to find valid recovery factor",
                        "raw": "\"Unable to find valid recovery factor\""
                      },
                      "value": "Unable to find valid recovery factor"
                    }
                  ]
                }
              }
            ],
            "directives": []
          },
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n ",
              "start": 4970,
              "end": 5342,
              "loc": {
                "start": {
                  "line": 195,
                  "column": 0
                },
                "end": {
                  "line": 205,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": []
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 364,
          "end": 1622,
          "loc": {
            "start": {
              "line": 10,
              "column": 0
            },
            "end": {
              "line": 62,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 373,
            "end": 395,
            "loc": {
              "start": {
                "line": 10,
                "column": 9
              },
              "end": {
                "line": 10,
                "column": 31
              },
              "identifierName": "deterministicGenerateK"
            },
            "name": "deterministicGenerateK",
            "leadingComments": null
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 396,
              "end": 401,
              "loc": {
                "start": {
                  "line": 10,
                  "column": 32
                },
                "end": {
                  "line": 10,
                  "column": 37
                },
                "identifierName": "curve"
              },
              "name": "curve"
            },
            {
              "type": "Identifier",
              "start": 403,
              "end": 407,
              "loc": {
                "start": {
                  "line": 10,
                  "column": 39
                },
                "end": {
                  "line": 10,
                  "column": 43
                },
                "identifierName": "hash"
              },
              "name": "hash"
            },
            {
              "type": "Identifier",
              "start": 409,
              "end": 410,
              "loc": {
                "start": {
                  "line": 10,
                  "column": 45
                },
                "end": {
                  "line": 10,
                  "column": 46
                },
                "identifierName": "d"
              },
              "name": "d"
            },
            {
              "type": "Identifier",
              "start": 412,
              "end": 420,
              "loc": {
                "start": {
                  "line": 10,
                  "column": 48
                },
                "end": {
                  "line": 10,
                  "column": 56
                },
                "identifierName": "checkSig"
              },
              "name": "checkSig"
            },
            {
              "type": "Identifier",
              "start": 422,
              "end": 427,
              "loc": {
                "start": {
                  "line": 10,
                  "column": 58
                },
                "end": {
                  "line": 10,
                  "column": 63
                },
                "identifierName": "nonce"
              },
              "name": "nonce"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 429,
            "end": 1622,
            "loc": {
              "start": {
                "line": 10,
                "column": 65
              },
              "end": {
                "line": 62,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ExpressionStatement",
                "start": 435,
                "end": 463,
                "loc": {
                  "start": {
                    "line": 11,
                    "column": 4
                  },
                  "end": {
                    "line": 11,
                    "column": 32
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 435,
                  "end": 462,
                  "loc": {
                    "start": {
                      "line": 11,
                      "column": 4
                    },
                    "end": {
                      "line": 11,
                      "column": 31
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 435,
                    "end": 446,
                    "loc": {
                      "start": {
                        "line": 11,
                        "column": 4
                      },
                      "end": {
                        "line": 11,
                        "column": 15
                      },
                      "identifierName": "enforceType"
                    },
                    "name": "enforceType"
                  },
                  "arguments": [
                    {
                      "type": "StringLiteral",
                      "start": 447,
                      "end": 455,
                      "loc": {
                        "start": {
                          "line": 11,
                          "column": 16
                        },
                        "end": {
                          "line": 11,
                          "column": 24
                        }
                      },
                      "extra": {
                        "rawValue": "Buffer",
                        "raw": "\"Buffer\""
                      },
                      "value": "Buffer"
                    },
                    {
                      "type": "Identifier",
                      "start": 457,
                      "end": 461,
                      "loc": {
                        "start": {
                          "line": 11,
                          "column": 26
                        },
                        "end": {
                          "line": 11,
                          "column": 30
                        },
                        "identifierName": "hash"
                      },
                      "name": "hash"
                    }
                  ]
                }
              },
              {
                "type": "ExpressionStatement",
                "start": 468,
                "end": 495,
                "loc": {
                  "start": {
                    "line": 12,
                    "column": 4
                  },
                  "end": {
                    "line": 12,
                    "column": 31
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 468,
                  "end": 494,
                  "loc": {
                    "start": {
                      "line": 12,
                      "column": 4
                    },
                    "end": {
                      "line": 12,
                      "column": 30
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 468,
                    "end": 479,
                    "loc": {
                      "start": {
                        "line": 12,
                        "column": 4
                      },
                      "end": {
                        "line": 12,
                        "column": 15
                      },
                      "identifierName": "enforceType"
                    },
                    "name": "enforceType"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 480,
                      "end": 490,
                      "loc": {
                        "start": {
                          "line": 12,
                          "column": 16
                        },
                        "end": {
                          "line": 12,
                          "column": 26
                        },
                        "identifierName": "BigInteger"
                      },
                      "name": "BigInteger"
                    },
                    {
                      "type": "Identifier",
                      "start": 492,
                      "end": 493,
                      "loc": {
                        "start": {
                          "line": 12,
                          "column": 28
                        },
                        "end": {
                          "line": 12,
                          "column": 29
                        },
                        "identifierName": "d"
                      },
                      "name": "d"
                    }
                  ]
                }
              },
              {
                "type": "IfStatement",
                "start": 501,
                "end": 586,
                "loc": {
                  "start": {
                    "line": 14,
                    "column": 4
                  },
                  "end": {
                    "line": 16,
                    "column": 5
                  }
                },
                "test": {
                  "type": "Identifier",
                  "start": 505,
                  "end": 510,
                  "loc": {
                    "start": {
                      "line": 14,
                      "column": 8
                    },
                    "end": {
                      "line": 14,
                      "column": 13
                    },
                    "identifierName": "nonce"
                  },
                  "name": "nonce"
                },
                "consequent": {
                  "type": "BlockStatement",
                  "start": 512,
                  "end": 586,
                  "loc": {
                    "start": {
                      "line": 14,
                      "column": 15
                    },
                    "end": {
                      "line": 16,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 522,
                      "end": 580,
                      "loc": {
                        "start": {
                          "line": 15,
                          "column": 8
                        },
                        "end": {
                          "line": 15,
                          "column": 66
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 522,
                        "end": 579,
                        "loc": {
                          "start": {
                            "line": 15,
                            "column": 8
                          },
                          "end": {
                            "line": 15,
                            "column": 65
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 522,
                          "end": 526,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 8
                            },
                            "end": {
                              "line": 15,
                              "column": 12
                            },
                            "identifierName": "hash"
                          },
                          "name": "hash"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 529,
                          "end": 579,
                          "loc": {
                            "start": {
                              "line": 15,
                              "column": 15
                            },
                            "end": {
                              "line": 15,
                              "column": 65
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 529,
                            "end": 535,
                            "loc": {
                              "start": {
                                "line": 15,
                                "column": 15
                              },
                              "end": {
                                "line": 15,
                                "column": 21
                              },
                              "identifierName": "sha256"
                            },
                            "name": "sha256"
                          },
                          "arguments": [
                            {
                              "type": "CallExpression",
                              "start": 536,
                              "end": 578,
                              "loc": {
                                "start": {
                                  "line": 15,
                                  "column": 22
                                },
                                "end": {
                                  "line": 15,
                                  "column": 64
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 536,
                                "end": 549,
                                "loc": {
                                  "start": {
                                    "line": 15,
                                    "column": 22
                                  },
                                  "end": {
                                    "line": 15,
                                    "column": 35
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 536,
                                  "end": 542,
                                  "loc": {
                                    "start": {
                                      "line": 15,
                                      "column": 22
                                    },
                                    "end": {
                                      "line": 15,
                                      "column": 28
                                    },
                                    "identifierName": "Buffer"
                                  },
                                  "name": "Buffer"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 543,
                                  "end": 549,
                                  "loc": {
                                    "start": {
                                      "line": 15,
                                      "column": 29
                                    },
                                    "end": {
                                      "line": 15,
                                      "column": 35
                                    },
                                    "identifierName": "concat"
                                  },
                                  "name": "concat"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "ArrayExpression",
                                  "start": 550,
                                  "end": 577,
                                  "loc": {
                                    "start": {
                                      "line": 15,
                                      "column": 36
                                    },
                                    "end": {
                                      "line": 15,
                                      "column": 63
                                    }
                                  },
                                  "elements": [
                                    {
                                      "type": "Identifier",
                                      "start": 551,
                                      "end": 555,
                                      "loc": {
                                        "start": {
                                          "line": 15,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 15,
                                          "column": 41
                                        },
                                        "identifierName": "hash"
                                      },
                                      "name": "hash"
                                    },
                                    {
                                      "type": "CallExpression",
                                      "start": 557,
                                      "end": 576,
                                      "loc": {
                                        "start": {
                                          "line": 15,
                                          "column": 43
                                        },
                                        "end": {
                                          "line": 15,
                                          "column": 62
                                        }
                                      },
                                      "callee": {
                                        "type": "MemberExpression",
                                        "start": 557,
                                        "end": 569,
                                        "loc": {
                                          "start": {
                                            "line": 15,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 15,
                                            "column": 55
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 557,
                                          "end": 563,
                                          "loc": {
                                            "start": {
                                              "line": 15,
                                              "column": 43
                                            },
                                            "end": {
                                              "line": 15,
                                              "column": 49
                                            },
                                            "identifierName": "Buffer"
                                          },
                                          "name": "Buffer"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 564,
                                          "end": 569,
                                          "loc": {
                                            "start": {
                                              "line": 15,
                                              "column": 50
                                            },
                                            "end": {
                                              "line": 15,
                                              "column": 55
                                            },
                                            "identifierName": "alloc"
                                          },
                                          "name": "alloc"
                                        },
                                        "computed": false
                                      },
                                      "arguments": [
                                        {
                                          "type": "Identifier",
                                          "start": 570,
                                          "end": 575,
                                          "loc": {
                                            "start": {
                                              "line": 15,
                                              "column": 56
                                            },
                                            "end": {
                                              "line": 15,
                                              "column": 61
                                            },
                                            "identifierName": "nonce"
                                          },
                                          "name": "nonce"
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ],
                  "directives": [],
                  "trailingComments": null
                },
                "alternate": null,
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " sanity check",
                    "start": 592,
                    "end": 607,
                    "loc": {
                      "start": {
                        "line": 18,
                        "column": 4
                      },
                      "end": {
                        "line": 18,
                        "column": 19
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 612,
                "end": 666,
                "loc": {
                  "start": {
                    "line": 19,
                    "column": 4
                  },
                  "end": {
                    "line": 19,
                    "column": 58
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 612,
                  "end": 665,
                  "loc": {
                    "start": {
                      "line": 19,
                      "column": 4
                    },
                    "end": {
                      "line": 19,
                      "column": 57
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 612,
                    "end": 624,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 4
                      },
                      "end": {
                        "line": 19,
                        "column": 16
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 612,
                      "end": 618,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 4
                        },
                        "end": {
                          "line": 19,
                          "column": 10
                        },
                        "identifierName": "assert"
                      },
                      "name": "assert",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 619,
                      "end": 624,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 11
                        },
                        "end": {
                          "line": 19,
                          "column": 16
                        },
                        "identifierName": "equal"
                      },
                      "name": "equal"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "MemberExpression",
                      "start": 625,
                      "end": 636,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 17
                        },
                        "end": {
                          "line": 19,
                          "column": 28
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 625,
                        "end": 629,
                        "loc": {
                          "start": {
                            "line": 19,
                            "column": 17
                          },
                          "end": {
                            "line": 19,
                            "column": 21
                          },
                          "identifierName": "hash"
                        },
                        "name": "hash"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 630,
                        "end": 636,
                        "loc": {
                          "start": {
                            "line": 19,
                            "column": 22
                          },
                          "end": {
                            "line": 19,
                            "column": 28
                          },
                          "identifierName": "length"
                        },
                        "name": "length"
                      },
                      "computed": false
                    },
                    {
                      "type": "NumericLiteral",
                      "start": 638,
                      "end": 640,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 30
                        },
                        "end": {
                          "line": 19,
                          "column": 32
                        }
                      },
                      "extra": {
                        "rawValue": 32,
                        "raw": "32"
                      },
                      "value": 32
                    },
                    {
                      "type": "StringLiteral",
                      "start": 642,
                      "end": 664,
                      "loc": {
                        "start": {
                          "line": 19,
                          "column": 34
                        },
                        "end": {
                          "line": 19,
                          "column": 56
                        }
                      },
                      "extra": {
                        "rawValue": "Hash must be 256 bit",
                        "raw": "\"Hash must be 256 bit\""
                      },
                      "value": "Hash must be 256 bit"
                    }
                  ],
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " sanity check",
                    "start": 592,
                    "end": 607,
                    "loc": {
                      "start": {
                        "line": 18,
                        "column": 4
                      },
                      "end": {
                        "line": 18,
                        "column": 19
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 672,
                "end": 695,
                "loc": {
                  "start": {
                    "line": 21,
                    "column": 4
                  },
                  "end": {
                    "line": 21,
                    "column": 27
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 676,
                    "end": 694,
                    "loc": {
                      "start": {
                        "line": 21,
                        "column": 8
                      },
                      "end": {
                        "line": 21,
                        "column": 26
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 676,
                      "end": 677,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 8
                        },
                        "end": {
                          "line": 21,
                          "column": 9
                        },
                        "identifierName": "x"
                      },
                      "name": "x"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 680,
                      "end": 694,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 12
                        },
                        "end": {
                          "line": 21,
                          "column": 26
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 680,
                        "end": 690,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 12
                          },
                          "end": {
                            "line": 21,
                            "column": 22
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 680,
                          "end": 681,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 12
                            },
                            "end": {
                              "line": 21,
                              "column": 13
                            },
                            "identifierName": "d"
                          },
                          "name": "d"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 682,
                          "end": 690,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 14
                            },
                            "end": {
                              "line": 21,
                              "column": 22
                            },
                            "identifierName": "toBuffer"
                          },
                          "name": "toBuffer"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "NumericLiteral",
                          "start": 691,
                          "end": 693,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 23
                            },
                            "end": {
                              "line": 21,
                              "column": 25
                            }
                          },
                          "extra": {
                            "rawValue": 32,
                            "raw": "32"
                          },
                          "value": 32
                        }
                      ]
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 700,
                "end": 725,
                "loc": {
                  "start": {
                    "line": 22,
                    "column": 4
                  },
                  "end": {
                    "line": 22,
                    "column": 29
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 704,
                    "end": 724,
                    "loc": {
                      "start": {
                        "line": 22,
                        "column": 8
                      },
                      "end": {
                        "line": 22,
                        "column": 28
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 704,
                      "end": 705,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 8
                        },
                        "end": {
                          "line": 22,
                          "column": 9
                        },
                        "identifierName": "k"
                      },
                      "name": "k"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 708,
                      "end": 724,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 12
                        },
                        "end": {
                          "line": 22,
                          "column": 28
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 708,
                        "end": 720,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 12
                          },
                          "end": {
                            "line": 22,
                            "column": 24
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 708,
                          "end": 714,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 12
                            },
                            "end": {
                              "line": 22,
                              "column": 18
                            },
                            "identifierName": "Buffer"
                          },
                          "name": "Buffer"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 715,
                          "end": 720,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 19
                            },
                            "end": {
                              "line": 22,
                              "column": 24
                            },
                            "identifierName": "alloc"
                          },
                          "name": "alloc"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "NumericLiteral",
                          "start": 721,
                          "end": 723,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 25
                            },
                            "end": {
                              "line": 22,
                              "column": 27
                            }
                          },
                          "extra": {
                            "rawValue": 32,
                            "raw": "32"
                          },
                          "value": 32
                        }
                      ]
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 730,
                "end": 755,
                "loc": {
                  "start": {
                    "line": 23,
                    "column": 4
                  },
                  "end": {
                    "line": 23,
                    "column": 29
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 734,
                    "end": 754,
                    "loc": {
                      "start": {
                        "line": 23,
                        "column": 8
                      },
                      "end": {
                        "line": 23,
                        "column": 28
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 734,
                      "end": 735,
                      "loc": {
                        "start": {
                          "line": 23,
                          "column": 8
                        },
                        "end": {
                          "line": 23,
                          "column": 9
                        },
                        "identifierName": "v"
                      },
                      "name": "v"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 738,
                      "end": 754,
                      "loc": {
                        "start": {
                          "line": 23,
                          "column": 12
                        },
                        "end": {
                          "line": 23,
                          "column": 28
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 738,
                        "end": 750,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 12
                          },
                          "end": {
                            "line": 23,
                            "column": 24
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 738,
                          "end": 744,
                          "loc": {
                            "start": {
                              "line": 23,
                              "column": 12
                            },
                            "end": {
                              "line": 23,
                              "column": 18
                            },
                            "identifierName": "Buffer"
                          },
                          "name": "Buffer"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 745,
                          "end": 750,
                          "loc": {
                            "start": {
                              "line": 23,
                              "column": 19
                            },
                            "end": {
                              "line": 23,
                              "column": 24
                            },
                            "identifierName": "alloc"
                          },
                          "name": "alloc"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "NumericLiteral",
                          "start": 751,
                          "end": 753,
                          "loc": {
                            "start": {
                              "line": 23,
                              "column": 25
                            },
                            "end": {
                              "line": 23,
                              "column": 27
                            }
                          },
                          "extra": {
                            "rawValue": 32,
                            "raw": "32"
                          },
                          "value": 32
                        }
                      ]
                    }
                  }
                ],
                "kind": "var",
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step B",
                    "start": 761,
                    "end": 770,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 4
                      },
                      "end": {
                        "line": 25,
                        "column": 13
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 775,
                "end": 785,
                "loc": {
                  "start": {
                    "line": 26,
                    "column": 4
                  },
                  "end": {
                    "line": 26,
                    "column": 14
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 775,
                  "end": 784,
                  "loc": {
                    "start": {
                      "line": 26,
                      "column": 4
                    },
                    "end": {
                      "line": 26,
                      "column": 13
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 775,
                    "end": 781,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 4
                      },
                      "end": {
                        "line": 26,
                        "column": 10
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 775,
                      "end": 776,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 4
                        },
                        "end": {
                          "line": 26,
                          "column": 5
                        },
                        "identifierName": "v"
                      },
                      "name": "v",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 777,
                      "end": 781,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 6
                        },
                        "end": {
                          "line": 26,
                          "column": 10
                        },
                        "identifierName": "fill"
                      },
                      "name": "fill"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "NumericLiteral",
                      "start": 782,
                      "end": 783,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 11
                        },
                        "end": {
                          "line": 26,
                          "column": 12
                        }
                      },
                      "extra": {
                        "rawValue": 1,
                        "raw": "1"
                      },
                      "value": 1
                    }
                  ],
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step B",
                    "start": 761,
                    "end": 770,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 4
                      },
                      "end": {
                        "line": 25,
                        "column": 13
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step C",
                    "start": 791,
                    "end": 800,
                    "loc": {
                      "start": {
                        "line": 28,
                        "column": 4
                      },
                      "end": {
                        "line": 28,
                        "column": 13
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 805,
                "end": 815,
                "loc": {
                  "start": {
                    "line": 29,
                    "column": 4
                  },
                  "end": {
                    "line": 29,
                    "column": 14
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 805,
                  "end": 814,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 4
                    },
                    "end": {
                      "line": 29,
                      "column": 13
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 805,
                    "end": 811,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 4
                      },
                      "end": {
                        "line": 29,
                        "column": 10
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 805,
                      "end": 806,
                      "loc": {
                        "start": {
                          "line": 29,
                          "column": 4
                        },
                        "end": {
                          "line": 29,
                          "column": 5
                        },
                        "identifierName": "k"
                      },
                      "name": "k",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 807,
                      "end": 811,
                      "loc": {
                        "start": {
                          "line": 29,
                          "column": 6
                        },
                        "end": {
                          "line": 29,
                          "column": 10
                        },
                        "identifierName": "fill"
                      },
                      "name": "fill"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "NumericLiteral",
                      "start": 812,
                      "end": 813,
                      "loc": {
                        "start": {
                          "line": 29,
                          "column": 11
                        },
                        "end": {
                          "line": 29,
                          "column": 12
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    }
                  ],
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step C",
                    "start": 791,
                    "end": 800,
                    "loc": {
                      "start": {
                        "line": 28,
                        "column": 4
                      },
                      "end": {
                        "line": 28,
                        "column": 13
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step D",
                    "start": 821,
                    "end": 830,
                    "loc": {
                      "start": {
                        "line": 31,
                        "column": 4
                      },
                      "end": {
                        "line": 31,
                        "column": 13
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 835,
                "end": 899,
                "loc": {
                  "start": {
                    "line": 32,
                    "column": 4
                  },
                  "end": {
                    "line": 32,
                    "column": 68
                  }
                },
                "expression": {
                  "type": "AssignmentExpression",
                  "start": 835,
                  "end": 898,
                  "loc": {
                    "start": {
                      "line": 32,
                      "column": 4
                    },
                    "end": {
                      "line": 32,
                      "column": 67
                    }
                  },
                  "operator": "=",
                  "left": {
                    "type": "Identifier",
                    "start": 835,
                    "end": 836,
                    "loc": {
                      "start": {
                        "line": 32,
                        "column": 4
                      },
                      "end": {
                        "line": 32,
                        "column": 5
                      },
                      "identifierName": "k"
                    },
                    "name": "k",
                    "leadingComments": null
                  },
                  "right": {
                    "type": "CallExpression",
                    "start": 839,
                    "end": 898,
                    "loc": {
                      "start": {
                        "line": 32,
                        "column": 8
                      },
                      "end": {
                        "line": 32,
                        "column": 67
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 839,
                      "end": 849,
                      "loc": {
                        "start": {
                          "line": 32,
                          "column": 8
                        },
                        "end": {
                          "line": 32,
                          "column": 18
                        },
                        "identifierName": "HmacSHA256"
                      },
                      "name": "HmacSHA256"
                    },
                    "arguments": [
                      {
                        "type": "CallExpression",
                        "start": 850,
                        "end": 894,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 19
                          },
                          "end": {
                            "line": 32,
                            "column": 63
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 850,
                          "end": 863,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 19
                            },
                            "end": {
                              "line": 32,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 850,
                            "end": 856,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 19
                              },
                              "end": {
                                "line": 32,
                                "column": 25
                              },
                              "identifierName": "Buffer"
                            },
                            "name": "Buffer"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 857,
                            "end": 863,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 26
                              },
                              "end": {
                                "line": 32,
                                "column": 32
                              },
                              "identifierName": "concat"
                            },
                            "name": "concat"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "ArrayExpression",
                            "start": 864,
                            "end": 893,
                            "loc": {
                              "start": {
                                "line": 32,
                                "column": 33
                              },
                              "end": {
                                "line": 32,
                                "column": 62
                              }
                            },
                            "elements": [
                              {
                                "type": "Identifier",
                                "start": 865,
                                "end": 866,
                                "loc": {
                                  "start": {
                                    "line": 32,
                                    "column": 34
                                  },
                                  "end": {
                                    "line": 32,
                                    "column": 35
                                  },
                                  "identifierName": "v"
                                },
                                "name": "v"
                              },
                              {
                                "type": "NewExpression",
                                "start": 868,
                                "end": 883,
                                "loc": {
                                  "start": {
                                    "line": 32,
                                    "column": 37
                                  },
                                  "end": {
                                    "line": 32,
                                    "column": 52
                                  }
                                },
                                "callee": {
                                  "type": "Identifier",
                                  "start": 872,
                                  "end": 878,
                                  "loc": {
                                    "start": {
                                      "line": 32,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 32,
                                      "column": 47
                                    },
                                    "identifierName": "Buffer"
                                  },
                                  "name": "Buffer"
                                },
                                "arguments": [
                                  {
                                    "type": "ArrayExpression",
                                    "start": 879,
                                    "end": 882,
                                    "loc": {
                                      "start": {
                                        "line": 32,
                                        "column": 48
                                      },
                                      "end": {
                                        "line": 32,
                                        "column": 51
                                      }
                                    },
                                    "elements": [
                                      {
                                        "type": "NumericLiteral",
                                        "start": 880,
                                        "end": 881,
                                        "loc": {
                                          "start": {
                                            "line": 32,
                                            "column": 49
                                          },
                                          "end": {
                                            "line": 32,
                                            "column": 50
                                          }
                                        },
                                        "extra": {
                                          "rawValue": 0,
                                          "raw": "0"
                                        },
                                        "value": 0
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "Identifier",
                                "start": 885,
                                "end": 886,
                                "loc": {
                                  "start": {
                                    "line": 32,
                                    "column": 54
                                  },
                                  "end": {
                                    "line": 32,
                                    "column": 55
                                  },
                                  "identifierName": "x"
                                },
                                "name": "x"
                              },
                              {
                                "type": "Identifier",
                                "start": 888,
                                "end": 892,
                                "loc": {
                                  "start": {
                                    "line": 32,
                                    "column": 57
                                  },
                                  "end": {
                                    "line": 32,
                                    "column": 61
                                  },
                                  "identifierName": "hash"
                                },
                                "name": "hash"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "Identifier",
                        "start": 896,
                        "end": 897,
                        "loc": {
                          "start": {
                            "line": 32,
                            "column": 65
                          },
                          "end": {
                            "line": 32,
                            "column": 66
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      }
                    ]
                  },
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step D",
                    "start": 821,
                    "end": 830,
                    "loc": {
                      "start": {
                        "line": 31,
                        "column": 4
                      },
                      "end": {
                        "line": 31,
                        "column": 13
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step E",
                    "start": 905,
                    "end": 914,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 4
                      },
                      "end": {
                        "line": 34,
                        "column": 13
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 919,
                "end": 940,
                "loc": {
                  "start": {
                    "line": 35,
                    "column": 4
                  },
                  "end": {
                    "line": 35,
                    "column": 25
                  }
                },
                "expression": {
                  "type": "AssignmentExpression",
                  "start": 919,
                  "end": 939,
                  "loc": {
                    "start": {
                      "line": 35,
                      "column": 4
                    },
                    "end": {
                      "line": 35,
                      "column": 24
                    }
                  },
                  "operator": "=",
                  "left": {
                    "type": "Identifier",
                    "start": 919,
                    "end": 920,
                    "loc": {
                      "start": {
                        "line": 35,
                        "column": 4
                      },
                      "end": {
                        "line": 35,
                        "column": 5
                      },
                      "identifierName": "v"
                    },
                    "name": "v",
                    "leadingComments": null
                  },
                  "right": {
                    "type": "CallExpression",
                    "start": 923,
                    "end": 939,
                    "loc": {
                      "start": {
                        "line": 35,
                        "column": 8
                      },
                      "end": {
                        "line": 35,
                        "column": 24
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 923,
                      "end": 933,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 8
                        },
                        "end": {
                          "line": 35,
                          "column": 18
                        },
                        "identifierName": "HmacSHA256"
                      },
                      "name": "HmacSHA256"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 934,
                        "end": 935,
                        "loc": {
                          "start": {
                            "line": 35,
                            "column": 19
                          },
                          "end": {
                            "line": 35,
                            "column": 20
                          },
                          "identifierName": "v"
                        },
                        "name": "v"
                      },
                      {
                        "type": "Identifier",
                        "start": 937,
                        "end": 938,
                        "loc": {
                          "start": {
                            "line": 35,
                            "column": 22
                          },
                          "end": {
                            "line": 35,
                            "column": 23
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      }
                    ]
                  },
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step E",
                    "start": 905,
                    "end": 914,
                    "loc": {
                      "start": {
                        "line": 34,
                        "column": 4
                      },
                      "end": {
                        "line": 34,
                        "column": 13
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step F",
                    "start": 946,
                    "end": 955,
                    "loc": {
                      "start": {
                        "line": 37,
                        "column": 4
                      },
                      "end": {
                        "line": 37,
                        "column": 13
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 960,
                "end": 1024,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 4
                  },
                  "end": {
                    "line": 38,
                    "column": 68
                  }
                },
                "expression": {
                  "type": "AssignmentExpression",
                  "start": 960,
                  "end": 1023,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 4
                    },
                    "end": {
                      "line": 38,
                      "column": 67
                    }
                  },
                  "operator": "=",
                  "left": {
                    "type": "Identifier",
                    "start": 960,
                    "end": 961,
                    "loc": {
                      "start": {
                        "line": 38,
                        "column": 4
                      },
                      "end": {
                        "line": 38,
                        "column": 5
                      },
                      "identifierName": "k"
                    },
                    "name": "k",
                    "leadingComments": null
                  },
                  "right": {
                    "type": "CallExpression",
                    "start": 964,
                    "end": 1023,
                    "loc": {
                      "start": {
                        "line": 38,
                        "column": 8
                      },
                      "end": {
                        "line": 38,
                        "column": 67
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 964,
                      "end": 974,
                      "loc": {
                        "start": {
                          "line": 38,
                          "column": 8
                        },
                        "end": {
                          "line": 38,
                          "column": 18
                        },
                        "identifierName": "HmacSHA256"
                      },
                      "name": "HmacSHA256"
                    },
                    "arguments": [
                      {
                        "type": "CallExpression",
                        "start": 975,
                        "end": 1019,
                        "loc": {
                          "start": {
                            "line": 38,
                            "column": 19
                          },
                          "end": {
                            "line": 38,
                            "column": 63
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 975,
                          "end": 988,
                          "loc": {
                            "start": {
                              "line": 38,
                              "column": 19
                            },
                            "end": {
                              "line": 38,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 975,
                            "end": 981,
                            "loc": {
                              "start": {
                                "line": 38,
                                "column": 19
                              },
                              "end": {
                                "line": 38,
                                "column": 25
                              },
                              "identifierName": "Buffer"
                            },
                            "name": "Buffer"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 982,
                            "end": 988,
                            "loc": {
                              "start": {
                                "line": 38,
                                "column": 26
                              },
                              "end": {
                                "line": 38,
                                "column": 32
                              },
                              "identifierName": "concat"
                            },
                            "name": "concat"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "ArrayExpression",
                            "start": 989,
                            "end": 1018,
                            "loc": {
                              "start": {
                                "line": 38,
                                "column": 33
                              },
                              "end": {
                                "line": 38,
                                "column": 62
                              }
                            },
                            "elements": [
                              {
                                "type": "Identifier",
                                "start": 990,
                                "end": 991,
                                "loc": {
                                  "start": {
                                    "line": 38,
                                    "column": 34
                                  },
                                  "end": {
                                    "line": 38,
                                    "column": 35
                                  },
                                  "identifierName": "v"
                                },
                                "name": "v"
                              },
                              {
                                "type": "NewExpression",
                                "start": 993,
                                "end": 1008,
                                "loc": {
                                  "start": {
                                    "line": 38,
                                    "column": 37
                                  },
                                  "end": {
                                    "line": 38,
                                    "column": 52
                                  }
                                },
                                "callee": {
                                  "type": "Identifier",
                                  "start": 997,
                                  "end": 1003,
                                  "loc": {
                                    "start": {
                                      "line": 38,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 38,
                                      "column": 47
                                    },
                                    "identifierName": "Buffer"
                                  },
                                  "name": "Buffer"
                                },
                                "arguments": [
                                  {
                                    "type": "ArrayExpression",
                                    "start": 1004,
                                    "end": 1007,
                                    "loc": {
                                      "start": {
                                        "line": 38,
                                        "column": 48
                                      },
                                      "end": {
                                        "line": 38,
                                        "column": 51
                                      }
                                    },
                                    "elements": [
                                      {
                                        "type": "NumericLiteral",
                                        "start": 1005,
                                        "end": 1006,
                                        "loc": {
                                          "start": {
                                            "line": 38,
                                            "column": 49
                                          },
                                          "end": {
                                            "line": 38,
                                            "column": 50
                                          }
                                        },
                                        "extra": {
                                          "rawValue": 1,
                                          "raw": "1"
                                        },
                                        "value": 1
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "Identifier",
                                "start": 1010,
                                "end": 1011,
                                "loc": {
                                  "start": {
                                    "line": 38,
                                    "column": 54
                                  },
                                  "end": {
                                    "line": 38,
                                    "column": 55
                                  },
                                  "identifierName": "x"
                                },
                                "name": "x"
                              },
                              {
                                "type": "Identifier",
                                "start": 1013,
                                "end": 1017,
                                "loc": {
                                  "start": {
                                    "line": 38,
                                    "column": 57
                                  },
                                  "end": {
                                    "line": 38,
                                    "column": 61
                                  },
                                  "identifierName": "hash"
                                },
                                "name": "hash"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "Identifier",
                        "start": 1021,
                        "end": 1022,
                        "loc": {
                          "start": {
                            "line": 38,
                            "column": 65
                          },
                          "end": {
                            "line": 38,
                            "column": 66
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      }
                    ]
                  },
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step F",
                    "start": 946,
                    "end": 955,
                    "loc": {
                      "start": {
                        "line": 37,
                        "column": 4
                      },
                      "end": {
                        "line": 37,
                        "column": 13
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step G",
                    "start": 1030,
                    "end": 1039,
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 4
                      },
                      "end": {
                        "line": 40,
                        "column": 13
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 1044,
                "end": 1065,
                "loc": {
                  "start": {
                    "line": 41,
                    "column": 4
                  },
                  "end": {
                    "line": 41,
                    "column": 25
                  }
                },
                "expression": {
                  "type": "AssignmentExpression",
                  "start": 1044,
                  "end": 1064,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 4
                    },
                    "end": {
                      "line": 41,
                      "column": 24
                    }
                  },
                  "operator": "=",
                  "left": {
                    "type": "Identifier",
                    "start": 1044,
                    "end": 1045,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 4
                      },
                      "end": {
                        "line": 41,
                        "column": 5
                      },
                      "identifierName": "v"
                    },
                    "name": "v",
                    "leadingComments": null
                  },
                  "right": {
                    "type": "CallExpression",
                    "start": 1048,
                    "end": 1064,
                    "loc": {
                      "start": {
                        "line": 41,
                        "column": 8
                      },
                      "end": {
                        "line": 41,
                        "column": 24
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 1048,
                      "end": 1058,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 8
                        },
                        "end": {
                          "line": 41,
                          "column": 18
                        },
                        "identifierName": "HmacSHA256"
                      },
                      "name": "HmacSHA256"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 1059,
                        "end": 1060,
                        "loc": {
                          "start": {
                            "line": 41,
                            "column": 19
                          },
                          "end": {
                            "line": 41,
                            "column": 20
                          },
                          "identifierName": "v"
                        },
                        "name": "v"
                      },
                      {
                        "type": "Identifier",
                        "start": 1062,
                        "end": 1063,
                        "loc": {
                          "start": {
                            "line": 41,
                            "column": 22
                          },
                          "end": {
                            "line": 41,
                            "column": 23
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      }
                    ]
                  },
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step G",
                    "start": 1030,
                    "end": 1039,
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 4
                      },
                      "end": {
                        "line": 40,
                        "column": 13
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step H1/H2a, ignored as tlen === qlen (256 bit)",
                    "start": 1071,
                    "end": 1121,
                    "loc": {
                      "start": {
                        "line": 43,
                        "column": 4
                      },
                      "end": {
                        "line": 43,
                        "column": 54
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": " Step H2b",
                    "start": 1126,
                    "end": 1137,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 4
                      },
                      "end": {
                        "line": 44,
                        "column": 15
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 1142,
                "end": 1163,
                "loc": {
                  "start": {
                    "line": 45,
                    "column": 4
                  },
                  "end": {
                    "line": 45,
                    "column": 25
                  }
                },
                "expression": {
                  "type": "AssignmentExpression",
                  "start": 1142,
                  "end": 1162,
                  "loc": {
                    "start": {
                      "line": 45,
                      "column": 4
                    },
                    "end": {
                      "line": 45,
                      "column": 24
                    }
                  },
                  "operator": "=",
                  "left": {
                    "type": "Identifier",
                    "start": 1142,
                    "end": 1143,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 4
                      },
                      "end": {
                        "line": 45,
                        "column": 5
                      },
                      "identifierName": "v"
                    },
                    "name": "v",
                    "leadingComments": null
                  },
                  "right": {
                    "type": "CallExpression",
                    "start": 1146,
                    "end": 1162,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 8
                      },
                      "end": {
                        "line": 45,
                        "column": 24
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 1146,
                      "end": 1156,
                      "loc": {
                        "start": {
                          "line": 45,
                          "column": 8
                        },
                        "end": {
                          "line": 45,
                          "column": 18
                        },
                        "identifierName": "HmacSHA256"
                      },
                      "name": "HmacSHA256"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 1157,
                        "end": 1158,
                        "loc": {
                          "start": {
                            "line": 45,
                            "column": 19
                          },
                          "end": {
                            "line": 45,
                            "column": 20
                          },
                          "identifierName": "v"
                        },
                        "name": "v"
                      },
                      {
                        "type": "Identifier",
                        "start": 1160,
                        "end": 1161,
                        "loc": {
                          "start": {
                            "line": 45,
                            "column": 22
                          },
                          "end": {
                            "line": 45,
                            "column": 23
                          },
                          "identifierName": "k"
                        },
                        "name": "k"
                      }
                    ]
                  },
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step H1/H2a, ignored as tlen === qlen (256 bit)",
                    "start": 1071,
                    "end": 1121,
                    "loc": {
                      "start": {
                        "line": 43,
                        "column": 4
                      },
                      "end": {
                        "line": 43,
                        "column": 54
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": " Step H2b",
                    "start": 1126,
                    "end": 1137,
                    "loc": {
                      "start": {
                        "line": 44,
                        "column": 4
                      },
                      "end": {
                        "line": 44,
                        "column": 15
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 1169,
                "end": 1202,
                "loc": {
                  "start": {
                    "line": 47,
                    "column": 4
                  },
                  "end": {
                    "line": 47,
                    "column": 37
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 1173,
                    "end": 1201,
                    "loc": {
                      "start": {
                        "line": 47,
                        "column": 8
                      },
                      "end": {
                        "line": 47,
                        "column": 36
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 1173,
                      "end": 1174,
                      "loc": {
                        "start": {
                          "line": 47,
                          "column": 8
                        },
                        "end": {
                          "line": 47,
                          "column": 9
                        },
                        "identifierName": "T"
                      },
                      "name": "T"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 1177,
                      "end": 1201,
                      "loc": {
                        "start": {
                          "line": 47,
                          "column": 12
                        },
                        "end": {
                          "line": 47,
                          "column": 36
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 1177,
                        "end": 1198,
                        "loc": {
                          "start": {
                            "line": 47,
                            "column": 12
                          },
                          "end": {
                            "line": 47,
                            "column": 33
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 1177,
                          "end": 1187,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 12
                            },
                            "end": {
                              "line": 47,
                              "column": 22
                            },
                            "identifierName": "BigInteger"
                          },
                          "name": "BigInteger"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 1188,
                          "end": 1198,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 23
                            },
                            "end": {
                              "line": 47,
                              "column": 33
                            },
                            "identifierName": "fromBuffer"
                          },
                          "name": "fromBuffer"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 1199,
                          "end": 1200,
                          "loc": {
                            "start": {
                              "line": 47,
                              "column": 34
                            },
                            "end": {
                              "line": 47,
                              "column": 35
                            },
                            "identifierName": "v"
                          },
                          "name": "v"
                        }
                      ]
                    }
                  }
                ],
                "kind": "var",
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step H3, repeat until T is within the interval [1, n - 1]",
                    "start": 1208,
                    "end": 1268,
                    "loc": {
                      "start": {
                        "line": 49,
                        "column": 4
                      },
                      "end": {
                        "line": 49,
                        "column": 64
                      }
                    }
                  }
                ]
              },
              {
                "type": "WhileStatement",
                "start": 1273,
                "end": 1605,
                "loc": {
                  "start": {
                    "line": 50,
                    "column": 4
                  },
                  "end": {
                    "line": 59,
                    "column": 5
                  }
                },
                "test": {
                  "type": "LogicalExpression",
                  "start": 1280,
                  "end": 1340,
                  "loc": {
                    "start": {
                      "line": 50,
                      "column": 11
                    },
                    "end": {
                      "line": 50,
                      "column": 71
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 1280,
                    "end": 1324,
                    "loc": {
                      "start": {
                        "line": 50,
                        "column": 11
                      },
                      "end": {
                        "line": 50,
                        "column": 55
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 1280,
                      "end": 1295,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 11
                        },
                        "end": {
                          "line": 50,
                          "column": 26
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 1280,
                        "end": 1290,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 11
                          },
                          "end": {
                            "line": 50,
                            "column": 21
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1280,
                          "end": 1288,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 11
                            },
                            "end": {
                              "line": 50,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1280,
                            "end": 1281,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 11
                              },
                              "end": {
                                "line": 50,
                                "column": 12
                              },
                              "identifierName": "T"
                            },
                            "name": "T",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1282,
                            "end": 1288,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 13
                              },
                              "end": {
                                "line": 50,
                                "column": 19
                              },
                              "identifierName": "signum"
                            },
                            "name": "signum"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [],
                        "leadingComments": null
                      },
                      "operator": "<=",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 1294,
                        "end": 1295,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 25
                          },
                          "end": {
                            "line": 50,
                            "column": 26
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      },
                      "leadingComments": null
                    },
                    "operator": "||",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 1299,
                      "end": 1324,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 30
                        },
                        "end": {
                          "line": 50,
                          "column": 55
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 1299,
                        "end": 1319,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 30
                          },
                          "end": {
                            "line": 50,
                            "column": 50
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1299,
                          "end": 1310,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 30
                            },
                            "end": {
                              "line": 50,
                              "column": 41
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1299,
                            "end": 1300,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 30
                              },
                              "end": {
                                "line": 50,
                                "column": 31
                              },
                              "identifierName": "T"
                            },
                            "name": "T"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1301,
                            "end": 1310,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 32
                              },
                              "end": {
                                "line": 50,
                                "column": 41
                              },
                              "identifierName": "compareTo"
                            },
                            "name": "compareTo"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "MemberExpression",
                            "start": 1311,
                            "end": 1318,
                            "loc": {
                              "start": {
                                "line": 50,
                                "column": 42
                              },
                              "end": {
                                "line": 50,
                                "column": 49
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1311,
                              "end": 1316,
                              "loc": {
                                "start": {
                                  "line": 50,
                                  "column": 42
                                },
                                "end": {
                                  "line": 50,
                                  "column": 47
                                },
                                "identifierName": "curve"
                              },
                              "name": "curve"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1317,
                              "end": 1318,
                              "loc": {
                                "start": {
                                  "line": 50,
                                  "column": 48
                                },
                                "end": {
                                  "line": 50,
                                  "column": 49
                                },
                                "identifierName": "n"
                              },
                              "name": "n"
                            },
                            "computed": false
                          }
                        ]
                      },
                      "operator": ">=",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 1323,
                        "end": 1324,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 54
                          },
                          "end": {
                            "line": 50,
                            "column": 55
                          }
                        },
                        "extra": {
                          "rawValue": 0,
                          "raw": "0"
                        },
                        "value": 0
                      }
                    },
                    "leadingComments": null
                  },
                  "operator": "||",
                  "right": {
                    "type": "UnaryExpression",
                    "start": 1328,
                    "end": 1340,
                    "loc": {
                      "start": {
                        "line": 50,
                        "column": 59
                      },
                      "end": {
                        "line": 50,
                        "column": 71
                      }
                    },
                    "operator": "!",
                    "prefix": true,
                    "argument": {
                      "type": "CallExpression",
                      "start": 1329,
                      "end": 1340,
                      "loc": {
                        "start": {
                          "line": 50,
                          "column": 60
                        },
                        "end": {
                          "line": 50,
                          "column": 71
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 1329,
                        "end": 1337,
                        "loc": {
                          "start": {
                            "line": 50,
                            "column": 60
                          },
                          "end": {
                            "line": 50,
                            "column": 68
                          },
                          "identifierName": "checkSig"
                        },
                        "name": "checkSig"
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 1338,
                          "end": 1339,
                          "loc": {
                            "start": {
                              "line": 50,
                              "column": 69
                            },
                            "end": {
                              "line": 50,
                              "column": 70
                            },
                            "identifierName": "T"
                          },
                          "name": "T"
                        }
                      ]
                    },
                    "extra": {
                      "parenthesizedArgument": false
                    }
                  },
                  "leadingComments": null
                },
                "body": {
                  "type": "BlockStatement",
                  "start": 1342,
                  "end": 1605,
                  "loc": {
                    "start": {
                      "line": 50,
                      "column": 73
                    },
                    "end": {
                      "line": 59,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1352,
                      "end": 1407,
                      "loc": {
                        "start": {
                          "line": 51,
                          "column": 8
                        },
                        "end": {
                          "line": 51,
                          "column": 63
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1352,
                        "end": 1406,
                        "loc": {
                          "start": {
                            "line": 51,
                            "column": 8
                          },
                          "end": {
                            "line": 51,
                            "column": 62
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 1352,
                          "end": 1353,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 9
                            },
                            "identifierName": "k"
                          },
                          "name": "k"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 1356,
                          "end": 1406,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 12
                            },
                            "end": {
                              "line": 51,
                              "column": 62
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1356,
                            "end": 1366,
                            "loc": {
                              "start": {
                                "line": 51,
                                "column": 12
                              },
                              "end": {
                                "line": 51,
                                "column": 22
                              },
                              "identifierName": "HmacSHA256"
                            },
                            "name": "HmacSHA256"
                          },
                          "arguments": [
                            {
                              "type": "CallExpression",
                              "start": 1367,
                              "end": 1402,
                              "loc": {
                                "start": {
                                  "line": 51,
                                  "column": 23
                                },
                                "end": {
                                  "line": 51,
                                  "column": 58
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 1367,
                                "end": 1380,
                                "loc": {
                                  "start": {
                                    "line": 51,
                                    "column": 23
                                  },
                                  "end": {
                                    "line": 51,
                                    "column": 36
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 1367,
                                  "end": 1373,
                                  "loc": {
                                    "start": {
                                      "line": 51,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 51,
                                      "column": 29
                                    },
                                    "identifierName": "Buffer"
                                  },
                                  "name": "Buffer"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1374,
                                  "end": 1380,
                                  "loc": {
                                    "start": {
                                      "line": 51,
                                      "column": 30
                                    },
                                    "end": {
                                      "line": 51,
                                      "column": 36
                                    },
                                    "identifierName": "concat"
                                  },
                                  "name": "concat"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "ArrayExpression",
                                  "start": 1381,
                                  "end": 1401,
                                  "loc": {
                                    "start": {
                                      "line": 51,
                                      "column": 37
                                    },
                                    "end": {
                                      "line": 51,
                                      "column": 57
                                    }
                                  },
                                  "elements": [
                                    {
                                      "type": "Identifier",
                                      "start": 1382,
                                      "end": 1383,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 39
                                        },
                                        "identifierName": "v"
                                      },
                                      "name": "v"
                                    },
                                    {
                                      "type": "NewExpression",
                                      "start": 1385,
                                      "end": 1400,
                                      "loc": {
                                        "start": {
                                          "line": 51,
                                          "column": 41
                                        },
                                        "end": {
                                          "line": 51,
                                          "column": 56
                                        }
                                      },
                                      "callee": {
                                        "type": "Identifier",
                                        "start": 1389,
                                        "end": 1395,
                                        "loc": {
                                          "start": {
                                            "line": 51,
                                            "column": 45
                                          },
                                          "end": {
                                            "line": 51,
                                            "column": 51
                                          },
                                          "identifierName": "Buffer"
                                        },
                                        "name": "Buffer"
                                      },
                                      "arguments": [
                                        {
                                          "type": "ArrayExpression",
                                          "start": 1396,
                                          "end": 1399,
                                          "loc": {
                                            "start": {
                                              "line": 51,
                                              "column": 52
                                            },
                                            "end": {
                                              "line": 51,
                                              "column": 55
                                            }
                                          },
                                          "elements": [
                                            {
                                              "type": "NumericLiteral",
                                              "start": 1397,
                                              "end": 1398,
                                              "loc": {
                                                "start": {
                                                  "line": 51,
                                                  "column": 53
                                                },
                                                "end": {
                                                  "line": 51,
                                                  "column": 54
                                                }
                                              },
                                              "extra": {
                                                "rawValue": 0,
                                                "raw": "0"
                                              },
                                              "value": 0
                                            }
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "Identifier",
                              "start": 1404,
                              "end": 1405,
                              "loc": {
                                "start": {
                                  "line": 51,
                                  "column": 60
                                },
                                "end": {
                                  "line": 51,
                                  "column": 61
                                },
                                "identifierName": "k"
                              },
                              "name": "k"
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1416,
                      "end": 1437,
                      "loc": {
                        "start": {
                          "line": 52,
                          "column": 8
                        },
                        "end": {
                          "line": 52,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1416,
                        "end": 1436,
                        "loc": {
                          "start": {
                            "line": 52,
                            "column": 8
                          },
                          "end": {
                            "line": 52,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 1416,
                          "end": 1417,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 8
                            },
                            "end": {
                              "line": 52,
                              "column": 9
                            },
                            "identifierName": "v"
                          },
                          "name": "v"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 1420,
                          "end": 1436,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 12
                            },
                            "end": {
                              "line": 52,
                              "column": 28
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1420,
                            "end": 1430,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 12
                              },
                              "end": {
                                "line": 52,
                                "column": 22
                              },
                              "identifierName": "HmacSHA256"
                            },
                            "name": "HmacSHA256"
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 1431,
                              "end": 1432,
                              "loc": {
                                "start": {
                                  "line": 52,
                                  "column": 23
                                },
                                "end": {
                                  "line": 52,
                                  "column": 24
                                },
                                "identifierName": "v"
                              },
                              "name": "v"
                            },
                            {
                              "type": "Identifier",
                              "start": 1434,
                              "end": 1435,
                              "loc": {
                                "start": {
                                  "line": 52,
                                  "column": 26
                                },
                                "end": {
                                  "line": 52,
                                  "column": 27
                                },
                                "identifierName": "k"
                              },
                              "name": "k"
                            }
                          ]
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Step H1/H2a, again, ignored as tlen === qlen (256 bit)",
                          "start": 1447,
                          "end": 1504,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 65
                            }
                          }
                        },
                        {
                          "type": "CommentLine",
                          "value": " Step H2b again",
                          "start": 1513,
                          "end": 1530,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 8
                            },
                            "end": {
                              "line": 55,
                              "column": 25
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1539,
                      "end": 1560,
                      "loc": {
                        "start": {
                          "line": 56,
                          "column": 8
                        },
                        "end": {
                          "line": 56,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1539,
                        "end": 1559,
                        "loc": {
                          "start": {
                            "line": 56,
                            "column": 8
                          },
                          "end": {
                            "line": 56,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 1539,
                          "end": 1540,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 8
                            },
                            "end": {
                              "line": 56,
                              "column": 9
                            },
                            "identifierName": "v"
                          },
                          "name": "v",
                          "leadingComments": null
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 1543,
                          "end": 1559,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 12
                            },
                            "end": {
                              "line": 56,
                              "column": 28
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 1543,
                            "end": 1553,
                            "loc": {
                              "start": {
                                "line": 56,
                                "column": 12
                              },
                              "end": {
                                "line": 56,
                                "column": 22
                              },
                              "identifierName": "HmacSHA256"
                            },
                            "name": "HmacSHA256"
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 1554,
                              "end": 1555,
                              "loc": {
                                "start": {
                                  "line": 56,
                                  "column": 23
                                },
                                "end": {
                                  "line": 56,
                                  "column": 24
                                },
                                "identifierName": "v"
                              },
                              "name": "v"
                            },
                            {
                              "type": "Identifier",
                              "start": 1557,
                              "end": 1558,
                              "loc": {
                                "start": {
                                  "line": 56,
                                  "column": 26
                                },
                                "end": {
                                  "line": 56,
                                  "column": 27
                                },
                                "identifierName": "k"
                              },
                              "name": "k"
                            }
                          ]
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Step H1/H2a, again, ignored as tlen === qlen (256 bit)",
                          "start": 1447,
                          "end": 1504,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 65
                            }
                          }
                        },
                        {
                          "type": "CommentLine",
                          "value": " Step H2b again",
                          "start": 1513,
                          "end": 1530,
                          "loc": {
                            "start": {
                              "line": 55,
                              "column": 8
                            },
                            "end": {
                              "line": 55,
                              "column": 25
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1570,
                      "end": 1599,
                      "loc": {
                        "start": {
                          "line": 58,
                          "column": 8
                        },
                        "end": {
                          "line": 58,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1570,
                        "end": 1598,
                        "loc": {
                          "start": {
                            "line": 58,
                            "column": 8
                          },
                          "end": {
                            "line": 58,
                            "column": 36
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 1570,
                          "end": 1571,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 8
                            },
                            "end": {
                              "line": 58,
                              "column": 9
                            },
                            "identifierName": "T"
                          },
                          "name": "T"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 1574,
                          "end": 1598,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 12
                            },
                            "end": {
                              "line": 58,
                              "column": 36
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1574,
                            "end": 1595,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 12
                              },
                              "end": {
                                "line": 58,
                                "column": 33
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1574,
                              "end": 1584,
                              "loc": {
                                "start": {
                                  "line": 58,
                                  "column": 12
                                },
                                "end": {
                                  "line": 58,
                                  "column": 22
                                },
                                "identifierName": "BigInteger"
                              },
                              "name": "BigInteger"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1585,
                              "end": 1595,
                              "loc": {
                                "start": {
                                  "line": 58,
                                  "column": 23
                                },
                                "end": {
                                  "line": 58,
                                  "column": 33
                                },
                                "identifierName": "fromBuffer"
                              },
                              "name": "fromBuffer"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 1596,
                              "end": 1597,
                              "loc": {
                                "start": {
                                  "line": 58,
                                  "column": 34
                                },
                                "end": {
                                  "line": 58,
                                  "column": 35
                                },
                                "identifierName": "v"
                              },
                              "name": "v"
                            }
                          ]
                        }
                      }
                    }
                  ],
                  "directives": []
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Step H3, repeat until T is within the interval [1, n - 1]",
                    "start": 1208,
                    "end": 1268,
                    "loc": {
                      "start": {
                        "line": 49,
                        "column": 4
                      },
                      "end": {
                        "line": 49,
                        "column": 64
                      }
                    }
                  }
                ]
              },
              {
                "type": "ReturnStatement",
                "start": 1611,
                "end": 1620,
                "loc": {
                  "start": {
                    "line": 61,
                    "column": 4
                  },
                  "end": {
                    "line": 61,
                    "column": 13
                  }
                },
                "argument": {
                  "type": "Identifier",
                  "start": 1618,
                  "end": 1619,
                  "loc": {
                    "start": {
                      "line": 61,
                      "column": 11
                    },
                    "end": {
                      "line": 61,
                      "column": 12
                    },
                    "identifierName": "T"
                  },
                  "name": "T"
                }
              }
            ],
            "directives": []
          },
          "leadingComments": [
            {
              "type": "CommentLine",
              "value": " https://tools.ietf.org/html/rfc6979#section-3.2",
              "start": 313,
              "end": 363,
              "loc": {
                "start": {
                  "line": 9,
                  "column": 0
                },
                "end": {
                  "line": 9,
                  "column": 50
                }
              }
            }
          ],
          "trailingComments": []
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 3881,
          "end": 4968,
          "loc": {
            "start": {
              "line": 155,
              "column": 0
            },
            "end": {
              "line": 193,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 3890,
            "end": 3903,
            "loc": {
              "start": {
                "line": 155,
                "column": 9
              },
              "end": {
                "line": 155,
                "column": 22
              },
              "identifierName": "recoverPubKey"
            },
            "name": "recoverPubKey",
            "leadingComments": null
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 3904,
              "end": 3909,
              "loc": {
                "start": {
                  "line": 155,
                  "column": 23
                },
                "end": {
                  "line": 155,
                  "column": 28
                },
                "identifierName": "curve"
              },
              "name": "curve"
            },
            {
              "type": "Identifier",
              "start": 3911,
              "end": 3912,
              "loc": {
                "start": {
                  "line": 155,
                  "column": 30
                },
                "end": {
                  "line": 155,
                  "column": 31
                },
                "identifierName": "e"
              },
              "name": "e"
            },
            {
              "type": "Identifier",
              "start": 3914,
              "end": 3923,
              "loc": {
                "start": {
                  "line": 155,
                  "column": 33
                },
                "end": {
                  "line": 155,
                  "column": 42
                },
                "identifierName": "signature"
              },
              "name": "signature"
            },
            {
              "type": "Identifier",
              "start": 3925,
              "end": 3926,
              "loc": {
                "start": {
                  "line": 155,
                  "column": 44
                },
                "end": {
                  "line": 155,
                  "column": 45
                },
                "identifierName": "i"
              },
              "name": "i"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 3928,
            "end": 4968,
            "loc": {
              "start": {
                "line": 155,
                "column": 47
              },
              "end": {
                "line": 193,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ExpressionStatement",
                "start": 3934,
                "end": 4003,
                "loc": {
                  "start": {
                    "line": 156,
                    "column": 4
                  },
                  "end": {
                    "line": 156,
                    "column": 73
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 3934,
                  "end": 4002,
                  "loc": {
                    "start": {
                      "line": 156,
                      "column": 4
                    },
                    "end": {
                      "line": 156,
                      "column": 72
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 3934,
                    "end": 3952,
                    "loc": {
                      "start": {
                        "line": 156,
                        "column": 4
                      },
                      "end": {
                        "line": 156,
                        "column": 22
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3934,
                      "end": 3940,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 4
                        },
                        "end": {
                          "line": 156,
                          "column": 10
                        },
                        "identifierName": "assert"
                      },
                      "name": "assert"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3941,
                      "end": 3952,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 11
                        },
                        "end": {
                          "line": 156,
                          "column": 22
                        },
                        "identifierName": "strictEqual"
                      },
                      "name": "strictEqual"
                    },
                    "computed": false
                  },
                  "arguments": [
                    {
                      "type": "BinaryExpression",
                      "start": 3953,
                      "end": 3958,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 23
                        },
                        "end": {
                          "line": 156,
                          "column": 28
                        }
                      },
                      "left": {
                        "type": "Identifier",
                        "start": 3953,
                        "end": 3954,
                        "loc": {
                          "start": {
                            "line": 156,
                            "column": 23
                          },
                          "end": {
                            "line": 156,
                            "column": 24
                          },
                          "identifierName": "i"
                        },
                        "name": "i"
                      },
                      "operator": "&",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 3957,
                        "end": 3958,
                        "loc": {
                          "start": {
                            "line": 156,
                            "column": 27
                          },
                          "end": {
                            "line": 156,
                            "column": 28
                          }
                        },
                        "extra": {
                          "rawValue": 3,
                          "raw": "3"
                        },
                        "value": 3
                      }
                    },
                    {
                      "type": "Identifier",
                      "start": 3960,
                      "end": 3961,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 30
                        },
                        "end": {
                          "line": 156,
                          "column": 31
                        },
                        "identifierName": "i"
                      },
                      "name": "i"
                    },
                    {
                      "type": "StringLiteral",
                      "start": 3963,
                      "end": 4001,
                      "loc": {
                        "start": {
                          "line": 156,
                          "column": 33
                        },
                        "end": {
                          "line": 156,
                          "column": 71
                        }
                      },
                      "extra": {
                        "rawValue": "Recovery param is more than two bits",
                        "raw": "\"Recovery param is more than two bits\""
                      },
                      "value": "Recovery param is more than two bits"
                    }
                  ]
                }
              },
              {
                "type": "VariableDeclaration",
                "start": 4009,
                "end": 4025,
                "loc": {
                  "start": {
                    "line": 158,
                    "column": 4
                  },
                  "end": {
                    "line": 158,
                    "column": 20
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4013,
                    "end": 4024,
                    "loc": {
                      "start": {
                        "line": 158,
                        "column": 8
                      },
                      "end": {
                        "line": 158,
                        "column": 19
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4013,
                      "end": 4014,
                      "loc": {
                        "start": {
                          "line": 158,
                          "column": 8
                        },
                        "end": {
                          "line": 158,
                          "column": 9
                        },
                        "identifierName": "n"
                      },
                      "name": "n"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 4017,
                      "end": 4024,
                      "loc": {
                        "start": {
                          "line": 158,
                          "column": 12
                        },
                        "end": {
                          "line": 158,
                          "column": 19
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4017,
                        "end": 4022,
                        "loc": {
                          "start": {
                            "line": 158,
                            "column": 12
                          },
                          "end": {
                            "line": 158,
                            "column": 17
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4023,
                        "end": 4024,
                        "loc": {
                          "start": {
                            "line": 158,
                            "column": 18
                          },
                          "end": {
                            "line": 158,
                            "column": 19
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 4030,
                "end": 4046,
                "loc": {
                  "start": {
                    "line": 159,
                    "column": 4
                  },
                  "end": {
                    "line": 159,
                    "column": 20
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4034,
                    "end": 4045,
                    "loc": {
                      "start": {
                        "line": 159,
                        "column": 8
                      },
                      "end": {
                        "line": 159,
                        "column": 19
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4034,
                      "end": 4035,
                      "loc": {
                        "start": {
                          "line": 159,
                          "column": 8
                        },
                        "end": {
                          "line": 159,
                          "column": 9
                        },
                        "identifierName": "G"
                      },
                      "name": "G"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 4038,
                      "end": 4045,
                      "loc": {
                        "start": {
                          "line": 159,
                          "column": 12
                        },
                        "end": {
                          "line": 159,
                          "column": 19
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4038,
                        "end": 4043,
                        "loc": {
                          "start": {
                            "line": 159,
                            "column": 12
                          },
                          "end": {
                            "line": 159,
                            "column": 17
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4044,
                        "end": 4045,
                        "loc": {
                          "start": {
                            "line": 159,
                            "column": 18
                          },
                          "end": {
                            "line": 159,
                            "column": 19
                          },
                          "identifierName": "G"
                        },
                        "name": "G"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 4052,
                "end": 4072,
                "loc": {
                  "start": {
                    "line": 161,
                    "column": 4
                  },
                  "end": {
                    "line": 161,
                    "column": 24
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4056,
                    "end": 4071,
                    "loc": {
                      "start": {
                        "line": 161,
                        "column": 8
                      },
                      "end": {
                        "line": 161,
                        "column": 23
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4056,
                      "end": 4057,
                      "loc": {
                        "start": {
                          "line": 161,
                          "column": 8
                        },
                        "end": {
                          "line": 161,
                          "column": 9
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 4060,
                      "end": 4071,
                      "loc": {
                        "start": {
                          "line": 161,
                          "column": 12
                        },
                        "end": {
                          "line": 161,
                          "column": 23
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4060,
                        "end": 4069,
                        "loc": {
                          "start": {
                            "line": 161,
                            "column": 12
                          },
                          "end": {
                            "line": 161,
                            "column": 21
                          },
                          "identifierName": "signature"
                        },
                        "name": "signature"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4070,
                        "end": 4071,
                        "loc": {
                          "start": {
                            "line": 161,
                            "column": 22
                          },
                          "end": {
                            "line": 161,
                            "column": 23
                          },
                          "identifierName": "r"
                        },
                        "name": "r"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 4077,
                "end": 4097,
                "loc": {
                  "start": {
                    "line": 162,
                    "column": 4
                  },
                  "end": {
                    "line": 162,
                    "column": 24
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4081,
                    "end": 4096,
                    "loc": {
                      "start": {
                        "line": 162,
                        "column": 8
                      },
                      "end": {
                        "line": 162,
                        "column": 23
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4081,
                      "end": 4082,
                      "loc": {
                        "start": {
                          "line": 162,
                          "column": 8
                        },
                        "end": {
                          "line": 162,
                          "column": 9
                        },
                        "identifierName": "s"
                      },
                      "name": "s"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 4085,
                      "end": 4096,
                      "loc": {
                        "start": {
                          "line": 162,
                          "column": 12
                        },
                        "end": {
                          "line": 162,
                          "column": 23
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4085,
                        "end": 4094,
                        "loc": {
                          "start": {
                            "line": 162,
                            "column": 12
                          },
                          "end": {
                            "line": 162,
                            "column": 21
                          },
                          "identifierName": "signature"
                        },
                        "name": "signature"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4095,
                        "end": 4096,
                        "loc": {
                          "start": {
                            "line": 162,
                            "column": 22
                          },
                          "end": {
                            "line": 162,
                            "column": 23
                          },
                          "identifierName": "s"
                        },
                        "name": "s"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "ExpressionStatement",
                "start": 4103,
                "end": 4167,
                "loc": {
                  "start": {
                    "line": 164,
                    "column": 4
                  },
                  "end": {
                    "line": 164,
                    "column": 68
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 4103,
                  "end": 4166,
                  "loc": {
                    "start": {
                      "line": 164,
                      "column": 4
                    },
                    "end": {
                      "line": 164,
                      "column": 67
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 4103,
                    "end": 4109,
                    "loc": {
                      "start": {
                        "line": 164,
                        "column": 4
                      },
                      "end": {
                        "line": 164,
                        "column": 10
                      },
                      "identifierName": "assert"
                    },
                    "name": "assert"
                  },
                  "arguments": [
                    {
                      "type": "LogicalExpression",
                      "start": 4110,
                      "end": 4146,
                      "loc": {
                        "start": {
                          "line": 164,
                          "column": 11
                        },
                        "end": {
                          "line": 164,
                          "column": 47
                        }
                      },
                      "left": {
                        "type": "BinaryExpression",
                        "start": 4110,
                        "end": 4124,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 11
                          },
                          "end": {
                            "line": 164,
                            "column": 25
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 4110,
                          "end": 4120,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 11
                            },
                            "end": {
                              "line": 164,
                              "column": 21
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4110,
                            "end": 4118,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 11
                              },
                              "end": {
                                "line": 164,
                                "column": 19
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 4110,
                              "end": 4111,
                              "loc": {
                                "start": {
                                  "line": 164,
                                  "column": 11
                                },
                                "end": {
                                  "line": 164,
                                  "column": 12
                                },
                                "identifierName": "r"
                              },
                              "name": "r"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4112,
                              "end": 4118,
                              "loc": {
                                "start": {
                                  "line": 164,
                                  "column": 13
                                },
                                "end": {
                                  "line": 164,
                                  "column": 19
                                },
                                "identifierName": "signum"
                              },
                              "name": "signum"
                            },
                            "computed": false
                          },
                          "arguments": []
                        },
                        "operator": ">",
                        "right": {
                          "type": "NumericLiteral",
                          "start": 4123,
                          "end": 4124,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 24
                            },
                            "end": {
                              "line": 164,
                              "column": 25
                            }
                          },
                          "extra": {
                            "rawValue": 0,
                            "raw": "0"
                          },
                          "value": 0
                        }
                      },
                      "operator": "&&",
                      "right": {
                        "type": "BinaryExpression",
                        "start": 4128,
                        "end": 4146,
                        "loc": {
                          "start": {
                            "line": 164,
                            "column": 29
                          },
                          "end": {
                            "line": 164,
                            "column": 47
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 4128,
                          "end": 4142,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 29
                            },
                            "end": {
                              "line": 164,
                              "column": 43
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4128,
                            "end": 4139,
                            "loc": {
                              "start": {
                                "line": 164,
                                "column": 29
                              },
                              "end": {
                                "line": 164,
                                "column": 40
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 4128,
                              "end": 4129,
                              "loc": {
                                "start": {
                                  "line": 164,
                                  "column": 29
                                },
                                "end": {
                                  "line": 164,
                                  "column": 30
                                },
                                "identifierName": "r"
                              },
                              "name": "r"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4130,
                              "end": 4139,
                              "loc": {
                                "start": {
                                  "line": 164,
                                  "column": 31
                                },
                                "end": {
                                  "line": 164,
                                  "column": 40
                                },
                                "identifierName": "compareTo"
                              },
                              "name": "compareTo"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4140,
                              "end": 4141,
                              "loc": {
                                "start": {
                                  "line": 164,
                                  "column": 41
                                },
                                "end": {
                                  "line": 164,
                                  "column": 42
                                },
                                "identifierName": "n"
                              },
                              "name": "n"
                            }
                          ]
                        },
                        "operator": "<",
                        "right": {
                          "type": "NumericLiteral",
                          "start": 4145,
                          "end": 4146,
                          "loc": {
                            "start": {
                              "line": 164,
                              "column": 46
                            },
                            "end": {
                              "line": 164,
                              "column": 47
                            }
                          },
                          "extra": {
                            "rawValue": 0,
                            "raw": "0"
                          },
                          "value": 0
                        }
                      }
                    },
                    {
                      "type": "StringLiteral",
                      "start": 4148,
                      "end": 4165,
                      "loc": {
                        "start": {
                          "line": 164,
                          "column": 49
                        },
                        "end": {
                          "line": 164,
                          "column": 66
                        }
                      },
                      "extra": {
                        "rawValue": "Invalid r value",
                        "raw": "\"Invalid r value\""
                      },
                      "value": "Invalid r value"
                    }
                  ]
                }
              },
              {
                "type": "ExpressionStatement",
                "start": 4172,
                "end": 4236,
                "loc": {
                  "start": {
                    "line": 165,
                    "column": 4
                  },
                  "end": {
                    "line": 165,
                    "column": 68
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 4172,
                  "end": 4235,
                  "loc": {
                    "start": {
                      "line": 165,
                      "column": 4
                    },
                    "end": {
                      "line": 165,
                      "column": 67
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 4172,
                    "end": 4178,
                    "loc": {
                      "start": {
                        "line": 165,
                        "column": 4
                      },
                      "end": {
                        "line": 165,
                        "column": 10
                      },
                      "identifierName": "assert"
                    },
                    "name": "assert"
                  },
                  "arguments": [
                    {
                      "type": "LogicalExpression",
                      "start": 4179,
                      "end": 4215,
                      "loc": {
                        "start": {
                          "line": 165,
                          "column": 11
                        },
                        "end": {
                          "line": 165,
                          "column": 47
                        }
                      },
                      "left": {
                        "type": "BinaryExpression",
                        "start": 4179,
                        "end": 4193,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 11
                          },
                          "end": {
                            "line": 165,
                            "column": 25
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 4179,
                          "end": 4189,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 11
                            },
                            "end": {
                              "line": 165,
                              "column": 21
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4179,
                            "end": 4187,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 11
                              },
                              "end": {
                                "line": 165,
                                "column": 19
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 4179,
                              "end": 4180,
                              "loc": {
                                "start": {
                                  "line": 165,
                                  "column": 11
                                },
                                "end": {
                                  "line": 165,
                                  "column": 12
                                },
                                "identifierName": "s"
                              },
                              "name": "s"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4181,
                              "end": 4187,
                              "loc": {
                                "start": {
                                  "line": 165,
                                  "column": 13
                                },
                                "end": {
                                  "line": 165,
                                  "column": 19
                                },
                                "identifierName": "signum"
                              },
                              "name": "signum"
                            },
                            "computed": false
                          },
                          "arguments": []
                        },
                        "operator": ">",
                        "right": {
                          "type": "NumericLiteral",
                          "start": 4192,
                          "end": 4193,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 24
                            },
                            "end": {
                              "line": 165,
                              "column": 25
                            }
                          },
                          "extra": {
                            "rawValue": 0,
                            "raw": "0"
                          },
                          "value": 0
                        }
                      },
                      "operator": "&&",
                      "right": {
                        "type": "BinaryExpression",
                        "start": 4197,
                        "end": 4215,
                        "loc": {
                          "start": {
                            "line": 165,
                            "column": 29
                          },
                          "end": {
                            "line": 165,
                            "column": 47
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 4197,
                          "end": 4211,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 29
                            },
                            "end": {
                              "line": 165,
                              "column": 43
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4197,
                            "end": 4208,
                            "loc": {
                              "start": {
                                "line": 165,
                                "column": 29
                              },
                              "end": {
                                "line": 165,
                                "column": 40
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 4197,
                              "end": 4198,
                              "loc": {
                                "start": {
                                  "line": 165,
                                  "column": 29
                                },
                                "end": {
                                  "line": 165,
                                  "column": 30
                                },
                                "identifierName": "s"
                              },
                              "name": "s"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4199,
                              "end": 4208,
                              "loc": {
                                "start": {
                                  "line": 165,
                                  "column": 31
                                },
                                "end": {
                                  "line": 165,
                                  "column": 40
                                },
                                "identifierName": "compareTo"
                              },
                              "name": "compareTo"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4209,
                              "end": 4210,
                              "loc": {
                                "start": {
                                  "line": 165,
                                  "column": 41
                                },
                                "end": {
                                  "line": 165,
                                  "column": 42
                                },
                                "identifierName": "n"
                              },
                              "name": "n"
                            }
                          ]
                        },
                        "operator": "<",
                        "right": {
                          "type": "NumericLiteral",
                          "start": 4214,
                          "end": 4215,
                          "loc": {
                            "start": {
                              "line": 165,
                              "column": 46
                            },
                            "end": {
                              "line": 165,
                              "column": 47
                            }
                          },
                          "extra": {
                            "rawValue": 0,
                            "raw": "0"
                          },
                          "value": 0
                        }
                      }
                    },
                    {
                      "type": "StringLiteral",
                      "start": 4217,
                      "end": 4234,
                      "loc": {
                        "start": {
                          "line": 165,
                          "column": 49
                        },
                        "end": {
                          "line": 165,
                          "column": 66
                        }
                      },
                      "extra": {
                        "rawValue": "Invalid s value",
                        "raw": "\"Invalid s value\""
                      },
                      "value": "Invalid s value"
                    }
                  ]
                },
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " A set LSB signifies that the y-coordinate is odd",
                    "start": 4242,
                    "end": 4293,
                    "loc": {
                      "start": {
                        "line": 167,
                        "column": 4
                      },
                      "end": {
                        "line": 167,
                        "column": 55
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4298,
                "end": 4317,
                "loc": {
                  "start": {
                    "line": 168,
                    "column": 4
                  },
                  "end": {
                    "line": 168,
                    "column": 23
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4302,
                    "end": 4316,
                    "loc": {
                      "start": {
                        "line": 168,
                        "column": 8
                      },
                      "end": {
                        "line": 168,
                        "column": 22
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4302,
                      "end": 4308,
                      "loc": {
                        "start": {
                          "line": 168,
                          "column": 8
                        },
                        "end": {
                          "line": 168,
                          "column": 14
                        },
                        "identifierName": "isYOdd"
                      },
                      "name": "isYOdd",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "BinaryExpression",
                      "start": 4311,
                      "end": 4316,
                      "loc": {
                        "start": {
                          "line": 168,
                          "column": 17
                        },
                        "end": {
                          "line": 168,
                          "column": 22
                        }
                      },
                      "left": {
                        "type": "Identifier",
                        "start": 4311,
                        "end": 4312,
                        "loc": {
                          "start": {
                            "line": 168,
                            "column": 17
                          },
                          "end": {
                            "line": 168,
                            "column": 18
                          },
                          "identifierName": "i"
                        },
                        "name": "i"
                      },
                      "operator": "&",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 4315,
                        "end": 4316,
                        "loc": {
                          "start": {
                            "line": 168,
                            "column": 21
                          },
                          "end": {
                            "line": 168,
                            "column": 22
                          }
                        },
                        "extra": {
                          "rawValue": 1,
                          "raw": "1"
                        },
                        "value": 1
                      }
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " A set LSB signifies that the y-coordinate is odd",
                    "start": 4242,
                    "end": 4293,
                    "loc": {
                      "start": {
                        "line": 167,
                        "column": 4
                      },
                      "end": {
                        "line": 167,
                        "column": 55
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " The more significant bit specifies whether we should use the",
                    "start": 4323,
                    "end": 4386,
                    "loc": {
                      "start": {
                        "line": 170,
                        "column": 4
                      },
                      "end": {
                        "line": 170,
                        "column": 67
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": " first or second candidate key.",
                    "start": 4391,
                    "end": 4424,
                    "loc": {
                      "start": {
                        "line": 171,
                        "column": 4
                      },
                      "end": {
                        "line": 171,
                        "column": 37
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4429,
                "end": 4454,
                "loc": {
                  "start": {
                    "line": 172,
                    "column": 4
                  },
                  "end": {
                    "line": 172,
                    "column": 29
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4433,
                    "end": 4453,
                    "loc": {
                      "start": {
                        "line": 172,
                        "column": 8
                      },
                      "end": {
                        "line": 172,
                        "column": 28
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4433,
                      "end": 4444,
                      "loc": {
                        "start": {
                          "line": 172,
                          "column": 8
                        },
                        "end": {
                          "line": 172,
                          "column": 19
                        },
                        "identifierName": "isSecondKey"
                      },
                      "name": "isSecondKey",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "BinaryExpression",
                      "start": 4447,
                      "end": 4453,
                      "loc": {
                        "start": {
                          "line": 172,
                          "column": 22
                        },
                        "end": {
                          "line": 172,
                          "column": 28
                        }
                      },
                      "left": {
                        "type": "Identifier",
                        "start": 4447,
                        "end": 4448,
                        "loc": {
                          "start": {
                            "line": 172,
                            "column": 22
                          },
                          "end": {
                            "line": 172,
                            "column": 23
                          },
                          "identifierName": "i"
                        },
                        "name": "i"
                      },
                      "operator": ">>",
                      "right": {
                        "type": "NumericLiteral",
                        "start": 4452,
                        "end": 4453,
                        "loc": {
                          "start": {
                            "line": 172,
                            "column": 27
                          },
                          "end": {
                            "line": 172,
                            "column": 28
                          }
                        },
                        "extra": {
                          "rawValue": 1,
                          "raw": "1"
                        },
                        "value": 1
                      }
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " The more significant bit specifies whether we should use the",
                    "start": 4323,
                    "end": 4386,
                    "loc": {
                      "start": {
                        "line": 170,
                        "column": 4
                      },
                      "end": {
                        "line": 170,
                        "column": 67
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": " first or second candidate key.",
                    "start": 4391,
                    "end": 4424,
                    "loc": {
                      "start": {
                        "line": 171,
                        "column": 4
                      },
                      "end": {
                        "line": 171,
                        "column": 37
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.1 Let x = r + jn",
                    "start": 4460,
                    "end": 4481,
                    "loc": {
                      "start": {
                        "line": 174,
                        "column": 4
                      },
                      "end": {
                        "line": 174,
                        "column": 25
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4486,
                "end": 4521,
                "loc": {
                  "start": {
                    "line": 175,
                    "column": 4
                  },
                  "end": {
                    "line": 175,
                    "column": 39
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4490,
                    "end": 4520,
                    "loc": {
                      "start": {
                        "line": 175,
                        "column": 8
                      },
                      "end": {
                        "line": 175,
                        "column": 38
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4490,
                      "end": 4491,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 8
                        },
                        "end": {
                          "line": 175,
                          "column": 9
                        },
                        "identifierName": "x"
                      },
                      "name": "x",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "ConditionalExpression",
                      "start": 4494,
                      "end": 4520,
                      "loc": {
                        "start": {
                          "line": 175,
                          "column": 12
                        },
                        "end": {
                          "line": 175,
                          "column": 38
                        }
                      },
                      "test": {
                        "type": "Identifier",
                        "start": 4494,
                        "end": 4505,
                        "loc": {
                          "start": {
                            "line": 175,
                            "column": 12
                          },
                          "end": {
                            "line": 175,
                            "column": 23
                          },
                          "identifierName": "isSecondKey"
                        },
                        "name": "isSecondKey"
                      },
                      "consequent": {
                        "type": "CallExpression",
                        "start": 4508,
                        "end": 4516,
                        "loc": {
                          "start": {
                            "line": 175,
                            "column": 26
                          },
                          "end": {
                            "line": 175,
                            "column": 34
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4508,
                          "end": 4513,
                          "loc": {
                            "start": {
                              "line": 175,
                              "column": 26
                            },
                            "end": {
                              "line": 175,
                              "column": 31
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4508,
                            "end": 4509,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 26
                              },
                              "end": {
                                "line": 175,
                                "column": 27
                              },
                              "identifierName": "r"
                            },
                            "name": "r"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4510,
                            "end": 4513,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 28
                              },
                              "end": {
                                "line": 175,
                                "column": 31
                              },
                              "identifierName": "add"
                            },
                            "name": "add"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4514,
                            "end": 4515,
                            "loc": {
                              "start": {
                                "line": 175,
                                "column": 32
                              },
                              "end": {
                                "line": 175,
                                "column": 33
                              },
                              "identifierName": "n"
                            },
                            "name": "n"
                          }
                        ]
                      },
                      "alternate": {
                        "type": "Identifier",
                        "start": 4519,
                        "end": 4520,
                        "loc": {
                          "start": {
                            "line": 175,
                            "column": 37
                          },
                          "end": {
                            "line": 175,
                            "column": 38
                          },
                          "identifierName": "r"
                        },
                        "name": "r"
                      }
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.1 Let x = r + jn",
                    "start": 4460,
                    "end": 4481,
                    "loc": {
                      "start": {
                        "line": 174,
                        "column": 4
                      },
                      "end": {
                        "line": 174,
                        "column": 25
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4526,
                "end": 4562,
                "loc": {
                  "start": {
                    "line": 176,
                    "column": 4
                  },
                  "end": {
                    "line": 176,
                    "column": 40
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4530,
                    "end": 4561,
                    "loc": {
                      "start": {
                        "line": 176,
                        "column": 8
                      },
                      "end": {
                        "line": 176,
                        "column": 39
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4530,
                      "end": 4531,
                      "loc": {
                        "start": {
                          "line": 176,
                          "column": 8
                        },
                        "end": {
                          "line": 176,
                          "column": 9
                        },
                        "identifierName": "R"
                      },
                      "name": "R"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 4534,
                      "end": 4561,
                      "loc": {
                        "start": {
                          "line": 176,
                          "column": 12
                        },
                        "end": {
                          "line": 176,
                          "column": 39
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4534,
                        "end": 4550,
                        "loc": {
                          "start": {
                            "line": 176,
                            "column": 12
                          },
                          "end": {
                            "line": 176,
                            "column": 28
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4534,
                          "end": 4539,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 12
                            },
                            "end": {
                              "line": 176,
                              "column": 17
                            },
                            "identifierName": "curve"
                          },
                          "name": "curve"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4540,
                          "end": 4550,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 18
                            },
                            "end": {
                              "line": 176,
                              "column": 28
                            },
                            "identifierName": "pointFromX"
                          },
                          "name": "pointFromX"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4551,
                          "end": 4557,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 29
                            },
                            "end": {
                              "line": 176,
                              "column": 35
                            },
                            "identifierName": "isYOdd"
                          },
                          "name": "isYOdd"
                        },
                        {
                          "type": "Identifier",
                          "start": 4559,
                          "end": 4560,
                          "loc": {
                            "start": {
                              "line": 176,
                              "column": 37
                            },
                            "end": {
                              "line": 176,
                              "column": 38
                            },
                            "identifierName": "x"
                          },
                          "name": "x"
                        }
                      ]
                    }
                  }
                ],
                "kind": "var",
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4 Check that nR is at infinity",
                    "start": 4568,
                    "end": 4603,
                    "loc": {
                      "start": {
                        "line": 178,
                        "column": 4
                      },
                      "end": {
                        "line": 178,
                        "column": 39
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4608,
                "end": 4631,
                "loc": {
                  "start": {
                    "line": 179,
                    "column": 4
                  },
                  "end": {
                    "line": 179,
                    "column": 27
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4612,
                    "end": 4630,
                    "loc": {
                      "start": {
                        "line": 179,
                        "column": 8
                      },
                      "end": {
                        "line": 179,
                        "column": 26
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4612,
                      "end": 4614,
                      "loc": {
                        "start": {
                          "line": 179,
                          "column": 8
                        },
                        "end": {
                          "line": 179,
                          "column": 10
                        },
                        "identifierName": "nR"
                      },
                      "name": "nR",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 4617,
                      "end": 4630,
                      "loc": {
                        "start": {
                          "line": 179,
                          "column": 13
                        },
                        "end": {
                          "line": 179,
                          "column": 26
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4617,
                        "end": 4627,
                        "loc": {
                          "start": {
                            "line": 179,
                            "column": 13
                          },
                          "end": {
                            "line": 179,
                            "column": 23
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4617,
                          "end": 4618,
                          "loc": {
                            "start": {
                              "line": 179,
                              "column": 13
                            },
                            "end": {
                              "line": 179,
                              "column": 14
                            },
                            "identifierName": "R"
                          },
                          "name": "R"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4619,
                          "end": 4627,
                          "loc": {
                            "start": {
                              "line": 179,
                              "column": 15
                            },
                            "end": {
                              "line": 179,
                              "column": 23
                            },
                            "identifierName": "multiply"
                          },
                          "name": "multiply"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4628,
                          "end": 4629,
                          "loc": {
                            "start": {
                              "line": 179,
                              "column": 24
                            },
                            "end": {
                              "line": 179,
                              "column": 25
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4 Check that nR is at infinity",
                    "start": 4568,
                    "end": 4603,
                    "loc": {
                      "start": {
                        "line": 178,
                        "column": 4
                      },
                      "end": {
                        "line": 178,
                        "column": 39
                      }
                    }
                  }
                ]
              },
              {
                "type": "ExpressionStatement",
                "start": 4636,
                "end": 4698,
                "loc": {
                  "start": {
                    "line": 180,
                    "column": 4
                  },
                  "end": {
                    "line": 180,
                    "column": 66
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 4636,
                  "end": 4697,
                  "loc": {
                    "start": {
                      "line": 180,
                      "column": 4
                    },
                    "end": {
                      "line": 180,
                      "column": 65
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 4636,
                    "end": 4642,
                    "loc": {
                      "start": {
                        "line": 180,
                        "column": 4
                      },
                      "end": {
                        "line": 180,
                        "column": 10
                      },
                      "identifierName": "assert"
                    },
                    "name": "assert"
                  },
                  "arguments": [
                    {
                      "type": "CallExpression",
                      "start": 4643,
                      "end": 4663,
                      "loc": {
                        "start": {
                          "line": 180,
                          "column": 11
                        },
                        "end": {
                          "line": 180,
                          "column": 31
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4643,
                        "end": 4659,
                        "loc": {
                          "start": {
                            "line": 180,
                            "column": 11
                          },
                          "end": {
                            "line": 180,
                            "column": 27
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4643,
                          "end": 4648,
                          "loc": {
                            "start": {
                              "line": 180,
                              "column": 11
                            },
                            "end": {
                              "line": 180,
                              "column": 16
                            },
                            "identifierName": "curve"
                          },
                          "name": "curve"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4649,
                          "end": 4659,
                          "loc": {
                            "start": {
                              "line": 180,
                              "column": 17
                            },
                            "end": {
                              "line": 180,
                              "column": 27
                            },
                            "identifierName": "isInfinity"
                          },
                          "name": "isInfinity"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4660,
                          "end": 4662,
                          "loc": {
                            "start": {
                              "line": 180,
                              "column": 28
                            },
                            "end": {
                              "line": 180,
                              "column": 30
                            },
                            "identifierName": "nR"
                          },
                          "name": "nR"
                        }
                      ]
                    },
                    {
                      "type": "StringLiteral",
                      "start": 4665,
                      "end": 4696,
                      "loc": {
                        "start": {
                          "line": 180,
                          "column": 33
                        },
                        "end": {
                          "line": 180,
                          "column": 64
                        }
                      },
                      "extra": {
                        "rawValue": "nR is not a valid curve point",
                        "raw": "\"nR is not a valid curve point\""
                      },
                      "value": "nR is not a valid curve point"
                    }
                  ]
                },
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Compute -e from e",
                    "start": 4704,
                    "end": 4724,
                    "loc": {
                      "start": {
                        "line": 182,
                        "column": 4
                      },
                      "end": {
                        "line": 182,
                        "column": 24
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4729,
                "end": 4758,
                "loc": {
                  "start": {
                    "line": 183,
                    "column": 4
                  },
                  "end": {
                    "line": 183,
                    "column": 33
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4733,
                    "end": 4757,
                    "loc": {
                      "start": {
                        "line": 183,
                        "column": 8
                      },
                      "end": {
                        "line": 183,
                        "column": 32
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4733,
                      "end": 4737,
                      "loc": {
                        "start": {
                          "line": 183,
                          "column": 8
                        },
                        "end": {
                          "line": 183,
                          "column": 12
                        },
                        "identifierName": "eNeg"
                      },
                      "name": "eNeg",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 4740,
                      "end": 4757,
                      "loc": {
                        "start": {
                          "line": 183,
                          "column": 15
                        },
                        "end": {
                          "line": 183,
                          "column": 32
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4740,
                        "end": 4754,
                        "loc": {
                          "start": {
                            "line": 183,
                            "column": 15
                          },
                          "end": {
                            "line": 183,
                            "column": 29
                          }
                        },
                        "object": {
                          "type": "CallExpression",
                          "start": 4740,
                          "end": 4750,
                          "loc": {
                            "start": {
                              "line": 183,
                              "column": 15
                            },
                            "end": {
                              "line": 183,
                              "column": 25
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4740,
                            "end": 4748,
                            "loc": {
                              "start": {
                                "line": 183,
                                "column": 15
                              },
                              "end": {
                                "line": 183,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 4740,
                              "end": 4741,
                              "loc": {
                                "start": {
                                  "line": 183,
                                  "column": 15
                                },
                                "end": {
                                  "line": 183,
                                  "column": 16
                                },
                                "identifierName": "e"
                              },
                              "name": "e"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4742,
                              "end": 4748,
                              "loc": {
                                "start": {
                                  "line": 183,
                                  "column": 17
                                },
                                "end": {
                                  "line": 183,
                                  "column": 23
                                },
                                "identifierName": "negate"
                              },
                              "name": "negate"
                            },
                            "computed": false
                          },
                          "arguments": []
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4751,
                          "end": 4754,
                          "loc": {
                            "start": {
                              "line": 183,
                              "column": 26
                            },
                            "end": {
                              "line": 183,
                              "column": 29
                            },
                            "identifierName": "mod"
                          },
                          "name": "mod"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4755,
                          "end": 4756,
                          "loc": {
                            "start": {
                              "line": 183,
                              "column": 30
                            },
                            "end": {
                              "line": 183,
                              "column": 31
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " Compute -e from e",
                    "start": 4704,
                    "end": 4724,
                    "loc": {
                      "start": {
                        "line": 182,
                        "column": 4
                      },
                      "end": {
                        "line": 182,
                        "column": 24
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.6.1 Compute Q = r^-1 (sR -  eG)",
                    "start": 4764,
                    "end": 4800,
                    "loc": {
                      "start": {
                        "line": 185,
                        "column": 4
                      },
                      "end": {
                        "line": 185,
                        "column": 40
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": "               Q = r^-1 (sR + -eG)",
                    "start": 4805,
                    "end": 4841,
                    "loc": {
                      "start": {
                        "line": 186,
                        "column": 4
                      },
                      "end": {
                        "line": 186,
                        "column": 40
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4846,
                "end": 4873,
                "loc": {
                  "start": {
                    "line": 187,
                    "column": 4
                  },
                  "end": {
                    "line": 187,
                    "column": 31
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4850,
                    "end": 4872,
                    "loc": {
                      "start": {
                        "line": 187,
                        "column": 8
                      },
                      "end": {
                        "line": 187,
                        "column": 30
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4850,
                      "end": 4854,
                      "loc": {
                        "start": {
                          "line": 187,
                          "column": 8
                        },
                        "end": {
                          "line": 187,
                          "column": 12
                        },
                        "identifierName": "rInv"
                      },
                      "name": "rInv",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 4857,
                      "end": 4872,
                      "loc": {
                        "start": {
                          "line": 187,
                          "column": 15
                        },
                        "end": {
                          "line": 187,
                          "column": 30
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4857,
                        "end": 4869,
                        "loc": {
                          "start": {
                            "line": 187,
                            "column": 15
                          },
                          "end": {
                            "line": 187,
                            "column": 27
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4857,
                          "end": 4858,
                          "loc": {
                            "start": {
                              "line": 187,
                              "column": 15
                            },
                            "end": {
                              "line": 187,
                              "column": 16
                            },
                            "identifierName": "r"
                          },
                          "name": "r"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4859,
                          "end": 4869,
                          "loc": {
                            "start": {
                              "line": 187,
                              "column": 17
                            },
                            "end": {
                              "line": 187,
                              "column": 27
                            },
                            "identifierName": "modInverse"
                          },
                          "name": "modInverse"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4870,
                          "end": 4871,
                          "loc": {
                            "start": {
                              "line": 187,
                              "column": 28
                            },
                            "end": {
                              "line": 187,
                              "column": 29
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.6.1 Compute Q = r^-1 (sR -  eG)",
                    "start": 4764,
                    "end": 4800,
                    "loc": {
                      "start": {
                        "line": 185,
                        "column": 4
                      },
                      "end": {
                        "line": 185,
                        "column": 40
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": "               Q = r^-1 (sR + -eG)",
                    "start": 4805,
                    "end": 4841,
                    "loc": {
                      "start": {
                        "line": 186,
                        "column": 4
                      },
                      "end": {
                        "line": 186,
                        "column": 40
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 4879,
                "end": 4928,
                "loc": {
                  "start": {
                    "line": 189,
                    "column": 4
                  },
                  "end": {
                    "line": 189,
                    "column": 53
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 4883,
                    "end": 4927,
                    "loc": {
                      "start": {
                        "line": 189,
                        "column": 8
                      },
                      "end": {
                        "line": 189,
                        "column": 52
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 4883,
                      "end": 4884,
                      "loc": {
                        "start": {
                          "line": 189,
                          "column": 8
                        },
                        "end": {
                          "line": 189,
                          "column": 9
                        },
                        "identifierName": "Q"
                      },
                      "name": "Q"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 4887,
                      "end": 4927,
                      "loc": {
                        "start": {
                          "line": 189,
                          "column": 12
                        },
                        "end": {
                          "line": 189,
                          "column": 52
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4887,
                        "end": 4921,
                        "loc": {
                          "start": {
                            "line": 189,
                            "column": 12
                          },
                          "end": {
                            "line": 189,
                            "column": 46
                          }
                        },
                        "object": {
                          "type": "CallExpression",
                          "start": 4887,
                          "end": 4912,
                          "loc": {
                            "start": {
                              "line": 189,
                              "column": 12
                            },
                            "end": {
                              "line": 189,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 4887,
                            "end": 4900,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 12
                              },
                              "end": {
                                "line": 189,
                                "column": 25
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 4887,
                              "end": 4888,
                              "loc": {
                                "start": {
                                  "line": 189,
                                  "column": 12
                                },
                                "end": {
                                  "line": 189,
                                  "column": 13
                                },
                                "identifierName": "R"
                              },
                              "name": "R"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4889,
                              "end": 4900,
                              "loc": {
                                "start": {
                                  "line": 189,
                                  "column": 14
                                },
                                "end": {
                                  "line": 189,
                                  "column": 25
                                },
                                "identifierName": "multiplyTwo"
                              },
                              "name": "multiplyTwo"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 4901,
                              "end": 4902,
                              "loc": {
                                "start": {
                                  "line": 189,
                                  "column": 26
                                },
                                "end": {
                                  "line": 189,
                                  "column": 27
                                },
                                "identifierName": "s"
                              },
                              "name": "s"
                            },
                            {
                              "type": "Identifier",
                              "start": 4904,
                              "end": 4905,
                              "loc": {
                                "start": {
                                  "line": 189,
                                  "column": 29
                                },
                                "end": {
                                  "line": 189,
                                  "column": 30
                                },
                                "identifierName": "G"
                              },
                              "name": "G"
                            },
                            {
                              "type": "Identifier",
                              "start": 4907,
                              "end": 4911,
                              "loc": {
                                "start": {
                                  "line": 189,
                                  "column": 32
                                },
                                "end": {
                                  "line": 189,
                                  "column": 36
                                },
                                "identifierName": "eNeg"
                              },
                              "name": "eNeg"
                            }
                          ]
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4913,
                          "end": 4921,
                          "loc": {
                            "start": {
                              "line": 189,
                              "column": 38
                            },
                            "end": {
                              "line": 189,
                              "column": 46
                            },
                            "identifierName": "multiply"
                          },
                          "name": "multiply"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 4922,
                          "end": 4926,
                          "loc": {
                            "start": {
                              "line": 189,
                              "column": 47
                            },
                            "end": {
                              "line": 189,
                              "column": 51
                            },
                            "identifierName": "rInv"
                          },
                          "name": "rInv"
                        }
                      ]
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "ExpressionStatement",
                "start": 4933,
                "end": 4951,
                "loc": {
                  "start": {
                    "line": 190,
                    "column": 4
                  },
                  "end": {
                    "line": 190,
                    "column": 22
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 4933,
                  "end": 4950,
                  "loc": {
                    "start": {
                      "line": 190,
                      "column": 4
                    },
                    "end": {
                      "line": 190,
                      "column": 21
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 4933,
                    "end": 4947,
                    "loc": {
                      "start": {
                        "line": 190,
                        "column": 4
                      },
                      "end": {
                        "line": 190,
                        "column": 18
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 4933,
                      "end": 4938,
                      "loc": {
                        "start": {
                          "line": 190,
                          "column": 4
                        },
                        "end": {
                          "line": 190,
                          "column": 9
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 4939,
                      "end": 4947,
                      "loc": {
                        "start": {
                          "line": 190,
                          "column": 10
                        },
                        "end": {
                          "line": 190,
                          "column": 18
                        },
                        "identifierName": "validate"
                      },
                      "name": "validate"
                    },
                    "computed": false
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 4948,
                      "end": 4949,
                      "loc": {
                        "start": {
                          "line": 190,
                          "column": 19
                        },
                        "end": {
                          "line": 190,
                          "column": 20
                        },
                        "identifierName": "Q"
                      },
                      "name": "Q"
                    }
                  ]
                }
              },
              {
                "type": "ReturnStatement",
                "start": 4957,
                "end": 4966,
                "loc": {
                  "start": {
                    "line": 192,
                    "column": 4
                  },
                  "end": {
                    "line": 192,
                    "column": 13
                  }
                },
                "argument": {
                  "type": "Identifier",
                  "start": 4964,
                  "end": 4965,
                  "loc": {
                    "start": {
                      "line": 192,
                      "column": 11
                    },
                    "end": {
                      "line": 192,
                      "column": 12
                    },
                    "identifierName": "Q"
                  },
                  "name": "Q"
                }
              }
            ],
            "directives": [],
            "trailingComments": null
          },
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n ",
              "start": 3679,
              "end": 3880,
              "loc": {
                "start": {
                  "line": 147,
                  "column": 0
                },
                "end": {
                  "line": 154,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n ",
              "start": 4970,
              "end": 5342,
              "loc": {
                "start": {
                  "line": 195,
                  "column": 0
                },
                "end": {
                  "line": 205,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 1624,
          "end": 2522,
          "loc": {
            "start": {
              "line": 64,
              "column": 0
            },
            "end": {
              "line": 103,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 1633,
            "end": 1637,
            "loc": {
              "start": {
                "line": 64,
                "column": 9
              },
              "end": {
                "line": 64,
                "column": 13
              },
              "identifierName": "sign"
            },
            "name": "sign"
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 1638,
              "end": 1643,
              "loc": {
                "start": {
                  "line": 64,
                  "column": 14
                },
                "end": {
                  "line": 64,
                  "column": 19
                },
                "identifierName": "curve"
              },
              "name": "curve"
            },
            {
              "type": "Identifier",
              "start": 1645,
              "end": 1649,
              "loc": {
                "start": {
                  "line": 64,
                  "column": 21
                },
                "end": {
                  "line": 64,
                  "column": 25
                },
                "identifierName": "hash"
              },
              "name": "hash"
            },
            {
              "type": "Identifier",
              "start": 1651,
              "end": 1652,
              "loc": {
                "start": {
                  "line": 64,
                  "column": 27
                },
                "end": {
                  "line": 64,
                  "column": 28
                },
                "identifierName": "d"
              },
              "name": "d"
            },
            {
              "type": "Identifier",
              "start": 1654,
              "end": 1659,
              "loc": {
                "start": {
                  "line": 64,
                  "column": 30
                },
                "end": {
                  "line": 64,
                  "column": 35
                },
                "identifierName": "nonce"
              },
              "name": "nonce"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 1661,
            "end": 2522,
            "loc": {
              "start": {
                "line": 64,
                "column": 37
              },
              "end": {
                "line": 103,
                "column": 1
              }
            },
            "body": [
              {
                "type": "VariableDeclaration",
                "start": 1667,
                "end": 1705,
                "loc": {
                  "start": {
                    "line": 65,
                    "column": 4
                  },
                  "end": {
                    "line": 65,
                    "column": 42
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 1673,
                    "end": 1704,
                    "loc": {
                      "start": {
                        "line": 65,
                        "column": 10
                      },
                      "end": {
                        "line": 65,
                        "column": 41
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 1673,
                      "end": 1674,
                      "loc": {
                        "start": {
                          "line": 65,
                          "column": 10
                        },
                        "end": {
                          "line": 65,
                          "column": 11
                        },
                        "identifierName": "e"
                      },
                      "name": "e"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 1677,
                      "end": 1704,
                      "loc": {
                        "start": {
                          "line": 65,
                          "column": 14
                        },
                        "end": {
                          "line": 65,
                          "column": 41
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 1677,
                        "end": 1698,
                        "loc": {
                          "start": {
                            "line": 65,
                            "column": 14
                          },
                          "end": {
                            "line": 65,
                            "column": 35
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 1677,
                          "end": 1687,
                          "loc": {
                            "start": {
                              "line": 65,
                              "column": 14
                            },
                            "end": {
                              "line": 65,
                              "column": 24
                            },
                            "identifierName": "BigInteger"
                          },
                          "name": "BigInteger"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 1688,
                          "end": 1698,
                          "loc": {
                            "start": {
                              "line": 65,
                              "column": 25
                            },
                            "end": {
                              "line": 65,
                              "column": 35
                            },
                            "identifierName": "fromBuffer"
                          },
                          "name": "fromBuffer"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 1699,
                          "end": 1703,
                          "loc": {
                            "start": {
                              "line": 65,
                              "column": 36
                            },
                            "end": {
                              "line": 65,
                              "column": 40
                            },
                            "identifierName": "hash"
                          },
                          "name": "hash"
                        }
                      ]
                    }
                  }
                ],
                "kind": "const"
              },
              {
                "type": "VariableDeclaration",
                "start": 1710,
                "end": 1728,
                "loc": {
                  "start": {
                    "line": 66,
                    "column": 4
                  },
                  "end": {
                    "line": 66,
                    "column": 22
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 1716,
                    "end": 1727,
                    "loc": {
                      "start": {
                        "line": 66,
                        "column": 10
                      },
                      "end": {
                        "line": 66,
                        "column": 21
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 1716,
                      "end": 1717,
                      "loc": {
                        "start": {
                          "line": 66,
                          "column": 10
                        },
                        "end": {
                          "line": 66,
                          "column": 11
                        },
                        "identifierName": "n"
                      },
                      "name": "n"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 1720,
                      "end": 1727,
                      "loc": {
                        "start": {
                          "line": 66,
                          "column": 14
                        },
                        "end": {
                          "line": 66,
                          "column": 21
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 1720,
                        "end": 1725,
                        "loc": {
                          "start": {
                            "line": 66,
                            "column": 14
                          },
                          "end": {
                            "line": 66,
                            "column": 19
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 1726,
                        "end": 1727,
                        "loc": {
                          "start": {
                            "line": 66,
                            "column": 20
                          },
                          "end": {
                            "line": 66,
                            "column": 21
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "const"
              },
              {
                "type": "VariableDeclaration",
                "start": 1733,
                "end": 1751,
                "loc": {
                  "start": {
                    "line": 67,
                    "column": 4
                  },
                  "end": {
                    "line": 67,
                    "column": 22
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 1739,
                    "end": 1750,
                    "loc": {
                      "start": {
                        "line": 67,
                        "column": 10
                      },
                      "end": {
                        "line": 67,
                        "column": 21
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 1739,
                      "end": 1740,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 10
                        },
                        "end": {
                          "line": 67,
                          "column": 11
                        },
                        "identifierName": "G"
                      },
                      "name": "G"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 1743,
                      "end": 1750,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 14
                        },
                        "end": {
                          "line": 67,
                          "column": 21
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 1743,
                        "end": 1748,
                        "loc": {
                          "start": {
                            "line": 67,
                            "column": 14
                          },
                          "end": {
                            "line": 67,
                            "column": 19
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 1749,
                        "end": 1750,
                        "loc": {
                          "start": {
                            "line": 67,
                            "column": 20
                          },
                          "end": {
                            "line": 67,
                            "column": 21
                          },
                          "identifierName": "G"
                        },
                        "name": "G"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "const"
              },
              {
                "type": "VariableDeclaration",
                "start": 1757,
                "end": 1766,
                "loc": {
                  "start": {
                    "line": 69,
                    "column": 4
                  },
                  "end": {
                    "line": 69,
                    "column": 13
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 1761,
                    "end": 1762,
                    "loc": {
                      "start": {
                        "line": 69,
                        "column": 8
                      },
                      "end": {
                        "line": 69,
                        "column": 9
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 1761,
                      "end": 1762,
                      "loc": {
                        "start": {
                          "line": 69,
                          "column": 8
                        },
                        "end": {
                          "line": 69,
                          "column": 9
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    },
                    "init": null
                  },
                  {
                    "type": "VariableDeclarator",
                    "start": 1764,
                    "end": 1765,
                    "loc": {
                      "start": {
                        "line": 69,
                        "column": 11
                      },
                      "end": {
                        "line": 69,
                        "column": 12
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 1764,
                      "end": 1765,
                      "loc": {
                        "start": {
                          "line": 69,
                          "column": 11
                        },
                        "end": {
                          "line": 69,
                          "column": 12
                        },
                        "identifierName": "s"
                      },
                      "name": "s"
                    },
                    "init": null
                  }
                ],
                "kind": "let"
              },
              {
                "type": "ExpressionStatement",
                "start": 1772,
                "end": 2304,
                "loc": {
                  "start": {
                    "line": 71,
                    "column": 4
                  },
                  "end": {
                    "line": 93,
                    "column": 6
                  }
                },
                "expression": {
                  "type": "CallExpression",
                  "start": 1772,
                  "end": 2303,
                  "loc": {
                    "start": {
                      "line": 71,
                      "column": 4
                    },
                    "end": {
                      "line": 93,
                      "column": 5
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 1772,
                    "end": 1794,
                    "loc": {
                      "start": {
                        "line": 71,
                        "column": 4
                      },
                      "end": {
                        "line": 71,
                        "column": 26
                      },
                      "identifierName": "deterministicGenerateK"
                    },
                    "name": "deterministicGenerateK"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 1804,
                      "end": 1809,
                      "loc": {
                        "start": {
                          "line": 72,
                          "column": 8
                        },
                        "end": {
                          "line": 72,
                          "column": 13
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    {
                      "type": "Identifier",
                      "start": 1819,
                      "end": 1823,
                      "loc": {
                        "start": {
                          "line": 73,
                          "column": 8
                        },
                        "end": {
                          "line": 73,
                          "column": 12
                        },
                        "identifierName": "hash"
                      },
                      "name": "hash"
                    },
                    {
                      "type": "Identifier",
                      "start": 1833,
                      "end": 1834,
                      "loc": {
                        "start": {
                          "line": 74,
                          "column": 8
                        },
                        "end": {
                          "line": 74,
                          "column": 9
                        },
                        "identifierName": "d"
                      },
                      "name": "d"
                    },
                    {
                      "type": "FunctionExpression",
                      "start": 1844,
                      "end": 2282,
                      "loc": {
                        "start": {
                          "line": 75,
                          "column": 8
                        },
                        "end": {
                          "line": 91,
                          "column": 9
                        }
                      },
                      "id": null,
                      "generator": false,
                      "expression": false,
                      "async": false,
                      "params": [
                        {
                          "type": "Identifier",
                          "start": 1853,
                          "end": 1854,
                          "loc": {
                            "start": {
                              "line": 75,
                              "column": 17
                            },
                            "end": {
                              "line": 75,
                              "column": 18
                            },
                            "identifierName": "k"
                          },
                          "name": "k"
                        }
                      ],
                      "body": {
                        "type": "BlockStatement",
                        "start": 1856,
                        "end": 2282,
                        "loc": {
                          "start": {
                            "line": 75,
                            "column": 20
                          },
                          "end": {
                            "line": 91,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "VariableDeclaration",
                            "start": 1918,
                            "end": 1940,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 12
                              },
                              "end": {
                                "line": 77,
                                "column": 34
                              }
                            },
                            "declarations": [
                              {
                                "type": "VariableDeclarator",
                                "start": 1922,
                                "end": 1939,
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 33
                                  }
                                },
                                "id": {
                                  "type": "Identifier",
                                  "start": 1922,
                                  "end": 1923,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 17
                                    },
                                    "identifierName": "Q"
                                  },
                                  "name": "Q",
                                  "leadingComments": null
                                },
                                "init": {
                                  "type": "CallExpression",
                                  "start": 1926,
                                  "end": 1939,
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 33
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 1926,
                                    "end": 1936,
                                    "loc": {
                                      "start": {
                                        "line": 77,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 77,
                                        "column": 30
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 1926,
                                      "end": 1927,
                                      "loc": {
                                        "start": {
                                          "line": 77,
                                          "column": 20
                                        },
                                        "end": {
                                          "line": 77,
                                          "column": 21
                                        },
                                        "identifierName": "G"
                                      },
                                      "name": "G"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 1928,
                                      "end": 1936,
                                      "loc": {
                                        "start": {
                                          "line": 77,
                                          "column": 22
                                        },
                                        "end": {
                                          "line": 77,
                                          "column": 30
                                        },
                                        "identifierName": "multiply"
                                      },
                                      "name": "multiply"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "Identifier",
                                      "start": 1937,
                                      "end": 1938,
                                      "loc": {
                                        "start": {
                                          "line": 77,
                                          "column": 31
                                        },
                                        "end": {
                                          "line": 77,
                                          "column": 32
                                        },
                                        "identifierName": "k"
                                      },
                                      "name": "k"
                                    }
                                  ]
                                },
                                "leadingComments": null
                              }
                            ],
                            "kind": "let",
                            "leadingComments": [
                              {
                                "type": "CommentLine",
                                "value": " find canonically valid signature",
                                "start": 1870,
                                "end": 1905,
                                "loc": {
                                  "start": {
                                    "line": 76,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 76,
                                    "column": 47
                                  }
                                }
                              }
                            ]
                          },
                          {
                            "type": "IfStatement",
                            "start": 1954,
                            "end": 1992,
                            "loc": {
                              "start": {
                                "line": 79,
                                "column": 12
                              },
                              "end": {
                                "line": 79,
                                "column": 50
                              }
                            },
                            "test": {
                              "type": "CallExpression",
                              "start": 1958,
                              "end": 1977,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 16
                                },
                                "end": {
                                  "line": 79,
                                  "column": 35
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 1958,
                                "end": 1974,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 32
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 1958,
                                  "end": 1963,
                                  "loc": {
                                    "start": {
                                      "line": 79,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 79,
                                      "column": 21
                                    },
                                    "identifierName": "curve"
                                  },
                                  "name": "curve"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1964,
                                  "end": 1974,
                                  "loc": {
                                    "start": {
                                      "line": 79,
                                      "column": 22
                                    },
                                    "end": {
                                      "line": 79,
                                      "column": 32
                                    },
                                    "identifierName": "isInfinity"
                                  },
                                  "name": "isInfinity"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "Identifier",
                                  "start": 1975,
                                  "end": 1976,
                                  "loc": {
                                    "start": {
                                      "line": 79,
                                      "column": 33
                                    },
                                    "end": {
                                      "line": 79,
                                      "column": 34
                                    },
                                    "identifierName": "Q"
                                  },
                                  "name": "Q"
                                }
                              ]
                            },
                            "consequent": {
                              "type": "ReturnStatement",
                              "start": 1979,
                              "end": 1992,
                              "loc": {
                                "start": {
                                  "line": 79,
                                  "column": 37
                                },
                                "end": {
                                  "line": 79,
                                  "column": 50
                                }
                              },
                              "argument": {
                                "type": "BooleanLiteral",
                                "start": 1986,
                                "end": 1991,
                                "loc": {
                                  "start": {
                                    "line": 79,
                                    "column": 44
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 49
                                  }
                                },
                                "value": false
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 2006,
                            "end": 2027,
                            "loc": {
                              "start": {
                                "line": 81,
                                "column": 12
                              },
                              "end": {
                                "line": 81,
                                "column": 33
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 2006,
                              "end": 2026,
                              "loc": {
                                "start": {
                                  "line": 81,
                                  "column": 12
                                },
                                "end": {
                                  "line": 81,
                                  "column": 32
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "Identifier",
                                "start": 2006,
                                "end": 2007,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 13
                                  },
                                  "identifierName": "r"
                                },
                                "name": "r"
                              },
                              "right": {
                                "type": "CallExpression",
                                "start": 2010,
                                "end": 2026,
                                "loc": {
                                  "start": {
                                    "line": 81,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 81,
                                    "column": 32
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2010,
                                  "end": 2023,
                                  "loc": {
                                    "start": {
                                      "line": 81,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 81,
                                      "column": 29
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 2010,
                                    "end": 2019,
                                    "loc": {
                                      "start": {
                                        "line": 81,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 81,
                                        "column": 25
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 2010,
                                      "end": 2011,
                                      "loc": {
                                        "start": {
                                          "line": 81,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 81,
                                          "column": 17
                                        },
                                        "identifierName": "Q"
                                      },
                                      "name": "Q"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 2012,
                                      "end": 2019,
                                      "loc": {
                                        "start": {
                                          "line": 81,
                                          "column": 18
                                        },
                                        "end": {
                                          "line": 81,
                                          "column": 25
                                        },
                                        "identifierName": "affineX"
                                      },
                                      "name": "affineX"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2020,
                                    "end": 2023,
                                    "loc": {
                                      "start": {
                                        "line": 81,
                                        "column": 26
                                      },
                                      "end": {
                                        "line": 81,
                                        "column": 29
                                      },
                                      "identifierName": "mod"
                                    },
                                    "name": "mod"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "Identifier",
                                    "start": 2024,
                                    "end": 2025,
                                    "loc": {
                                      "start": {
                                        "line": 81,
                                        "column": 30
                                      },
                                      "end": {
                                        "line": 81,
                                        "column": 31
                                      },
                                      "identifierName": "n"
                                    },
                                    "name": "n"
                                  }
                                ]
                              }
                            }
                          },
                          {
                            "type": "IfStatement",
                            "start": 2040,
                            "end": 2075,
                            "loc": {
                              "start": {
                                "line": 82,
                                "column": 12
                              },
                              "end": {
                                "line": 82,
                                "column": 47
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2044,
                              "end": 2060,
                              "loc": {
                                "start": {
                                  "line": 82,
                                  "column": 16
                                },
                                "end": {
                                  "line": 82,
                                  "column": 32
                                }
                              },
                              "left": {
                                "type": "CallExpression",
                                "start": 2044,
                                "end": 2054,
                                "loc": {
                                  "start": {
                                    "line": 82,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 82,
                                    "column": 26
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2044,
                                  "end": 2052,
                                  "loc": {
                                    "start": {
                                      "line": 82,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 82,
                                      "column": 24
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 2044,
                                    "end": 2045,
                                    "loc": {
                                      "start": {
                                        "line": 82,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 82,
                                        "column": 17
                                      },
                                      "identifierName": "r"
                                    },
                                    "name": "r"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2046,
                                    "end": 2052,
                                    "loc": {
                                      "start": {
                                        "line": 82,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 82,
                                        "column": 24
                                      },
                                      "identifierName": "signum"
                                    },
                                    "name": "signum"
                                  },
                                  "computed": false
                                },
                                "arguments": []
                              },
                              "operator": "===",
                              "right": {
                                "type": "NumericLiteral",
                                "start": 2059,
                                "end": 2060,
                                "loc": {
                                  "start": {
                                    "line": 82,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 82,
                                    "column": 32
                                  }
                                },
                                "extra": {
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "value": 0
                              }
                            },
                            "consequent": {
                              "type": "ReturnStatement",
                              "start": 2062,
                              "end": 2075,
                              "loc": {
                                "start": {
                                  "line": 82,
                                  "column": 34
                                },
                                "end": {
                                  "line": 82,
                                  "column": 47
                                }
                              },
                              "argument": {
                                "type": "BooleanLiteral",
                                "start": 2069,
                                "end": 2074,
                                "loc": {
                                  "start": {
                                    "line": 82,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 82,
                                    "column": 46
                                  }
                                },
                                "value": false
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 2089,
                            "end": 2198,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 12
                              },
                              "end": {
                                "line": 87,
                                "column": 24
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 2089,
                              "end": 2197,
                              "loc": {
                                "start": {
                                  "line": 84,
                                  "column": 12
                                },
                                "end": {
                                  "line": 87,
                                  "column": 23
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "Identifier",
                                "start": 2089,
                                "end": 2090,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 13
                                  },
                                  "identifierName": "s"
                                },
                                "name": "s"
                              },
                              "right": {
                                "type": "CallExpression",
                                "start": 2093,
                                "end": 2197,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 87,
                                    "column": 23
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2093,
                                  "end": 2194,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 87,
                                      "column": 20
                                    }
                                  },
                                  "object": {
                                    "type": "CallExpression",
                                    "start": 2093,
                                    "end": 2173,
                                    "loc": {
                                      "start": {
                                        "line": 84,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 86,
                                        "column": 47
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 2093,
                                      "end": 2151,
                                      "loc": {
                                        "start": {
                                          "line": 84,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 86,
                                          "column": 25
                                        }
                                      },
                                      "object": {
                                        "type": "CallExpression",
                                        "start": 2093,
                                        "end": 2125,
                                        "loc": {
                                          "start": {
                                            "line": 84,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 85,
                                            "column": 30
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 2093,
                                          "end": 2122,
                                          "loc": {
                                            "start": {
                                              "line": 84,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 85,
                                              "column": 27
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 2093,
                                            "end": 2094,
                                            "loc": {
                                              "start": {
                                                "line": 84,
                                                "column": 16
                                              },
                                              "end": {
                                                "line": 84,
                                                "column": 17
                                              },
                                              "identifierName": "k"
                                            },
                                            "name": "k"
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 2112,
                                            "end": 2122,
                                            "loc": {
                                              "start": {
                                                "line": 85,
                                                "column": 17
                                              },
                                              "end": {
                                                "line": 85,
                                                "column": 27
                                              },
                                              "identifierName": "modInverse"
                                            },
                                            "name": "modInverse"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "Identifier",
                                            "start": 2123,
                                            "end": 2124,
                                            "loc": {
                                              "start": {
                                                "line": 85,
                                                "column": 28
                                              },
                                              "end": {
                                                "line": 85,
                                                "column": 29
                                              },
                                              "identifierName": "n"
                                            },
                                            "name": "n"
                                          }
                                        ]
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2143,
                                        "end": 2151,
                                        "loc": {
                                          "start": {
                                            "line": 86,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 86,
                                            "column": 25
                                          },
                                          "identifierName": "multiply"
                                        },
                                        "name": "multiply"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "CallExpression",
                                        "start": 2152,
                                        "end": 2172,
                                        "loc": {
                                          "start": {
                                            "line": 86,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 86,
                                            "column": 46
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 2152,
                                          "end": 2157,
                                          "loc": {
                                            "start": {
                                              "line": 86,
                                              "column": 26
                                            },
                                            "end": {
                                              "line": 86,
                                              "column": 31
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 2152,
                                            "end": 2153,
                                            "loc": {
                                              "start": {
                                                "line": 86,
                                                "column": 26
                                              },
                                              "end": {
                                                "line": 86,
                                                "column": 27
                                              },
                                              "identifierName": "e"
                                            },
                                            "name": "e"
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 2154,
                                            "end": 2157,
                                            "loc": {
                                              "start": {
                                                "line": 86,
                                                "column": 28
                                              },
                                              "end": {
                                                "line": 86,
                                                "column": 31
                                              },
                                              "identifierName": "add"
                                            },
                                            "name": "add"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "CallExpression",
                                            "start": 2158,
                                            "end": 2171,
                                            "loc": {
                                              "start": {
                                                "line": 86,
                                                "column": 32
                                              },
                                              "end": {
                                                "line": 86,
                                                "column": 45
                                              }
                                            },
                                            "callee": {
                                              "type": "MemberExpression",
                                              "start": 2158,
                                              "end": 2168,
                                              "loc": {
                                                "start": {
                                                  "line": 86,
                                                  "column": 32
                                                },
                                                "end": {
                                                  "line": 86,
                                                  "column": 42
                                                }
                                              },
                                              "object": {
                                                "type": "Identifier",
                                                "start": 2158,
                                                "end": 2159,
                                                "loc": {
                                                  "start": {
                                                    "line": 86,
                                                    "column": 32
                                                  },
                                                  "end": {
                                                    "line": 86,
                                                    "column": 33
                                                  },
                                                  "identifierName": "d"
                                                },
                                                "name": "d"
                                              },
                                              "property": {
                                                "type": "Identifier",
                                                "start": 2160,
                                                "end": 2168,
                                                "loc": {
                                                  "start": {
                                                    "line": 86,
                                                    "column": 34
                                                  },
                                                  "end": {
                                                    "line": 86,
                                                    "column": 42
                                                  },
                                                  "identifierName": "multiply"
                                                },
                                                "name": "multiply"
                                              },
                                              "computed": false
                                            },
                                            "arguments": [
                                              {
                                                "type": "Identifier",
                                                "start": 2169,
                                                "end": 2170,
                                                "loc": {
                                                  "start": {
                                                    "line": 86,
                                                    "column": 43
                                                  },
                                                  "end": {
                                                    "line": 86,
                                                    "column": 44
                                                  },
                                                  "identifierName": "r"
                                                },
                                                "name": "r"
                                              }
                                            ]
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2191,
                                    "end": 2194,
                                    "loc": {
                                      "start": {
                                        "line": 87,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 87,
                                        "column": 20
                                      },
                                      "identifierName": "mod"
                                    },
                                    "name": "mod"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "Identifier",
                                    "start": 2195,
                                    "end": 2196,
                                    "loc": {
                                      "start": {
                                        "line": 87,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 87,
                                        "column": 22
                                      },
                                      "identifierName": "n"
                                    },
                                    "name": "n"
                                  }
                                ]
                              }
                            }
                          },
                          {
                            "type": "IfStatement",
                            "start": 2211,
                            "end": 2246,
                            "loc": {
                              "start": {
                                "line": 88,
                                "column": 12
                              },
                              "end": {
                                "line": 88,
                                "column": 47
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 2215,
                              "end": 2231,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 16
                                },
                                "end": {
                                  "line": 88,
                                  "column": 32
                                }
                              },
                              "left": {
                                "type": "CallExpression",
                                "start": 2215,
                                "end": 2225,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 26
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 2215,
                                  "end": 2223,
                                  "loc": {
                                    "start": {
                                      "line": 88,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 88,
                                      "column": 24
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 2215,
                                    "end": 2216,
                                    "loc": {
                                      "start": {
                                        "line": 88,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 88,
                                        "column": 17
                                      },
                                      "identifierName": "s"
                                    },
                                    "name": "s"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2217,
                                    "end": 2223,
                                    "loc": {
                                      "start": {
                                        "line": 88,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 88,
                                        "column": 24
                                      },
                                      "identifierName": "signum"
                                    },
                                    "name": "signum"
                                  },
                                  "computed": false
                                },
                                "arguments": []
                              },
                              "operator": "===",
                              "right": {
                                "type": "NumericLiteral",
                                "start": 2230,
                                "end": 2231,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 32
                                  }
                                },
                                "extra": {
                                  "rawValue": 0,
                                  "raw": "0"
                                },
                                "value": 0
                              }
                            },
                            "consequent": {
                              "type": "ReturnStatement",
                              "start": 2233,
                              "end": 2246,
                              "loc": {
                                "start": {
                                  "line": 88,
                                  "column": 34
                                },
                                "end": {
                                  "line": 88,
                                  "column": 47
                                }
                              },
                              "argument": {
                                "type": "BooleanLiteral",
                                "start": 2240,
                                "end": 2245,
                                "loc": {
                                  "start": {
                                    "line": 88,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 88,
                                    "column": 46
                                  }
                                },
                                "value": false
                              }
                            },
                            "alternate": null
                          },
                          {
                            "type": "ReturnStatement",
                            "start": 2260,
                            "end": 2272,
                            "loc": {
                              "start": {
                                "line": 90,
                                "column": 12
                              },
                              "end": {
                                "line": 90,
                                "column": 24
                              }
                            },
                            "argument": {
                              "type": "BooleanLiteral",
                              "start": 2267,
                              "end": 2271,
                              "loc": {
                                "start": {
                                  "line": 90,
                                  "column": 19
                                },
                                "end": {
                                  "line": 90,
                                  "column": 23
                                }
                              },
                              "value": true
                            }
                          }
                        ],
                        "directives": []
                      }
                    },
                    {
                      "type": "Identifier",
                      "start": 2292,
                      "end": 2297,
                      "loc": {
                        "start": {
                          "line": 92,
                          "column": 8
                        },
                        "end": {
                          "line": 92,
                          "column": 13
                        },
                        "identifierName": "nonce"
                      },
                      "name": "nonce"
                    }
                  ]
                }
              },
              {
                "type": "VariableDeclaration",
                "start": 2310,
                "end": 2343,
                "loc": {
                  "start": {
                    "line": 95,
                    "column": 4
                  },
                  "end": {
                    "line": 95,
                    "column": 37
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2314,
                    "end": 2342,
                    "loc": {
                      "start": {
                        "line": 95,
                        "column": 8
                      },
                      "end": {
                        "line": 95,
                        "column": 36
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2314,
                      "end": 2324,
                      "loc": {
                        "start": {
                          "line": 95,
                          "column": 8
                        },
                        "end": {
                          "line": 95,
                          "column": 18
                        },
                        "identifierName": "N_OVER_TWO"
                      },
                      "name": "N_OVER_TWO"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 2327,
                      "end": 2342,
                      "loc": {
                        "start": {
                          "line": 95,
                          "column": 21
                        },
                        "end": {
                          "line": 95,
                          "column": 36
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 2327,
                        "end": 2339,
                        "loc": {
                          "start": {
                            "line": 95,
                            "column": 21
                          },
                          "end": {
                            "line": 95,
                            "column": 33
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 2327,
                          "end": 2328,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 21
                            },
                            "end": {
                              "line": 95,
                              "column": 22
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 2329,
                          "end": 2339,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 23
                            },
                            "end": {
                              "line": 95,
                              "column": 33
                            },
                            "identifierName": "shiftRight"
                          },
                          "name": "shiftRight"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "NumericLiteral",
                          "start": 2340,
                          "end": 2341,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 34
                            },
                            "end": {
                              "line": 95,
                              "column": 35
                            }
                          },
                          "extra": {
                            "rawValue": 1,
                            "raw": "1"
                          },
                          "value": 1
                        }
                      ]
                    }
                  }
                ],
                "kind": "let",
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " enforce low S values, see bip62: 'low s values in signatures'",
                    "start": 2349,
                    "end": 2413,
                    "loc": {
                      "start": {
                        "line": 97,
                        "column": 4
                      },
                      "end": {
                        "line": 97,
                        "column": 68
                      }
                    }
                  }
                ]
              },
              {
                "type": "IfStatement",
                "start": 2418,
                "end": 2485,
                "loc": {
                  "start": {
                    "line": 98,
                    "column": 4
                  },
                  "end": {
                    "line": 100,
                    "column": 5
                  }
                },
                "test": {
                  "type": "BinaryExpression",
                  "start": 2422,
                  "end": 2449,
                  "loc": {
                    "start": {
                      "line": 98,
                      "column": 8
                    },
                    "end": {
                      "line": 98,
                      "column": 35
                    }
                  },
                  "left": {
                    "type": "CallExpression",
                    "start": 2422,
                    "end": 2445,
                    "loc": {
                      "start": {
                        "line": 98,
                        "column": 8
                      },
                      "end": {
                        "line": 98,
                        "column": 31
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 2422,
                      "end": 2433,
                      "loc": {
                        "start": {
                          "line": 98,
                          "column": 8
                        },
                        "end": {
                          "line": 98,
                          "column": 19
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2422,
                        "end": 2423,
                        "loc": {
                          "start": {
                            "line": 98,
                            "column": 8
                          },
                          "end": {
                            "line": 98,
                            "column": 9
                          },
                          "identifierName": "s"
                        },
                        "name": "s",
                        "leadingComments": null
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2424,
                        "end": 2433,
                        "loc": {
                          "start": {
                            "line": 98,
                            "column": 10
                          },
                          "end": {
                            "line": 98,
                            "column": 19
                          },
                          "identifierName": "compareTo"
                        },
                        "name": "compareTo"
                      },
                      "computed": false,
                      "leadingComments": null
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 2434,
                        "end": 2444,
                        "loc": {
                          "start": {
                            "line": 98,
                            "column": 20
                          },
                          "end": {
                            "line": 98,
                            "column": 30
                          },
                          "identifierName": "N_OVER_TWO"
                        },
                        "name": "N_OVER_TWO"
                      }
                    ],
                    "leadingComments": null
                  },
                  "operator": ">",
                  "right": {
                    "type": "NumericLiteral",
                    "start": 2448,
                    "end": 2449,
                    "loc": {
                      "start": {
                        "line": 98,
                        "column": 34
                      },
                      "end": {
                        "line": 98,
                        "column": 35
                      }
                    },
                    "extra": {
                      "rawValue": 0,
                      "raw": "0"
                    },
                    "value": 0
                  },
                  "leadingComments": null
                },
                "consequent": {
                  "type": "BlockStatement",
                  "start": 2451,
                  "end": 2485,
                  "loc": {
                    "start": {
                      "line": 98,
                      "column": 37
                    },
                    "end": {
                      "line": 100,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 2461,
                      "end": 2479,
                      "loc": {
                        "start": {
                          "line": 99,
                          "column": 8
                        },
                        "end": {
                          "line": 99,
                          "column": 26
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2461,
                        "end": 2478,
                        "loc": {
                          "start": {
                            "line": 99,
                            "column": 8
                          },
                          "end": {
                            "line": 99,
                            "column": 25
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "Identifier",
                          "start": 2461,
                          "end": 2462,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 8
                            },
                            "end": {
                              "line": 99,
                              "column": 9
                            },
                            "identifierName": "s"
                          },
                          "name": "s"
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 2465,
                          "end": 2478,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 12
                            },
                            "end": {
                              "line": 99,
                              "column": 25
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 2465,
                            "end": 2475,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 12
                              },
                              "end": {
                                "line": 99,
                                "column": 22
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 2465,
                              "end": 2466,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 12
                                },
                                "end": {
                                  "line": 99,
                                  "column": 13
                                },
                                "identifierName": "n"
                              },
                              "name": "n"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2467,
                              "end": 2475,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 14
                                },
                                "end": {
                                  "line": 99,
                                  "column": 22
                                },
                                "identifierName": "subtract"
                              },
                              "name": "subtract"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 2476,
                              "end": 2477,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 23
                                },
                                "end": {
                                  "line": 99,
                                  "column": 24
                                },
                                "identifierName": "s"
                              },
                              "name": "s"
                            }
                          ]
                        }
                      }
                    }
                  ],
                  "directives": []
                },
                "alternate": null,
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " enforce low S values, see bip62: 'low s values in signatures'",
                    "start": 2349,
                    "end": 2413,
                    "loc": {
                      "start": {
                        "line": 97,
                        "column": 4
                      },
                      "end": {
                        "line": 97,
                        "column": 68
                      }
                    }
                  }
                ]
              },
              {
                "type": "ReturnStatement",
                "start": 2491,
                "end": 2520,
                "loc": {
                  "start": {
                    "line": 102,
                    "column": 4
                  },
                  "end": {
                    "line": 102,
                    "column": 33
                  }
                },
                "argument": {
                  "type": "NewExpression",
                  "start": 2498,
                  "end": 2519,
                  "loc": {
                    "start": {
                      "line": 102,
                      "column": 11
                    },
                    "end": {
                      "line": 102,
                      "column": 32
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 2502,
                    "end": 2513,
                    "loc": {
                      "start": {
                        "line": 102,
                        "column": 15
                      },
                      "end": {
                        "line": 102,
                        "column": 26
                      },
                      "identifierName": "ECSignature"
                    },
                    "name": "ECSignature"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 2514,
                      "end": 2515,
                      "loc": {
                        "start": {
                          "line": 102,
                          "column": 27
                        },
                        "end": {
                          "line": 102,
                          "column": 28
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    },
                    {
                      "type": "Identifier",
                      "start": 2517,
                      "end": 2518,
                      "loc": {
                        "start": {
                          "line": 102,
                          "column": 30
                        },
                        "end": {
                          "line": 102,
                          "column": 31
                        },
                        "identifierName": "s"
                      },
                      "name": "s"
                    }
                  ]
                }
              }
            ],
            "directives": []
          },
          "leadingComments": [],
          "trailingComments": []
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 3474,
          "end": 3677,
          "loc": {
            "start": {
              "line": 140,
              "column": 0
            },
            "end": {
              "line": 145,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 3483,
            "end": 3489,
            "loc": {
              "start": {
                "line": 140,
                "column": 9
              },
              "end": {
                "line": 140,
                "column": 15
              },
              "identifierName": "verify"
            },
            "name": "verify"
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 3490,
              "end": 3495,
              "loc": {
                "start": {
                  "line": 140,
                  "column": 16
                },
                "end": {
                  "line": 140,
                  "column": 21
                },
                "identifierName": "curve"
              },
              "name": "curve"
            },
            {
              "type": "Identifier",
              "start": 3497,
              "end": 3501,
              "loc": {
                "start": {
                  "line": 140,
                  "column": 23
                },
                "end": {
                  "line": 140,
                  "column": 27
                },
                "identifierName": "hash"
              },
              "name": "hash"
            },
            {
              "type": "Identifier",
              "start": 3503,
              "end": 3512,
              "loc": {
                "start": {
                  "line": 140,
                  "column": 29
                },
                "end": {
                  "line": 140,
                  "column": 38
                },
                "identifierName": "signature"
              },
              "name": "signature"
            },
            {
              "type": "Identifier",
              "start": 3514,
              "end": 3515,
              "loc": {
                "start": {
                  "line": 140,
                  "column": 40
                },
                "end": {
                  "line": 140,
                  "column": 41
                },
                "identifierName": "Q"
              },
              "name": "Q"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 3517,
            "end": 3677,
            "loc": {
              "start": {
                "line": 140,
                "column": 43
              },
              "end": {
                "line": 145,
                "column": 1
              }
            },
            "body": [
              {
                "type": "VariableDeclaration",
                "start": 3593,
                "end": 3629,
                "loc": {
                  "start": {
                    "line": 143,
                    "column": 4
                  },
                  "end": {
                    "line": 143,
                    "column": 40
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 3597,
                    "end": 3628,
                    "loc": {
                      "start": {
                        "line": 143,
                        "column": 8
                      },
                      "end": {
                        "line": 143,
                        "column": 39
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 3597,
                      "end": 3598,
                      "loc": {
                        "start": {
                          "line": 143,
                          "column": 8
                        },
                        "end": {
                          "line": 143,
                          "column": 9
                        },
                        "identifierName": "e"
                      },
                      "name": "e",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 3601,
                      "end": 3628,
                      "loc": {
                        "start": {
                          "line": 143,
                          "column": 12
                        },
                        "end": {
                          "line": 143,
                          "column": 39
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 3601,
                        "end": 3622,
                        "loc": {
                          "start": {
                            "line": 143,
                            "column": 12
                          },
                          "end": {
                            "line": 143,
                            "column": 33
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3601,
                          "end": 3611,
                          "loc": {
                            "start": {
                              "line": 143,
                              "column": 12
                            },
                            "end": {
                              "line": 143,
                              "column": 22
                            },
                            "identifierName": "BigInteger"
                          },
                          "name": "BigInteger"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3612,
                          "end": 3622,
                          "loc": {
                            "start": {
                              "line": 143,
                              "column": 23
                            },
                            "end": {
                              "line": 143,
                              "column": 33
                            },
                            "identifierName": "fromBuffer"
                          },
                          "name": "fromBuffer"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 3623,
                          "end": 3627,
                          "loc": {
                            "start": {
                              "line": 143,
                              "column": 34
                            },
                            "end": {
                              "line": 143,
                              "column": 38
                            },
                            "identifierName": "hash"
                          },
                          "name": "hash"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.2 H = Hash(M), already done by the user",
                    "start": 3523,
                    "end": 3569,
                    "loc": {
                      "start": {
                        "line": 141,
                        "column": 4
                      },
                      "end": {
                        "line": 141,
                        "column": 50
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": " 1.4.3 e = H",
                    "start": 3574,
                    "end": 3588,
                    "loc": {
                      "start": {
                        "line": 142,
                        "column": 4
                      },
                      "end": {
                        "line": 142,
                        "column": 18
                      }
                    }
                  }
                ]
              },
              {
                "type": "ReturnStatement",
                "start": 3634,
                "end": 3675,
                "loc": {
                  "start": {
                    "line": 144,
                    "column": 4
                  },
                  "end": {
                    "line": 144,
                    "column": 45
                  }
                },
                "argument": {
                  "type": "CallExpression",
                  "start": 3641,
                  "end": 3674,
                  "loc": {
                    "start": {
                      "line": 144,
                      "column": 11
                    },
                    "end": {
                      "line": 144,
                      "column": 44
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 3641,
                    "end": 3650,
                    "loc": {
                      "start": {
                        "line": 144,
                        "column": 11
                      },
                      "end": {
                        "line": 144,
                        "column": 20
                      },
                      "identifierName": "verifyRaw"
                    },
                    "name": "verifyRaw"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 3651,
                      "end": 3656,
                      "loc": {
                        "start": {
                          "line": 144,
                          "column": 21
                        },
                        "end": {
                          "line": 144,
                          "column": 26
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve"
                    },
                    {
                      "type": "Identifier",
                      "start": 3658,
                      "end": 3659,
                      "loc": {
                        "start": {
                          "line": 144,
                          "column": 28
                        },
                        "end": {
                          "line": 144,
                          "column": 29
                        },
                        "identifierName": "e"
                      },
                      "name": "e"
                    },
                    {
                      "type": "Identifier",
                      "start": 3661,
                      "end": 3670,
                      "loc": {
                        "start": {
                          "line": 144,
                          "column": 31
                        },
                        "end": {
                          "line": 144,
                          "column": 40
                        },
                        "identifierName": "signature"
                      },
                      "name": "signature"
                    },
                    {
                      "type": "Identifier",
                      "start": 3672,
                      "end": 3673,
                      "loc": {
                        "start": {
                          "line": 144,
                          "column": 42
                        },
                        "end": {
                          "line": 144,
                          "column": 43
                        },
                        "identifierName": "Q"
                      },
                      "name": "Q"
                    }
                  ]
                }
              }
            ],
            "directives": [],
            "trailingComments": null
          },
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n ",
              "start": 3679,
              "end": 3880,
              "loc": {
                "start": {
                  "line": 147,
                  "column": 0
                },
                "end": {
                  "line": 154,
                  "column": 3
                }
              }
            }
          ],
          "leadingComments": []
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 5658,
        "end": 5781,
        "loc": {
          "start": {
            "line": 219,
            "column": 0
          },
          "end": {
            "line": 226,
            "column": 2
          }
        },
        "declaration": {
          "type": "FunctionDeclaration",
          "start": 2524,
          "end": 3472,
          "loc": {
            "start": {
              "line": 105,
              "column": 0
            },
            "end": {
              "line": 138,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 2533,
            "end": 2542,
            "loc": {
              "start": {
                "line": 105,
                "column": 9
              },
              "end": {
                "line": 105,
                "column": 18
              },
              "identifierName": "verifyRaw"
            },
            "name": "verifyRaw"
          },
          "generator": false,
          "expression": false,
          "async": false,
          "params": [
            {
              "type": "Identifier",
              "start": 2543,
              "end": 2548,
              "loc": {
                "start": {
                  "line": 105,
                  "column": 19
                },
                "end": {
                  "line": 105,
                  "column": 24
                },
                "identifierName": "curve"
              },
              "name": "curve"
            },
            {
              "type": "Identifier",
              "start": 2550,
              "end": 2551,
              "loc": {
                "start": {
                  "line": 105,
                  "column": 26
                },
                "end": {
                  "line": 105,
                  "column": 27
                },
                "identifierName": "e"
              },
              "name": "e"
            },
            {
              "type": "Identifier",
              "start": 2553,
              "end": 2562,
              "loc": {
                "start": {
                  "line": 105,
                  "column": 29
                },
                "end": {
                  "line": 105,
                  "column": 38
                },
                "identifierName": "signature"
              },
              "name": "signature"
            },
            {
              "type": "Identifier",
              "start": 2564,
              "end": 2565,
              "loc": {
                "start": {
                  "line": 105,
                  "column": 40
                },
                "end": {
                  "line": 105,
                  "column": 41
                },
                "identifierName": "Q"
              },
              "name": "Q"
            }
          ],
          "body": {
            "type": "BlockStatement",
            "start": 2567,
            "end": 3472,
            "loc": {
              "start": {
                "line": 105,
                "column": 43
              },
              "end": {
                "line": 138,
                "column": 1
              }
            },
            "body": [
              {
                "type": "VariableDeclaration",
                "start": 2573,
                "end": 2589,
                "loc": {
                  "start": {
                    "line": 106,
                    "column": 4
                  },
                  "end": {
                    "line": 106,
                    "column": 20
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2577,
                    "end": 2588,
                    "loc": {
                      "start": {
                        "line": 106,
                        "column": 8
                      },
                      "end": {
                        "line": 106,
                        "column": 19
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2577,
                      "end": 2578,
                      "loc": {
                        "start": {
                          "line": 106,
                          "column": 8
                        },
                        "end": {
                          "line": 106,
                          "column": 9
                        },
                        "identifierName": "n"
                      },
                      "name": "n"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 2581,
                      "end": 2588,
                      "loc": {
                        "start": {
                          "line": 106,
                          "column": 12
                        },
                        "end": {
                          "line": 106,
                          "column": 19
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2581,
                        "end": 2586,
                        "loc": {
                          "start": {
                            "line": 106,
                            "column": 12
                          },
                          "end": {
                            "line": 106,
                            "column": 17
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2587,
                        "end": 2588,
                        "loc": {
                          "start": {
                            "line": 106,
                            "column": 18
                          },
                          "end": {
                            "line": 106,
                            "column": 19
                          },
                          "identifierName": "n"
                        },
                        "name": "n"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 2594,
                "end": 2610,
                "loc": {
                  "start": {
                    "line": 107,
                    "column": 4
                  },
                  "end": {
                    "line": 107,
                    "column": 20
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2598,
                    "end": 2609,
                    "loc": {
                      "start": {
                        "line": 107,
                        "column": 8
                      },
                      "end": {
                        "line": 107,
                        "column": 19
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2598,
                      "end": 2599,
                      "loc": {
                        "start": {
                          "line": 107,
                          "column": 8
                        },
                        "end": {
                          "line": 107,
                          "column": 9
                        },
                        "identifierName": "G"
                      },
                      "name": "G"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 2602,
                      "end": 2609,
                      "loc": {
                        "start": {
                          "line": 107,
                          "column": 12
                        },
                        "end": {
                          "line": 107,
                          "column": 19
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2602,
                        "end": 2607,
                        "loc": {
                          "start": {
                            "line": 107,
                            "column": 12
                          },
                          "end": {
                            "line": 107,
                            "column": 17
                          },
                          "identifierName": "curve"
                        },
                        "name": "curve"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2608,
                        "end": 2609,
                        "loc": {
                          "start": {
                            "line": 107,
                            "column": 18
                          },
                          "end": {
                            "line": 107,
                            "column": 19
                          },
                          "identifierName": "G"
                        },
                        "name": "G"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 2616,
                "end": 2636,
                "loc": {
                  "start": {
                    "line": 109,
                    "column": 4
                  },
                  "end": {
                    "line": 109,
                    "column": 24
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2620,
                    "end": 2635,
                    "loc": {
                      "start": {
                        "line": 109,
                        "column": 8
                      },
                      "end": {
                        "line": 109,
                        "column": 23
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2620,
                      "end": 2621,
                      "loc": {
                        "start": {
                          "line": 109,
                          "column": 8
                        },
                        "end": {
                          "line": 109,
                          "column": 9
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 2624,
                      "end": 2635,
                      "loc": {
                        "start": {
                          "line": 109,
                          "column": 12
                        },
                        "end": {
                          "line": 109,
                          "column": 23
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2624,
                        "end": 2633,
                        "loc": {
                          "start": {
                            "line": 109,
                            "column": 12
                          },
                          "end": {
                            "line": 109,
                            "column": 21
                          },
                          "identifierName": "signature"
                        },
                        "name": "signature"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2634,
                        "end": 2635,
                        "loc": {
                          "start": {
                            "line": 109,
                            "column": 22
                          },
                          "end": {
                            "line": 109,
                            "column": 23
                          },
                          "identifierName": "r"
                        },
                        "name": "r"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var"
              },
              {
                "type": "VariableDeclaration",
                "start": 2641,
                "end": 2661,
                "loc": {
                  "start": {
                    "line": 110,
                    "column": 4
                  },
                  "end": {
                    "line": 110,
                    "column": 24
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2645,
                    "end": 2660,
                    "loc": {
                      "start": {
                        "line": 110,
                        "column": 8
                      },
                      "end": {
                        "line": 110,
                        "column": 23
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2645,
                      "end": 2646,
                      "loc": {
                        "start": {
                          "line": 110,
                          "column": 8
                        },
                        "end": {
                          "line": 110,
                          "column": 9
                        },
                        "identifierName": "s"
                      },
                      "name": "s"
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 2649,
                      "end": 2660,
                      "loc": {
                        "start": {
                          "line": 110,
                          "column": 12
                        },
                        "end": {
                          "line": 110,
                          "column": 23
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2649,
                        "end": 2658,
                        "loc": {
                          "start": {
                            "line": 110,
                            "column": 12
                          },
                          "end": {
                            "line": 110,
                            "column": 21
                          },
                          "identifierName": "signature"
                        },
                        "name": "signature"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2659,
                        "end": 2660,
                        "loc": {
                          "start": {
                            "line": 110,
                            "column": 22
                          },
                          "end": {
                            "line": 110,
                            "column": 23
                          },
                          "identifierName": "s"
                        },
                        "name": "s"
                      },
                      "computed": false
                    }
                  }
                ],
                "kind": "var",
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]",
                    "start": 2667,
                    "end": 2736,
                    "loc": {
                      "start": {
                        "line": 112,
                        "column": 4
                      },
                      "end": {
                        "line": 112,
                        "column": 73
                      }
                    }
                  }
                ]
              },
              {
                "type": "IfStatement",
                "start": 2741,
                "end": 2798,
                "loc": {
                  "start": {
                    "line": 113,
                    "column": 4
                  },
                  "end": {
                    "line": 113,
                    "column": 61
                  }
                },
                "test": {
                  "type": "LogicalExpression",
                  "start": 2745,
                  "end": 2783,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 8
                    },
                    "end": {
                      "line": 113,
                      "column": 46
                    }
                  },
                  "left": {
                    "type": "BinaryExpression",
                    "start": 2745,
                    "end": 2760,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 8
                      },
                      "end": {
                        "line": 113,
                        "column": 23
                      }
                    },
                    "left": {
                      "type": "CallExpression",
                      "start": 2745,
                      "end": 2755,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 8
                        },
                        "end": {
                          "line": 113,
                          "column": 18
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 2745,
                        "end": 2753,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 8
                          },
                          "end": {
                            "line": 113,
                            "column": 16
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 2745,
                          "end": 2746,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 8
                            },
                            "end": {
                              "line": 113,
                              "column": 9
                            },
                            "identifierName": "r"
                          },
                          "name": "r",
                          "leadingComments": null
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 2747,
                          "end": 2753,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 10
                            },
                            "end": {
                              "line": 113,
                              "column": 16
                            },
                            "identifierName": "signum"
                          },
                          "name": "signum"
                        },
                        "computed": false,
                        "leadingComments": null
                      },
                      "arguments": [],
                      "leadingComments": null
                    },
                    "operator": "<=",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 2759,
                      "end": 2760,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 22
                        },
                        "end": {
                          "line": 113,
                          "column": 23
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    },
                    "leadingComments": null
                  },
                  "operator": "||",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 2764,
                    "end": 2783,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 27
                      },
                      "end": {
                        "line": 113,
                        "column": 46
                      }
                    },
                    "left": {
                      "type": "CallExpression",
                      "start": 2764,
                      "end": 2778,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 27
                        },
                        "end": {
                          "line": 113,
                          "column": 41
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 2764,
                        "end": 2775,
                        "loc": {
                          "start": {
                            "line": 113,
                            "column": 27
                          },
                          "end": {
                            "line": 113,
                            "column": 38
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 2764,
                          "end": 2765,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 27
                            },
                            "end": {
                              "line": 113,
                              "column": 28
                            },
                            "identifierName": "r"
                          },
                          "name": "r"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 2766,
                          "end": 2775,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 29
                            },
                            "end": {
                              "line": 113,
                              "column": 38
                            },
                            "identifierName": "compareTo"
                          },
                          "name": "compareTo"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 2776,
                          "end": 2777,
                          "loc": {
                            "start": {
                              "line": 113,
                              "column": 39
                            },
                            "end": {
                              "line": 113,
                              "column": 40
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "operator": ">=",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 2782,
                      "end": 2783,
                      "loc": {
                        "start": {
                          "line": 113,
                          "column": 45
                        },
                        "end": {
                          "line": 113,
                          "column": 46
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    }
                  },
                  "leadingComments": null
                },
                "consequent": {
                  "type": "ReturnStatement",
                  "start": 2785,
                  "end": 2798,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 48
                    },
                    "end": {
                      "line": 113,
                      "column": 61
                    }
                  },
                  "argument": {
                    "type": "BooleanLiteral",
                    "start": 2792,
                    "end": 2797,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 55
                      },
                      "end": {
                        "line": 113,
                        "column": 60
                      }
                    },
                    "value": false
                  }
                },
                "alternate": null,
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]",
                    "start": 2667,
                    "end": 2736,
                    "loc": {
                      "start": {
                        "line": 112,
                        "column": 4
                      },
                      "end": {
                        "line": 112,
                        "column": 73
                      }
                    }
                  }
                ]
              },
              {
                "type": "IfStatement",
                "start": 2803,
                "end": 2860,
                "loc": {
                  "start": {
                    "line": 114,
                    "column": 4
                  },
                  "end": {
                    "line": 114,
                    "column": 61
                  }
                },
                "test": {
                  "type": "LogicalExpression",
                  "start": 2807,
                  "end": 2845,
                  "loc": {
                    "start": {
                      "line": 114,
                      "column": 8
                    },
                    "end": {
                      "line": 114,
                      "column": 46
                    }
                  },
                  "left": {
                    "type": "BinaryExpression",
                    "start": 2807,
                    "end": 2822,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 8
                      },
                      "end": {
                        "line": 114,
                        "column": 23
                      }
                    },
                    "left": {
                      "type": "CallExpression",
                      "start": 2807,
                      "end": 2817,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 8
                        },
                        "end": {
                          "line": 114,
                          "column": 18
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 2807,
                        "end": 2815,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 8
                          },
                          "end": {
                            "line": 114,
                            "column": 16
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 2807,
                          "end": 2808,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 8
                            },
                            "end": {
                              "line": 114,
                              "column": 9
                            },
                            "identifierName": "s"
                          },
                          "name": "s"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 2809,
                          "end": 2815,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 10
                            },
                            "end": {
                              "line": 114,
                              "column": 16
                            },
                            "identifierName": "signum"
                          },
                          "name": "signum"
                        },
                        "computed": false
                      },
                      "arguments": []
                    },
                    "operator": "<=",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 2821,
                      "end": 2822,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 22
                        },
                        "end": {
                          "line": 114,
                          "column": 23
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    }
                  },
                  "operator": "||",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 2826,
                    "end": 2845,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 27
                      },
                      "end": {
                        "line": 114,
                        "column": 46
                      }
                    },
                    "left": {
                      "type": "CallExpression",
                      "start": 2826,
                      "end": 2840,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 27
                        },
                        "end": {
                          "line": 114,
                          "column": 41
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 2826,
                        "end": 2837,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 27
                          },
                          "end": {
                            "line": 114,
                            "column": 38
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 2826,
                          "end": 2827,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 27
                            },
                            "end": {
                              "line": 114,
                              "column": 28
                            },
                            "identifierName": "s"
                          },
                          "name": "s"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 2828,
                          "end": 2837,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 29
                            },
                            "end": {
                              "line": 114,
                              "column": 38
                            },
                            "identifierName": "compareTo"
                          },
                          "name": "compareTo"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 2838,
                          "end": 2839,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 39
                            },
                            "end": {
                              "line": 114,
                              "column": 40
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "operator": ">=",
                    "right": {
                      "type": "NumericLiteral",
                      "start": 2844,
                      "end": 2845,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 45
                        },
                        "end": {
                          "line": 114,
                          "column": 46
                        }
                      },
                      "extra": {
                        "rawValue": 0,
                        "raw": "0"
                      },
                      "value": 0
                    }
                  }
                },
                "consequent": {
                  "type": "ReturnStatement",
                  "start": 2847,
                  "end": 2860,
                  "loc": {
                    "start": {
                      "line": 114,
                      "column": 48
                    },
                    "end": {
                      "line": 114,
                      "column": 61
                    }
                  },
                  "argument": {
                    "type": "BooleanLiteral",
                    "start": 2854,
                    "end": 2859,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 55
                      },
                      "end": {
                        "line": 114,
                        "column": 60
                      }
                    },
                    "value": false
                  },
                  "trailingComments": null
                },
                "alternate": null,
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " c = s^-1 mod n",
                    "start": 2866,
                    "end": 2883,
                    "loc": {
                      "start": {
                        "line": 116,
                        "column": 4
                      },
                      "end": {
                        "line": 116,
                        "column": 21
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 2888,
                "end": 2912,
                "loc": {
                  "start": {
                    "line": 117,
                    "column": 4
                  },
                  "end": {
                    "line": 117,
                    "column": 28
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2892,
                    "end": 2911,
                    "loc": {
                      "start": {
                        "line": 117,
                        "column": 8
                      },
                      "end": {
                        "line": 117,
                        "column": 27
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2892,
                      "end": 2893,
                      "loc": {
                        "start": {
                          "line": 117,
                          "column": 8
                        },
                        "end": {
                          "line": 117,
                          "column": 9
                        },
                        "identifierName": "c"
                      },
                      "name": "c",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 2896,
                      "end": 2911,
                      "loc": {
                        "start": {
                          "line": 117,
                          "column": 12
                        },
                        "end": {
                          "line": 117,
                          "column": 27
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 2896,
                        "end": 2908,
                        "loc": {
                          "start": {
                            "line": 117,
                            "column": 12
                          },
                          "end": {
                            "line": 117,
                            "column": 24
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 2896,
                          "end": 2897,
                          "loc": {
                            "start": {
                              "line": 117,
                              "column": 12
                            },
                            "end": {
                              "line": 117,
                              "column": 13
                            },
                            "identifierName": "s"
                          },
                          "name": "s"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 2898,
                          "end": 2908,
                          "loc": {
                            "start": {
                              "line": 117,
                              "column": 14
                            },
                            "end": {
                              "line": 117,
                              "column": 24
                            },
                            "identifierName": "modInverse"
                          },
                          "name": "modInverse"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 2909,
                          "end": 2910,
                          "loc": {
                            "start": {
                              "line": 117,
                              "column": 25
                            },
                            "end": {
                              "line": 117,
                              "column": 26
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " c = s^-1 mod n",
                    "start": 2866,
                    "end": 2883,
                    "loc": {
                      "start": {
                        "line": 116,
                        "column": 4
                      },
                      "end": {
                        "line": 116,
                        "column": 21
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.4 Compute u1 = es^−1 mod n",
                    "start": 2918,
                    "end": 2951,
                    "loc": {
                      "start": {
                        "line": 119,
                        "column": 4
                      },
                      "end": {
                        "line": 119,
                        "column": 37
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": "               u2 = rs^−1 mod n",
                    "start": 2956,
                    "end": 2989,
                    "loc": {
                      "start": {
                        "line": 120,
                        "column": 4
                      },
                      "end": {
                        "line": 120,
                        "column": 37
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 2994,
                "end": 3024,
                "loc": {
                  "start": {
                    "line": 121,
                    "column": 4
                  },
                  "end": {
                    "line": 121,
                    "column": 34
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 2998,
                    "end": 3023,
                    "loc": {
                      "start": {
                        "line": 121,
                        "column": 8
                      },
                      "end": {
                        "line": 121,
                        "column": 33
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 2998,
                      "end": 3000,
                      "loc": {
                        "start": {
                          "line": 121,
                          "column": 8
                        },
                        "end": {
                          "line": 121,
                          "column": 10
                        },
                        "identifierName": "u1"
                      },
                      "name": "u1",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 3003,
                      "end": 3023,
                      "loc": {
                        "start": {
                          "line": 121,
                          "column": 13
                        },
                        "end": {
                          "line": 121,
                          "column": 33
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 3003,
                        "end": 3020,
                        "loc": {
                          "start": {
                            "line": 121,
                            "column": 13
                          },
                          "end": {
                            "line": 121,
                            "column": 30
                          }
                        },
                        "object": {
                          "type": "CallExpression",
                          "start": 3003,
                          "end": 3016,
                          "loc": {
                            "start": {
                              "line": 121,
                              "column": 13
                            },
                            "end": {
                              "line": 121,
                              "column": 26
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 3003,
                            "end": 3013,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 13
                              },
                              "end": {
                                "line": 121,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 3003,
                              "end": 3004,
                              "loc": {
                                "start": {
                                  "line": 121,
                                  "column": 13
                                },
                                "end": {
                                  "line": 121,
                                  "column": 14
                                },
                                "identifierName": "e"
                              },
                              "name": "e"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3005,
                              "end": 3013,
                              "loc": {
                                "start": {
                                  "line": 121,
                                  "column": 15
                                },
                                "end": {
                                  "line": 121,
                                  "column": 23
                                },
                                "identifierName": "multiply"
                              },
                              "name": "multiply"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 3014,
                              "end": 3015,
                              "loc": {
                                "start": {
                                  "line": 121,
                                  "column": 24
                                },
                                "end": {
                                  "line": 121,
                                  "column": 25
                                },
                                "identifierName": "c"
                              },
                              "name": "c"
                            }
                          ]
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3017,
                          "end": 3020,
                          "loc": {
                            "start": {
                              "line": 121,
                              "column": 27
                            },
                            "end": {
                              "line": 121,
                              "column": 30
                            },
                            "identifierName": "mod"
                          },
                          "name": "mod"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 3021,
                          "end": 3022,
                          "loc": {
                            "start": {
                              "line": 121,
                              "column": 31
                            },
                            "end": {
                              "line": 121,
                              "column": 32
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.4 Compute u1 = es^−1 mod n",
                    "start": 2918,
                    "end": 2951,
                    "loc": {
                      "start": {
                        "line": 119,
                        "column": 4
                      },
                      "end": {
                        "line": 119,
                        "column": 37
                      }
                    }
                  },
                  {
                    "type": "CommentLine",
                    "value": "               u2 = rs^−1 mod n",
                    "start": 2956,
                    "end": 2989,
                    "loc": {
                      "start": {
                        "line": 120,
                        "column": 4
                      },
                      "end": {
                        "line": 120,
                        "column": 37
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 3029,
                "end": 3059,
                "loc": {
                  "start": {
                    "line": 122,
                    "column": 4
                  },
                  "end": {
                    "line": 122,
                    "column": 34
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 3033,
                    "end": 3058,
                    "loc": {
                      "start": {
                        "line": 122,
                        "column": 8
                      },
                      "end": {
                        "line": 122,
                        "column": 33
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 3033,
                      "end": 3035,
                      "loc": {
                        "start": {
                          "line": 122,
                          "column": 8
                        },
                        "end": {
                          "line": 122,
                          "column": 10
                        },
                        "identifierName": "u2"
                      },
                      "name": "u2"
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 3038,
                      "end": 3058,
                      "loc": {
                        "start": {
                          "line": 122,
                          "column": 13
                        },
                        "end": {
                          "line": 122,
                          "column": 33
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 3038,
                        "end": 3055,
                        "loc": {
                          "start": {
                            "line": 122,
                            "column": 13
                          },
                          "end": {
                            "line": 122,
                            "column": 30
                          }
                        },
                        "object": {
                          "type": "CallExpression",
                          "start": 3038,
                          "end": 3051,
                          "loc": {
                            "start": {
                              "line": 122,
                              "column": 13
                            },
                            "end": {
                              "line": 122,
                              "column": 26
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 3038,
                            "end": 3048,
                            "loc": {
                              "start": {
                                "line": 122,
                                "column": 13
                              },
                              "end": {
                                "line": 122,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 3038,
                              "end": 3039,
                              "loc": {
                                "start": {
                                  "line": 122,
                                  "column": 13
                                },
                                "end": {
                                  "line": 122,
                                  "column": 14
                                },
                                "identifierName": "r"
                              },
                              "name": "r"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3040,
                              "end": 3048,
                              "loc": {
                                "start": {
                                  "line": 122,
                                  "column": 15
                                },
                                "end": {
                                  "line": 122,
                                  "column": 23
                                },
                                "identifierName": "multiply"
                              },
                              "name": "multiply"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 3049,
                              "end": 3050,
                              "loc": {
                                "start": {
                                  "line": 122,
                                  "column": 24
                                },
                                "end": {
                                  "line": 122,
                                  "column": 25
                                },
                                "identifierName": "c"
                              },
                              "name": "c"
                            }
                          ]
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3052,
                          "end": 3055,
                          "loc": {
                            "start": {
                              "line": 122,
                              "column": 27
                            },
                            "end": {
                              "line": 122,
                              "column": 30
                            },
                            "identifierName": "mod"
                          },
                          "name": "mod"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 3056,
                          "end": 3057,
                          "loc": {
                            "start": {
                              "line": 122,
                              "column": 31
                            },
                            "end": {
                              "line": 122,
                              "column": 32
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    }
                  }
                ],
                "kind": "var",
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.5 Compute R = (xR, yR) = u1G + u2Q",
                    "start": 3065,
                    "end": 3106,
                    "loc": {
                      "start": {
                        "line": 124,
                        "column": 4
                      },
                      "end": {
                        "line": 124,
                        "column": 45
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 3111,
                "end": 3144,
                "loc": {
                  "start": {
                    "line": 125,
                    "column": 4
                  },
                  "end": {
                    "line": 125,
                    "column": 37
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 3115,
                    "end": 3143,
                    "loc": {
                      "start": {
                        "line": 125,
                        "column": 8
                      },
                      "end": {
                        "line": 125,
                        "column": 36
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 3115,
                      "end": 3116,
                      "loc": {
                        "start": {
                          "line": 125,
                          "column": 8
                        },
                        "end": {
                          "line": 125,
                          "column": 9
                        },
                        "identifierName": "R"
                      },
                      "name": "R",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 3119,
                      "end": 3143,
                      "loc": {
                        "start": {
                          "line": 125,
                          "column": 12
                        },
                        "end": {
                          "line": 125,
                          "column": 36
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 3119,
                        "end": 3132,
                        "loc": {
                          "start": {
                            "line": 125,
                            "column": 12
                          },
                          "end": {
                            "line": 125,
                            "column": 25
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3119,
                          "end": 3120,
                          "loc": {
                            "start": {
                              "line": 125,
                              "column": 12
                            },
                            "end": {
                              "line": 125,
                              "column": 13
                            },
                            "identifierName": "G"
                          },
                          "name": "G"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3121,
                          "end": 3132,
                          "loc": {
                            "start": {
                              "line": 125,
                              "column": 14
                            },
                            "end": {
                              "line": 125,
                              "column": 25
                            },
                            "identifierName": "multiplyTwo"
                          },
                          "name": "multiplyTwo"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 3133,
                          "end": 3135,
                          "loc": {
                            "start": {
                              "line": 125,
                              "column": 26
                            },
                            "end": {
                              "line": 125,
                              "column": 28
                            },
                            "identifierName": "u1"
                          },
                          "name": "u1"
                        },
                        {
                          "type": "Identifier",
                          "start": 3137,
                          "end": 3138,
                          "loc": {
                            "start": {
                              "line": 125,
                              "column": 30
                            },
                            "end": {
                              "line": 125,
                              "column": 31
                            },
                            "identifierName": "Q"
                          },
                          "name": "Q"
                        },
                        {
                          "type": "Identifier",
                          "start": 3140,
                          "end": 3142,
                          "loc": {
                            "start": {
                              "line": 125,
                              "column": 33
                            },
                            "end": {
                              "line": 125,
                              "column": 35
                            },
                            "identifierName": "u2"
                          },
                          "name": "u2"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.5 Compute R = (xR, yR) = u1G + u2Q",
                    "start": 3065,
                    "end": 3106,
                    "loc": {
                      "start": {
                        "line": 124,
                        "column": 4
                      },
                      "end": {
                        "line": 124,
                        "column": 45
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.5 (cont.) Enforce R is not at infinity",
                    "start": 3150,
                    "end": 3195,
                    "loc": {
                      "start": {
                        "line": 127,
                        "column": 4
                      },
                      "end": {
                        "line": 127,
                        "column": 49
                      }
                    }
                  }
                ]
              },
              {
                "type": "IfStatement",
                "start": 3200,
                "end": 3238,
                "loc": {
                  "start": {
                    "line": 128,
                    "column": 4
                  },
                  "end": {
                    "line": 128,
                    "column": 42
                  }
                },
                "test": {
                  "type": "CallExpression",
                  "start": 3204,
                  "end": 3223,
                  "loc": {
                    "start": {
                      "line": 128,
                      "column": 8
                    },
                    "end": {
                      "line": 128,
                      "column": 27
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 3204,
                    "end": 3220,
                    "loc": {
                      "start": {
                        "line": 128,
                        "column": 8
                      },
                      "end": {
                        "line": 128,
                        "column": 24
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3204,
                      "end": 3209,
                      "loc": {
                        "start": {
                          "line": 128,
                          "column": 8
                        },
                        "end": {
                          "line": 128,
                          "column": 13
                        },
                        "identifierName": "curve"
                      },
                      "name": "curve",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3210,
                      "end": 3220,
                      "loc": {
                        "start": {
                          "line": 128,
                          "column": 14
                        },
                        "end": {
                          "line": 128,
                          "column": 24
                        },
                        "identifierName": "isInfinity"
                      },
                      "name": "isInfinity"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 3221,
                      "end": 3222,
                      "loc": {
                        "start": {
                          "line": 128,
                          "column": 25
                        },
                        "end": {
                          "line": 128,
                          "column": 26
                        },
                        "identifierName": "R"
                      },
                      "name": "R"
                    }
                  ],
                  "leadingComments": null
                },
                "consequent": {
                  "type": "ReturnStatement",
                  "start": 3225,
                  "end": 3238,
                  "loc": {
                    "start": {
                      "line": 128,
                      "column": 29
                    },
                    "end": {
                      "line": 128,
                      "column": 42
                    }
                  },
                  "argument": {
                    "type": "BooleanLiteral",
                    "start": 3232,
                    "end": 3237,
                    "loc": {
                      "start": {
                        "line": 128,
                        "column": 36
                      },
                      "end": {
                        "line": 128,
                        "column": 41
                      }
                    },
                    "value": false
                  },
                  "trailingComments": null
                },
                "alternate": null,
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.5 (cont.) Enforce R is not at infinity",
                    "start": 3150,
                    "end": 3195,
                    "loc": {
                      "start": {
                        "line": 127,
                        "column": 4
                      },
                      "end": {
                        "line": 127,
                        "column": 49
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.6 Convert the field element R.x to an integer",
                    "start": 3244,
                    "end": 3296,
                    "loc": {
                      "start": {
                        "line": 130,
                        "column": 4
                      },
                      "end": {
                        "line": 130,
                        "column": 56
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 3301,
                "end": 3320,
                "loc": {
                  "start": {
                    "line": 131,
                    "column": 4
                  },
                  "end": {
                    "line": 131,
                    "column": 23
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 3305,
                    "end": 3319,
                    "loc": {
                      "start": {
                        "line": 131,
                        "column": 8
                      },
                      "end": {
                        "line": 131,
                        "column": 22
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 3305,
                      "end": 3307,
                      "loc": {
                        "start": {
                          "line": 131,
                          "column": 8
                        },
                        "end": {
                          "line": 131,
                          "column": 10
                        },
                        "identifierName": "xR"
                      },
                      "name": "xR",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "MemberExpression",
                      "start": 3310,
                      "end": 3319,
                      "loc": {
                        "start": {
                          "line": 131,
                          "column": 13
                        },
                        "end": {
                          "line": 131,
                          "column": 22
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3310,
                        "end": 3311,
                        "loc": {
                          "start": {
                            "line": 131,
                            "column": 13
                          },
                          "end": {
                            "line": 131,
                            "column": 14
                          },
                          "identifierName": "R"
                        },
                        "name": "R"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3312,
                        "end": 3319,
                        "loc": {
                          "start": {
                            "line": 131,
                            "column": 15
                          },
                          "end": {
                            "line": 131,
                            "column": 22
                          },
                          "identifierName": "affineX"
                        },
                        "name": "affineX"
                      },
                      "computed": false
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.6 Convert the field element R.x to an integer",
                    "start": 3244,
                    "end": 3296,
                    "loc": {
                      "start": {
                        "line": 130,
                        "column": 4
                      },
                      "end": {
                        "line": 130,
                        "column": 56
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.7 Set v = xR mod n",
                    "start": 3326,
                    "end": 3351,
                    "loc": {
                      "start": {
                        "line": 133,
                        "column": 4
                      },
                      "end": {
                        "line": 133,
                        "column": 29
                      }
                    }
                  }
                ]
              },
              {
                "type": "VariableDeclaration",
                "start": 3356,
                "end": 3374,
                "loc": {
                  "start": {
                    "line": 134,
                    "column": 4
                  },
                  "end": {
                    "line": 134,
                    "column": 22
                  }
                },
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 3360,
                    "end": 3373,
                    "loc": {
                      "start": {
                        "line": 134,
                        "column": 8
                      },
                      "end": {
                        "line": 134,
                        "column": 21
                      }
                    },
                    "id": {
                      "type": "Identifier",
                      "start": 3360,
                      "end": 3361,
                      "loc": {
                        "start": {
                          "line": 134,
                          "column": 8
                        },
                        "end": {
                          "line": 134,
                          "column": 9
                        },
                        "identifierName": "v"
                      },
                      "name": "v",
                      "leadingComments": null
                    },
                    "init": {
                      "type": "CallExpression",
                      "start": 3364,
                      "end": 3373,
                      "loc": {
                        "start": {
                          "line": 134,
                          "column": 12
                        },
                        "end": {
                          "line": 134,
                          "column": 21
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 3364,
                        "end": 3370,
                        "loc": {
                          "start": {
                            "line": 134,
                            "column": 12
                          },
                          "end": {
                            "line": 134,
                            "column": 18
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3364,
                          "end": 3366,
                          "loc": {
                            "start": {
                              "line": 134,
                              "column": 12
                            },
                            "end": {
                              "line": 134,
                              "column": 14
                            },
                            "identifierName": "xR"
                          },
                          "name": "xR"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3367,
                          "end": 3370,
                          "loc": {
                            "start": {
                              "line": 134,
                              "column": 15
                            },
                            "end": {
                              "line": 134,
                              "column": 18
                            },
                            "identifierName": "mod"
                          },
                          "name": "mod"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 3371,
                          "end": 3372,
                          "loc": {
                            "start": {
                              "line": 134,
                              "column": 19
                            },
                            "end": {
                              "line": 134,
                              "column": 20
                            },
                            "identifierName": "n"
                          },
                          "name": "n"
                        }
                      ]
                    },
                    "leadingComments": null
                  }
                ],
                "kind": "var",
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.7 Set v = xR mod n",
                    "start": 3326,
                    "end": 3351,
                    "loc": {
                      "start": {
                        "line": 133,
                        "column": 4
                      },
                      "end": {
                        "line": 133,
                        "column": 29
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"",
                    "start": 3380,
                    "end": 3446,
                    "loc": {
                      "start": {
                        "line": 136,
                        "column": 4
                      },
                      "end": {
                        "line": 136,
                        "column": 70
                      }
                    }
                  }
                ]
              },
              {
                "type": "ReturnStatement",
                "start": 3451,
                "end": 3470,
                "loc": {
                  "start": {
                    "line": 137,
                    "column": 4
                  },
                  "end": {
                    "line": 137,
                    "column": 23
                  }
                },
                "argument": {
                  "type": "CallExpression",
                  "start": 3458,
                  "end": 3469,
                  "loc": {
                    "start": {
                      "line": 137,
                      "column": 11
                    },
                    "end": {
                      "line": 137,
                      "column": 22
                    }
                  },
                  "callee": {
                    "type": "MemberExpression",
                    "start": 3458,
                    "end": 3466,
                    "loc": {
                      "start": {
                        "line": 137,
                        "column": 11
                      },
                      "end": {
                        "line": 137,
                        "column": 19
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 3458,
                      "end": 3459,
                      "loc": {
                        "start": {
                          "line": 137,
                          "column": 11
                        },
                        "end": {
                          "line": 137,
                          "column": 12
                        },
                        "identifierName": "v"
                      },
                      "name": "v",
                      "leadingComments": null
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 3460,
                      "end": 3466,
                      "loc": {
                        "start": {
                          "line": 137,
                          "column": 13
                        },
                        "end": {
                          "line": 137,
                          "column": 19
                        },
                        "identifierName": "equals"
                      },
                      "name": "equals"
                    },
                    "computed": false,
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 3467,
                      "end": 3468,
                      "loc": {
                        "start": {
                          "line": 137,
                          "column": 20
                        },
                        "end": {
                          "line": 137,
                          "column": 21
                        },
                        "identifierName": "r"
                      },
                      "name": "r"
                    }
                  ],
                  "leadingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"",
                    "start": 3380,
                    "end": 3446,
                    "loc": {
                      "start": {
                        "line": 136,
                        "column": 4
                      },
                      "end": {
                        "line": 136,
                        "column": 70
                      }
                    }
                  }
                ]
              }
            ],
            "directives": []
          },
          "leadingComments": [],
          "trailingComments": []
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      }
    ],
    "directives": []
  },
  "comments": [
    {
      "type": "CommentLine",
      "value": " from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa",
      "start": 29,
      "end": 106,
      "loc": {
        "start": {
          "line": 1,
          "column": 29
        },
        "end": {
          "line": 1,
          "column": 106
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " https://tools.ietf.org/html/rfc6979#section-3.2",
      "start": 313,
      "end": 363,
      "loc": {
        "start": {
          "line": 9,
          "column": 0
        },
        "end": {
          "line": 9,
          "column": 50
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " sanity check",
      "start": 592,
      "end": 607,
      "loc": {
        "start": {
          "line": 18,
          "column": 4
        },
        "end": {
          "line": 18,
          "column": 19
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step B",
      "start": 761,
      "end": 770,
      "loc": {
        "start": {
          "line": 25,
          "column": 4
        },
        "end": {
          "line": 25,
          "column": 13
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step C",
      "start": 791,
      "end": 800,
      "loc": {
        "start": {
          "line": 28,
          "column": 4
        },
        "end": {
          "line": 28,
          "column": 13
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step D",
      "start": 821,
      "end": 830,
      "loc": {
        "start": {
          "line": 31,
          "column": 4
        },
        "end": {
          "line": 31,
          "column": 13
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step E",
      "start": 905,
      "end": 914,
      "loc": {
        "start": {
          "line": 34,
          "column": 4
        },
        "end": {
          "line": 34,
          "column": 13
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step F",
      "start": 946,
      "end": 955,
      "loc": {
        "start": {
          "line": 37,
          "column": 4
        },
        "end": {
          "line": 37,
          "column": 13
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step G",
      "start": 1030,
      "end": 1039,
      "loc": {
        "start": {
          "line": 40,
          "column": 4
        },
        "end": {
          "line": 40,
          "column": 13
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H1/H2a, ignored as tlen === qlen (256 bit)",
      "start": 1071,
      "end": 1121,
      "loc": {
        "start": {
          "line": 43,
          "column": 4
        },
        "end": {
          "line": 43,
          "column": 54
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H2b",
      "start": 1126,
      "end": 1137,
      "loc": {
        "start": {
          "line": 44,
          "column": 4
        },
        "end": {
          "line": 44,
          "column": 15
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H3, repeat until T is within the interval [1, n - 1]",
      "start": 1208,
      "end": 1268,
      "loc": {
        "start": {
          "line": 49,
          "column": 4
        },
        "end": {
          "line": 49,
          "column": 64
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H1/H2a, again, ignored as tlen === qlen (256 bit)",
      "start": 1447,
      "end": 1504,
      "loc": {
        "start": {
          "line": 54,
          "column": 8
        },
        "end": {
          "line": 54,
          "column": 65
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H2b again",
      "start": 1513,
      "end": 1530,
      "loc": {
        "start": {
          "line": 55,
          "column": 8
        },
        "end": {
          "line": 55,
          "column": 25
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " find canonically valid signature",
      "start": 1870,
      "end": 1905,
      "loc": {
        "start": {
          "line": 76,
          "column": 12
        },
        "end": {
          "line": 76,
          "column": 47
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " enforce low S values, see bip62: 'low s values in signatures'",
      "start": 2349,
      "end": 2413,
      "loc": {
        "start": {
          "line": 97,
          "column": 4
        },
        "end": {
          "line": 97,
          "column": 68
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]",
      "start": 2667,
      "end": 2736,
      "loc": {
        "start": {
          "line": 112,
          "column": 4
        },
        "end": {
          "line": 112,
          "column": 73
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " c = s^-1 mod n",
      "start": 2866,
      "end": 2883,
      "loc": {
        "start": {
          "line": 116,
          "column": 4
        },
        "end": {
          "line": 116,
          "column": 21
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.4 Compute u1 = es^−1 mod n",
      "start": 2918,
      "end": 2951,
      "loc": {
        "start": {
          "line": 119,
          "column": 4
        },
        "end": {
          "line": 119,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "               u2 = rs^−1 mod n",
      "start": 2956,
      "end": 2989,
      "loc": {
        "start": {
          "line": 120,
          "column": 4
        },
        "end": {
          "line": 120,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.5 Compute R = (xR, yR) = u1G + u2Q",
      "start": 3065,
      "end": 3106,
      "loc": {
        "start": {
          "line": 124,
          "column": 4
        },
        "end": {
          "line": 124,
          "column": 45
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.5 (cont.) Enforce R is not at infinity",
      "start": 3150,
      "end": 3195,
      "loc": {
        "start": {
          "line": 127,
          "column": 4
        },
        "end": {
          "line": 127,
          "column": 49
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.6 Convert the field element R.x to an integer",
      "start": 3244,
      "end": 3296,
      "loc": {
        "start": {
          "line": 130,
          "column": 4
        },
        "end": {
          "line": 130,
          "column": 56
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.7 Set v = xR mod n",
      "start": 3326,
      "end": 3351,
      "loc": {
        "start": {
          "line": 133,
          "column": 4
        },
        "end": {
          "line": 133,
          "column": 29
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"",
      "start": 3380,
      "end": 3446,
      "loc": {
        "start": {
          "line": 136,
          "column": 4
        },
        "end": {
          "line": 136,
          "column": 70
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.2 H = Hash(M), already done by the user",
      "start": 3523,
      "end": 3569,
      "loc": {
        "start": {
          "line": 141,
          "column": 4
        },
        "end": {
          "line": 141,
          "column": 50
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.3 e = H",
      "start": 3574,
      "end": 3588,
      "loc": {
        "start": {
          "line": 142,
          "column": 4
        },
        "end": {
          "line": 142,
          "column": 18
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n ",
      "start": 3679,
      "end": 3880,
      "loc": {
        "start": {
          "line": 147,
          "column": 0
        },
        "end": {
          "line": 154,
          "column": 3
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " A set LSB signifies that the y-coordinate is odd",
      "start": 4242,
      "end": 4293,
      "loc": {
        "start": {
          "line": 167,
          "column": 4
        },
        "end": {
          "line": 167,
          "column": 55
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " The more significant bit specifies whether we should use the",
      "start": 4323,
      "end": 4386,
      "loc": {
        "start": {
          "line": 170,
          "column": 4
        },
        "end": {
          "line": 170,
          "column": 67
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " first or second candidate key.",
      "start": 4391,
      "end": 4424,
      "loc": {
        "start": {
          "line": 171,
          "column": 4
        },
        "end": {
          "line": 171,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.1 Let x = r + jn",
      "start": 4460,
      "end": 4481,
      "loc": {
        "start": {
          "line": 174,
          "column": 4
        },
        "end": {
          "line": 174,
          "column": 25
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4 Check that nR is at infinity",
      "start": 4568,
      "end": 4603,
      "loc": {
        "start": {
          "line": 178,
          "column": 4
        },
        "end": {
          "line": 178,
          "column": 39
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Compute -e from e",
      "start": 4704,
      "end": 4724,
      "loc": {
        "start": {
          "line": 182,
          "column": 4
        },
        "end": {
          "line": 182,
          "column": 24
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.6.1 Compute Q = r^-1 (sR -  eG)",
      "start": 4764,
      "end": 4800,
      "loc": {
        "start": {
          "line": 185,
          "column": 4
        },
        "end": {
          "line": 185,
          "column": 40
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "               Q = r^-1 (sR + -eG)",
      "start": 4805,
      "end": 4841,
      "loc": {
        "start": {
          "line": 186,
          "column": 4
        },
        "end": {
          "line": 186,
          "column": 40
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n ",
      "start": 4970,
      "end": 5342,
      "loc": {
        "start": {
          "line": 195,
          "column": 0
        },
        "end": {
          "line": 205,
          "column": 3
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.6.2 Verify Q",
      "start": 5505,
      "end": 5522,
      "loc": {
        "start": {
          "line": 210,
          "column": 8
        },
        "end": {
          "line": 210,
          "column": 25
        }
      }
    }
  ],
  "tokens": [
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 0,
      "end": 6,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "assert",
      "start": 7,
      "end": 13,
      "loc": {
        "start": {
          "line": 1,
          "column": 7
        },
        "end": {
          "line": 1,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 14,
      "end": 18,
      "loc": {
        "start": {
          "line": 1,
          "column": 14
        },
        "end": {
          "line": 1,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "assert",
      "start": 19,
      "end": 27,
      "loc": {
        "start": {
          "line": 1,
          "column": 19
        },
        "end": {
          "line": 1,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 27,
      "end": 28,
      "loc": {
        "start": {
          "line": 1,
          "column": 27
        },
        "end": {
          "line": 1,
          "column": 28
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa",
      "start": 29,
      "end": 106,
      "loc": {
        "start": {
          "line": 1,
          "column": 29
        },
        "end": {
          "line": 1,
          "column": 106
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 107,
      "end": 113,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 114,
      "end": 115,
      "loc": {
        "start": {
          "line": 2,
          "column": 7
        },
        "end": {
          "line": 2,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sha256",
      "start": 115,
      "end": 121,
      "loc": {
        "start": {
          "line": 2,
          "column": 8
        },
        "end": {
          "line": 2,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 121,
      "end": 122,
      "loc": {
        "start": {
          "line": 2,
          "column": 14
        },
        "end": {
          "line": 2,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 123,
      "end": 133,
      "loc": {
        "start": {
          "line": 2,
          "column": 16
        },
        "end": {
          "line": 2,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 133,
      "end": 134,
      "loc": {
        "start": {
          "line": 2,
          "column": 26
        },
        "end": {
          "line": 2,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 135,
      "end": 139,
      "loc": {
        "start": {
          "line": 2,
          "column": 28
        },
        "end": {
          "line": 2,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./hash",
      "start": 140,
      "end": 148,
      "loc": {
        "start": {
          "line": 2,
          "column": 33
        },
        "end": {
          "line": 2,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 148,
      "end": 149,
      "loc": {
        "start": {
          "line": 2,
          "column": 41
        },
        "end": {
          "line": 2,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 150,
      "end": 156,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "enforceType",
      "start": 157,
      "end": 168,
      "loc": {
        "start": {
          "line": 3,
          "column": 7
        },
        "end": {
          "line": 3,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 169,
      "end": 173,
      "loc": {
        "start": {
          "line": 3,
          "column": 19
        },
        "end": {
          "line": 3,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./enforce_types",
      "start": 174,
      "end": 191,
      "loc": {
        "start": {
          "line": 3,
          "column": 24
        },
        "end": {
          "line": 3,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 191,
      "end": 192,
      "loc": {
        "start": {
          "line": 3,
          "column": 41
        },
        "end": {
          "line": 3,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 194,
      "end": 200,
      "loc": {
        "start": {
          "line": 5,
          "column": 0
        },
        "end": {
          "line": 5,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "BigInteger",
      "start": 201,
      "end": 211,
      "loc": {
        "start": {
          "line": 5,
          "column": 7
        },
        "end": {
          "line": 5,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 212,
      "end": 216,
      "loc": {
        "start": {
          "line": 5,
          "column": 18
        },
        "end": {
          "line": 5,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "bigi",
      "start": 217,
      "end": 223,
      "loc": {
        "start": {
          "line": 5,
          "column": 23
        },
        "end": {
          "line": 5,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 223,
      "end": 224,
      "loc": {
        "start": {
          "line": 5,
          "column": 29
        },
        "end": {
          "line": 5,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 225,
      "end": 231,
      "loc": {
        "start": {
          "line": 6,
          "column": 0
        },
        "end": {
          "line": 6,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "ECSignature",
      "start": 232,
      "end": 243,
      "loc": {
        "start": {
          "line": 6,
          "column": 7
        },
        "end": {
          "line": 6,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 244,
      "end": 248,
      "loc": {
        "start": {
          "line": 6,
          "column": 19
        },
        "end": {
          "line": 6,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./ecsignature",
      "start": 249,
      "end": 264,
      "loc": {
        "start": {
          "line": 6,
          "column": 24
        },
        "end": {
          "line": 6,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 264,
      "end": 265,
      "loc": {
        "start": {
          "line": 6,
          "column": 39
        },
        "end": {
          "line": 6,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 266,
      "end": 271,
      "loc": {
        "start": {
          "line": 7,
          "column": 0
        },
        "end": {
          "line": 7,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 272,
      "end": 278,
      "loc": {
        "start": {
          "line": 7,
          "column": 6
        },
        "end": {
          "line": 7,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 279,
      "end": 280,
      "loc": {
        "start": {
          "line": 7,
          "column": 13
        },
        "end": {
          "line": 7,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "require",
      "start": 281,
      "end": 288,
      "loc": {
        "start": {
          "line": 7,
          "column": 15
        },
        "end": {
          "line": 7,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 288,
      "end": 289,
      "loc": {
        "start": {
          "line": 7,
          "column": 22
        },
        "end": {
          "line": 7,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "safe-buffer",
      "start": 289,
      "end": 302,
      "loc": {
        "start": {
          "line": 7,
          "column": 23
        },
        "end": {
          "line": 7,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 302,
      "end": 303,
      "loc": {
        "start": {
          "line": 7,
          "column": 36
        },
        "end": {
          "line": 7,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 303,
      "end": 304,
      "loc": {
        "start": {
          "line": 7,
          "column": 37
        },
        "end": {
          "line": 7,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 304,
      "end": 310,
      "loc": {
        "start": {
          "line": 7,
          "column": 38
        },
        "end": {
          "line": 7,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 310,
      "end": 311,
      "loc": {
        "start": {
          "line": 7,
          "column": 44
        },
        "end": {
          "line": 7,
          "column": 45
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " https://tools.ietf.org/html/rfc6979#section-3.2",
      "start": 313,
      "end": 363,
      "loc": {
        "start": {
          "line": 9,
          "column": 0
        },
        "end": {
          "line": 9,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 364,
      "end": 372,
      "loc": {
        "start": {
          "line": 10,
          "column": 0
        },
        "end": {
          "line": 10,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "deterministicGenerateK",
      "start": 373,
      "end": 395,
      "loc": {
        "start": {
          "line": 10,
          "column": 9
        },
        "end": {
          "line": 10,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 395,
      "end": 396,
      "loc": {
        "start": {
          "line": 10,
          "column": 31
        },
        "end": {
          "line": 10,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 396,
      "end": 401,
      "loc": {
        "start": {
          "line": 10,
          "column": 32
        },
        "end": {
          "line": 10,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 401,
      "end": 402,
      "loc": {
        "start": {
          "line": 10,
          "column": 37
        },
        "end": {
          "line": 10,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 403,
      "end": 407,
      "loc": {
        "start": {
          "line": 10,
          "column": 39
        },
        "end": {
          "line": 10,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 407,
      "end": 408,
      "loc": {
        "start": {
          "line": 10,
          "column": 43
        },
        "end": {
          "line": 10,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "d",
      "start": 409,
      "end": 410,
      "loc": {
        "start": {
          "line": 10,
          "column": 45
        },
        "end": {
          "line": 10,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 410,
      "end": 411,
      "loc": {
        "start": {
          "line": 10,
          "column": 46
        },
        "end": {
          "line": 10,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "checkSig",
      "start": 412,
      "end": 420,
      "loc": {
        "start": {
          "line": 10,
          "column": 48
        },
        "end": {
          "line": 10,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 420,
      "end": 421,
      "loc": {
        "start": {
          "line": 10,
          "column": 56
        },
        "end": {
          "line": 10,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nonce",
      "start": 422,
      "end": 427,
      "loc": {
        "start": {
          "line": 10,
          "column": 58
        },
        "end": {
          "line": 10,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 427,
      "end": 428,
      "loc": {
        "start": {
          "line": 10,
          "column": 63
        },
        "end": {
          "line": 10,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 429,
      "end": 430,
      "loc": {
        "start": {
          "line": 10,
          "column": 65
        },
        "end": {
          "line": 10,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "enforceType",
      "start": 435,
      "end": 446,
      "loc": {
        "start": {
          "line": 11,
          "column": 4
        },
        "end": {
          "line": 11,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 446,
      "end": 447,
      "loc": {
        "start": {
          "line": 11,
          "column": 15
        },
        "end": {
          "line": 11,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "Buffer",
      "start": 447,
      "end": 455,
      "loc": {
        "start": {
          "line": 11,
          "column": 16
        },
        "end": {
          "line": 11,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 455,
      "end": 456,
      "loc": {
        "start": {
          "line": 11,
          "column": 24
        },
        "end": {
          "line": 11,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 457,
      "end": 461,
      "loc": {
        "start": {
          "line": 11,
          "column": 26
        },
        "end": {
          "line": 11,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 461,
      "end": 462,
      "loc": {
        "start": {
          "line": 11,
          "column": 30
        },
        "end": {
          "line": 11,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 462,
      "end": 463,
      "loc": {
        "start": {
          "line": 11,
          "column": 31
        },
        "end": {
          "line": 11,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "enforceType",
      "start": 468,
      "end": 479,
      "loc": {
        "start": {
          "line": 12,
          "column": 4
        },
        "end": {
          "line": 12,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 479,
      "end": 480,
      "loc": {
        "start": {
          "line": 12,
          "column": 15
        },
        "end": {
          "line": 12,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "BigInteger",
      "start": 480,
      "end": 490,
      "loc": {
        "start": {
          "line": 12,
          "column": 16
        },
        "end": {
          "line": 12,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 490,
      "end": 491,
      "loc": {
        "start": {
          "line": 12,
          "column": 26
        },
        "end": {
          "line": 12,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "d",
      "start": 492,
      "end": 493,
      "loc": {
        "start": {
          "line": 12,
          "column": 28
        },
        "end": {
          "line": 12,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 493,
      "end": 494,
      "loc": {
        "start": {
          "line": 12,
          "column": 29
        },
        "end": {
          "line": 12,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 494,
      "end": 495,
      "loc": {
        "start": {
          "line": 12,
          "column": 30
        },
        "end": {
          "line": 12,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 501,
      "end": 503,
      "loc": {
        "start": {
          "line": 14,
          "column": 4
        },
        "end": {
          "line": 14,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 504,
      "end": 505,
      "loc": {
        "start": {
          "line": 14,
          "column": 7
        },
        "end": {
          "line": 14,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nonce",
      "start": 505,
      "end": 510,
      "loc": {
        "start": {
          "line": 14,
          "column": 8
        },
        "end": {
          "line": 14,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 510,
      "end": 511,
      "loc": {
        "start": {
          "line": 14,
          "column": 13
        },
        "end": {
          "line": 14,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 512,
      "end": 513,
      "loc": {
        "start": {
          "line": 14,
          "column": 15
        },
        "end": {
          "line": 14,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 522,
      "end": 526,
      "loc": {
        "start": {
          "line": 15,
          "column": 8
        },
        "end": {
          "line": 15,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 527,
      "end": 528,
      "loc": {
        "start": {
          "line": 15,
          "column": 13
        },
        "end": {
          "line": 15,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sha256",
      "start": 529,
      "end": 535,
      "loc": {
        "start": {
          "line": 15,
          "column": 15
        },
        "end": {
          "line": 15,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 535,
      "end": 536,
      "loc": {
        "start": {
          "line": 15,
          "column": 21
        },
        "end": {
          "line": 15,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 536,
      "end": 542,
      "loc": {
        "start": {
          "line": 15,
          "column": 22
        },
        "end": {
          "line": 15,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 542,
      "end": 543,
      "loc": {
        "start": {
          "line": 15,
          "column": 28
        },
        "end": {
          "line": 15,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "concat",
      "start": 543,
      "end": 549,
      "loc": {
        "start": {
          "line": 15,
          "column": 29
        },
        "end": {
          "line": 15,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 549,
      "end": 550,
      "loc": {
        "start": {
          "line": 15,
          "column": 35
        },
        "end": {
          "line": 15,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 550,
      "end": 551,
      "loc": {
        "start": {
          "line": 15,
          "column": 36
        },
        "end": {
          "line": 15,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 551,
      "end": 555,
      "loc": {
        "start": {
          "line": 15,
          "column": 37
        },
        "end": {
          "line": 15,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 555,
      "end": 556,
      "loc": {
        "start": {
          "line": 15,
          "column": 41
        },
        "end": {
          "line": 15,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 557,
      "end": 563,
      "loc": {
        "start": {
          "line": 15,
          "column": 43
        },
        "end": {
          "line": 15,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 563,
      "end": 564,
      "loc": {
        "start": {
          "line": 15,
          "column": 49
        },
        "end": {
          "line": 15,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "alloc",
      "start": 564,
      "end": 569,
      "loc": {
        "start": {
          "line": 15,
          "column": 50
        },
        "end": {
          "line": 15,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 569,
      "end": 570,
      "loc": {
        "start": {
          "line": 15,
          "column": 55
        },
        "end": {
          "line": 15,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nonce",
      "start": 570,
      "end": 575,
      "loc": {
        "start": {
          "line": 15,
          "column": 56
        },
        "end": {
          "line": 15,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 575,
      "end": 576,
      "loc": {
        "start": {
          "line": 15,
          "column": 61
        },
        "end": {
          "line": 15,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 576,
      "end": 577,
      "loc": {
        "start": {
          "line": 15,
          "column": 62
        },
        "end": {
          "line": 15,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 577,
      "end": 578,
      "loc": {
        "start": {
          "line": 15,
          "column": 63
        },
        "end": {
          "line": 15,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 578,
      "end": 579,
      "loc": {
        "start": {
          "line": 15,
          "column": 64
        },
        "end": {
          "line": 15,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 579,
      "end": 580,
      "loc": {
        "start": {
          "line": 15,
          "column": 65
        },
        "end": {
          "line": 15,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 585,
      "end": 586,
      "loc": {
        "start": {
          "line": 16,
          "column": 4
        },
        "end": {
          "line": 16,
          "column": 5
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " sanity check",
      "start": 592,
      "end": 607,
      "loc": {
        "start": {
          "line": 18,
          "column": 4
        },
        "end": {
          "line": 18,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "assert",
      "start": 612,
      "end": 618,
      "loc": {
        "start": {
          "line": 19,
          "column": 4
        },
        "end": {
          "line": 19,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 618,
      "end": 619,
      "loc": {
        "start": {
          "line": 19,
          "column": 10
        },
        "end": {
          "line": 19,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "equal",
      "start": 619,
      "end": 624,
      "loc": {
        "start": {
          "line": 19,
          "column": 11
        },
        "end": {
          "line": 19,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 624,
      "end": 625,
      "loc": {
        "start": {
          "line": 19,
          "column": 16
        },
        "end": {
          "line": 19,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 625,
      "end": 629,
      "loc": {
        "start": {
          "line": 19,
          "column": 17
        },
        "end": {
          "line": 19,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 629,
      "end": 630,
      "loc": {
        "start": {
          "line": 19,
          "column": 21
        },
        "end": {
          "line": 19,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "length",
      "start": 630,
      "end": 636,
      "loc": {
        "start": {
          "line": 19,
          "column": 22
        },
        "end": {
          "line": 19,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 636,
      "end": 637,
      "loc": {
        "start": {
          "line": 19,
          "column": 28
        },
        "end": {
          "line": 19,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 32,
      "start": 638,
      "end": 640,
      "loc": {
        "start": {
          "line": 19,
          "column": 30
        },
        "end": {
          "line": 19,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 640,
      "end": 641,
      "loc": {
        "start": {
          "line": 19,
          "column": 32
        },
        "end": {
          "line": 19,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "Hash must be 256 bit",
      "start": 642,
      "end": 664,
      "loc": {
        "start": {
          "line": 19,
          "column": 34
        },
        "end": {
          "line": 19,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 664,
      "end": 665,
      "loc": {
        "start": {
          "line": 19,
          "column": 56
        },
        "end": {
          "line": 19,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 665,
      "end": 666,
      "loc": {
        "start": {
          "line": 19,
          "column": 57
        },
        "end": {
          "line": 19,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 672,
      "end": 675,
      "loc": {
        "start": {
          "line": 21,
          "column": 4
        },
        "end": {
          "line": 21,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "x",
      "start": 676,
      "end": 677,
      "loc": {
        "start": {
          "line": 21,
          "column": 8
        },
        "end": {
          "line": 21,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 678,
      "end": 679,
      "loc": {
        "start": {
          "line": 21,
          "column": 10
        },
        "end": {
          "line": 21,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "d",
      "start": 680,
      "end": 681,
      "loc": {
        "start": {
          "line": 21,
          "column": 12
        },
        "end": {
          "line": 21,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 681,
      "end": 682,
      "loc": {
        "start": {
          "line": 21,
          "column": 13
        },
        "end": {
          "line": 21,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "toBuffer",
      "start": 682,
      "end": 690,
      "loc": {
        "start": {
          "line": 21,
          "column": 14
        },
        "end": {
          "line": 21,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 690,
      "end": 691,
      "loc": {
        "start": {
          "line": 21,
          "column": 22
        },
        "end": {
          "line": 21,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 32,
      "start": 691,
      "end": 693,
      "loc": {
        "start": {
          "line": 21,
          "column": 23
        },
        "end": {
          "line": 21,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 693,
      "end": 694,
      "loc": {
        "start": {
          "line": 21,
          "column": 25
        },
        "end": {
          "line": 21,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 694,
      "end": 695,
      "loc": {
        "start": {
          "line": 21,
          "column": 26
        },
        "end": {
          "line": 21,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 700,
      "end": 703,
      "loc": {
        "start": {
          "line": 22,
          "column": 4
        },
        "end": {
          "line": 22,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 704,
      "end": 705,
      "loc": {
        "start": {
          "line": 22,
          "column": 8
        },
        "end": {
          "line": 22,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 706,
      "end": 707,
      "loc": {
        "start": {
          "line": 22,
          "column": 10
        },
        "end": {
          "line": 22,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 708,
      "end": 714,
      "loc": {
        "start": {
          "line": 22,
          "column": 12
        },
        "end": {
          "line": 22,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 714,
      "end": 715,
      "loc": {
        "start": {
          "line": 22,
          "column": 18
        },
        "end": {
          "line": 22,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "alloc",
      "start": 715,
      "end": 720,
      "loc": {
        "start": {
          "line": 22,
          "column": 19
        },
        "end": {
          "line": 22,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 720,
      "end": 721,
      "loc": {
        "start": {
          "line": 22,
          "column": 24
        },
        "end": {
          "line": 22,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 32,
      "start": 721,
      "end": 723,
      "loc": {
        "start": {
          "line": 22,
          "column": 25
        },
        "end": {
          "line": 22,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 723,
      "end": 724,
      "loc": {
        "start": {
          "line": 22,
          "column": 27
        },
        "end": {
          "line": 22,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 724,
      "end": 725,
      "loc": {
        "start": {
          "line": 22,
          "column": 28
        },
        "end": {
          "line": 22,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 730,
      "end": 733,
      "loc": {
        "start": {
          "line": 23,
          "column": 4
        },
        "end": {
          "line": 23,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 734,
      "end": 735,
      "loc": {
        "start": {
          "line": 23,
          "column": 8
        },
        "end": {
          "line": 23,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 736,
      "end": 737,
      "loc": {
        "start": {
          "line": 23,
          "column": 10
        },
        "end": {
          "line": 23,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 738,
      "end": 744,
      "loc": {
        "start": {
          "line": 23,
          "column": 12
        },
        "end": {
          "line": 23,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 744,
      "end": 745,
      "loc": {
        "start": {
          "line": 23,
          "column": 18
        },
        "end": {
          "line": 23,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "alloc",
      "start": 745,
      "end": 750,
      "loc": {
        "start": {
          "line": 23,
          "column": 19
        },
        "end": {
          "line": 23,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 750,
      "end": 751,
      "loc": {
        "start": {
          "line": 23,
          "column": 24
        },
        "end": {
          "line": 23,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 32,
      "start": 751,
      "end": 753,
      "loc": {
        "start": {
          "line": 23,
          "column": 25
        },
        "end": {
          "line": 23,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 753,
      "end": 754,
      "loc": {
        "start": {
          "line": 23,
          "column": 27
        },
        "end": {
          "line": 23,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 754,
      "end": 755,
      "loc": {
        "start": {
          "line": 23,
          "column": 28
        },
        "end": {
          "line": 23,
          "column": 29
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step B",
      "start": 761,
      "end": 770,
      "loc": {
        "start": {
          "line": 25,
          "column": 4
        },
        "end": {
          "line": 25,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 775,
      "end": 776,
      "loc": {
        "start": {
          "line": 26,
          "column": 4
        },
        "end": {
          "line": 26,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 776,
      "end": 777,
      "loc": {
        "start": {
          "line": 26,
          "column": 5
        },
        "end": {
          "line": 26,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "fill",
      "start": 777,
      "end": 781,
      "loc": {
        "start": {
          "line": 26,
          "column": 6
        },
        "end": {
          "line": 26,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 781,
      "end": 782,
      "loc": {
        "start": {
          "line": 26,
          "column": 10
        },
        "end": {
          "line": 26,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 782,
      "end": 783,
      "loc": {
        "start": {
          "line": 26,
          "column": 11
        },
        "end": {
          "line": 26,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 783,
      "end": 784,
      "loc": {
        "start": {
          "line": 26,
          "column": 12
        },
        "end": {
          "line": 26,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 784,
      "end": 785,
      "loc": {
        "start": {
          "line": 26,
          "column": 13
        },
        "end": {
          "line": 26,
          "column": 14
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step C",
      "start": 791,
      "end": 800,
      "loc": {
        "start": {
          "line": 28,
          "column": 4
        },
        "end": {
          "line": 28,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 805,
      "end": 806,
      "loc": {
        "start": {
          "line": 29,
          "column": 4
        },
        "end": {
          "line": 29,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 806,
      "end": 807,
      "loc": {
        "start": {
          "line": 29,
          "column": 5
        },
        "end": {
          "line": 29,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "fill",
      "start": 807,
      "end": 811,
      "loc": {
        "start": {
          "line": 29,
          "column": 6
        },
        "end": {
          "line": 29,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 811,
      "end": 812,
      "loc": {
        "start": {
          "line": 29,
          "column": 10
        },
        "end": {
          "line": 29,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 812,
      "end": 813,
      "loc": {
        "start": {
          "line": 29,
          "column": 11
        },
        "end": {
          "line": 29,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 813,
      "end": 814,
      "loc": {
        "start": {
          "line": 29,
          "column": 12
        },
        "end": {
          "line": 29,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 814,
      "end": 815,
      "loc": {
        "start": {
          "line": 29,
          "column": 13
        },
        "end": {
          "line": 29,
          "column": 14
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step D",
      "start": 821,
      "end": 830,
      "loc": {
        "start": {
          "line": 31,
          "column": 4
        },
        "end": {
          "line": 31,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 835,
      "end": 836,
      "loc": {
        "start": {
          "line": 32,
          "column": 4
        },
        "end": {
          "line": 32,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 837,
      "end": 838,
      "loc": {
        "start": {
          "line": 32,
          "column": 6
        },
        "end": {
          "line": 32,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 839,
      "end": 849,
      "loc": {
        "start": {
          "line": 32,
          "column": 8
        },
        "end": {
          "line": 32,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 849,
      "end": 850,
      "loc": {
        "start": {
          "line": 32,
          "column": 18
        },
        "end": {
          "line": 32,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 850,
      "end": 856,
      "loc": {
        "start": {
          "line": 32,
          "column": 19
        },
        "end": {
          "line": 32,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 856,
      "end": 857,
      "loc": {
        "start": {
          "line": 32,
          "column": 25
        },
        "end": {
          "line": 32,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "concat",
      "start": 857,
      "end": 863,
      "loc": {
        "start": {
          "line": 32,
          "column": 26
        },
        "end": {
          "line": 32,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 863,
      "end": 864,
      "loc": {
        "start": {
          "line": 32,
          "column": 32
        },
        "end": {
          "line": 32,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 864,
      "end": 865,
      "loc": {
        "start": {
          "line": 32,
          "column": 33
        },
        "end": {
          "line": 32,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 865,
      "end": 866,
      "loc": {
        "start": {
          "line": 32,
          "column": 34
        },
        "end": {
          "line": 32,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 866,
      "end": 867,
      "loc": {
        "start": {
          "line": 32,
          "column": 35
        },
        "end": {
          "line": 32,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 868,
      "end": 871,
      "loc": {
        "start": {
          "line": 32,
          "column": 37
        },
        "end": {
          "line": 32,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 872,
      "end": 878,
      "loc": {
        "start": {
          "line": 32,
          "column": 41
        },
        "end": {
          "line": 32,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 878,
      "end": 879,
      "loc": {
        "start": {
          "line": 32,
          "column": 47
        },
        "end": {
          "line": 32,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 879,
      "end": 880,
      "loc": {
        "start": {
          "line": 32,
          "column": 48
        },
        "end": {
          "line": 32,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 880,
      "end": 881,
      "loc": {
        "start": {
          "line": 32,
          "column": 49
        },
        "end": {
          "line": 32,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 881,
      "end": 882,
      "loc": {
        "start": {
          "line": 32,
          "column": 50
        },
        "end": {
          "line": 32,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 882,
      "end": 883,
      "loc": {
        "start": {
          "line": 32,
          "column": 51
        },
        "end": {
          "line": 32,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 883,
      "end": 884,
      "loc": {
        "start": {
          "line": 32,
          "column": 52
        },
        "end": {
          "line": 32,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "x",
      "start": 885,
      "end": 886,
      "loc": {
        "start": {
          "line": 32,
          "column": 54
        },
        "end": {
          "line": 32,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 886,
      "end": 887,
      "loc": {
        "start": {
          "line": 32,
          "column": 55
        },
        "end": {
          "line": 32,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 888,
      "end": 892,
      "loc": {
        "start": {
          "line": 32,
          "column": 57
        },
        "end": {
          "line": 32,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 892,
      "end": 893,
      "loc": {
        "start": {
          "line": 32,
          "column": 61
        },
        "end": {
          "line": 32,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 893,
      "end": 894,
      "loc": {
        "start": {
          "line": 32,
          "column": 62
        },
        "end": {
          "line": 32,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 894,
      "end": 895,
      "loc": {
        "start": {
          "line": 32,
          "column": 63
        },
        "end": {
          "line": 32,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 896,
      "end": 897,
      "loc": {
        "start": {
          "line": 32,
          "column": 65
        },
        "end": {
          "line": 32,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 897,
      "end": 898,
      "loc": {
        "start": {
          "line": 32,
          "column": 66
        },
        "end": {
          "line": 32,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 898,
      "end": 899,
      "loc": {
        "start": {
          "line": 32,
          "column": 67
        },
        "end": {
          "line": 32,
          "column": 68
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step E",
      "start": 905,
      "end": 914,
      "loc": {
        "start": {
          "line": 34,
          "column": 4
        },
        "end": {
          "line": 34,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 919,
      "end": 920,
      "loc": {
        "start": {
          "line": 35,
          "column": 4
        },
        "end": {
          "line": 35,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 921,
      "end": 922,
      "loc": {
        "start": {
          "line": 35,
          "column": 6
        },
        "end": {
          "line": 35,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 923,
      "end": 933,
      "loc": {
        "start": {
          "line": 35,
          "column": 8
        },
        "end": {
          "line": 35,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 933,
      "end": 934,
      "loc": {
        "start": {
          "line": 35,
          "column": 18
        },
        "end": {
          "line": 35,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 934,
      "end": 935,
      "loc": {
        "start": {
          "line": 35,
          "column": 19
        },
        "end": {
          "line": 35,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 935,
      "end": 936,
      "loc": {
        "start": {
          "line": 35,
          "column": 20
        },
        "end": {
          "line": 35,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 937,
      "end": 938,
      "loc": {
        "start": {
          "line": 35,
          "column": 22
        },
        "end": {
          "line": 35,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 938,
      "end": 939,
      "loc": {
        "start": {
          "line": 35,
          "column": 23
        },
        "end": {
          "line": 35,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 939,
      "end": 940,
      "loc": {
        "start": {
          "line": 35,
          "column": 24
        },
        "end": {
          "line": 35,
          "column": 25
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step F",
      "start": 946,
      "end": 955,
      "loc": {
        "start": {
          "line": 37,
          "column": 4
        },
        "end": {
          "line": 37,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 960,
      "end": 961,
      "loc": {
        "start": {
          "line": 38,
          "column": 4
        },
        "end": {
          "line": 38,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 962,
      "end": 963,
      "loc": {
        "start": {
          "line": 38,
          "column": 6
        },
        "end": {
          "line": 38,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 964,
      "end": 974,
      "loc": {
        "start": {
          "line": 38,
          "column": 8
        },
        "end": {
          "line": 38,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 974,
      "end": 975,
      "loc": {
        "start": {
          "line": 38,
          "column": 18
        },
        "end": {
          "line": 38,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 975,
      "end": 981,
      "loc": {
        "start": {
          "line": 38,
          "column": 19
        },
        "end": {
          "line": 38,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 981,
      "end": 982,
      "loc": {
        "start": {
          "line": 38,
          "column": 25
        },
        "end": {
          "line": 38,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "concat",
      "start": 982,
      "end": 988,
      "loc": {
        "start": {
          "line": 38,
          "column": 26
        },
        "end": {
          "line": 38,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 988,
      "end": 989,
      "loc": {
        "start": {
          "line": 38,
          "column": 32
        },
        "end": {
          "line": 38,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 989,
      "end": 990,
      "loc": {
        "start": {
          "line": 38,
          "column": 33
        },
        "end": {
          "line": 38,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 990,
      "end": 991,
      "loc": {
        "start": {
          "line": 38,
          "column": 34
        },
        "end": {
          "line": 38,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 991,
      "end": 992,
      "loc": {
        "start": {
          "line": 38,
          "column": 35
        },
        "end": {
          "line": 38,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 993,
      "end": 996,
      "loc": {
        "start": {
          "line": 38,
          "column": 37
        },
        "end": {
          "line": 38,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 997,
      "end": 1003,
      "loc": {
        "start": {
          "line": 38,
          "column": 41
        },
        "end": {
          "line": 38,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1003,
      "end": 1004,
      "loc": {
        "start": {
          "line": 38,
          "column": 47
        },
        "end": {
          "line": 38,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1004,
      "end": 1005,
      "loc": {
        "start": {
          "line": 38,
          "column": 48
        },
        "end": {
          "line": 38,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 1005,
      "end": 1006,
      "loc": {
        "start": {
          "line": 38,
          "column": 49
        },
        "end": {
          "line": 38,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1006,
      "end": 1007,
      "loc": {
        "start": {
          "line": 38,
          "column": 50
        },
        "end": {
          "line": 38,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1007,
      "end": 1008,
      "loc": {
        "start": {
          "line": 38,
          "column": 51
        },
        "end": {
          "line": 38,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1008,
      "end": 1009,
      "loc": {
        "start": {
          "line": 38,
          "column": 52
        },
        "end": {
          "line": 38,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "x",
      "start": 1010,
      "end": 1011,
      "loc": {
        "start": {
          "line": 38,
          "column": 54
        },
        "end": {
          "line": 38,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1011,
      "end": 1012,
      "loc": {
        "start": {
          "line": 38,
          "column": 55
        },
        "end": {
          "line": 38,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 1013,
      "end": 1017,
      "loc": {
        "start": {
          "line": 38,
          "column": 57
        },
        "end": {
          "line": 38,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1017,
      "end": 1018,
      "loc": {
        "start": {
          "line": 38,
          "column": 61
        },
        "end": {
          "line": 38,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1018,
      "end": 1019,
      "loc": {
        "start": {
          "line": 38,
          "column": 62
        },
        "end": {
          "line": 38,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1019,
      "end": 1020,
      "loc": {
        "start": {
          "line": 38,
          "column": 63
        },
        "end": {
          "line": 38,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1021,
      "end": 1022,
      "loc": {
        "start": {
          "line": 38,
          "column": 65
        },
        "end": {
          "line": 38,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1022,
      "end": 1023,
      "loc": {
        "start": {
          "line": 38,
          "column": 66
        },
        "end": {
          "line": 38,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1023,
      "end": 1024,
      "loc": {
        "start": {
          "line": 38,
          "column": 67
        },
        "end": {
          "line": 38,
          "column": 68
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step G",
      "start": 1030,
      "end": 1039,
      "loc": {
        "start": {
          "line": 40,
          "column": 4
        },
        "end": {
          "line": 40,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1044,
      "end": 1045,
      "loc": {
        "start": {
          "line": 41,
          "column": 4
        },
        "end": {
          "line": 41,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1046,
      "end": 1047,
      "loc": {
        "start": {
          "line": 41,
          "column": 6
        },
        "end": {
          "line": 41,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 1048,
      "end": 1058,
      "loc": {
        "start": {
          "line": 41,
          "column": 8
        },
        "end": {
          "line": 41,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1058,
      "end": 1059,
      "loc": {
        "start": {
          "line": 41,
          "column": 18
        },
        "end": {
          "line": 41,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1059,
      "end": 1060,
      "loc": {
        "start": {
          "line": 41,
          "column": 19
        },
        "end": {
          "line": 41,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1060,
      "end": 1061,
      "loc": {
        "start": {
          "line": 41,
          "column": 20
        },
        "end": {
          "line": 41,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1062,
      "end": 1063,
      "loc": {
        "start": {
          "line": 41,
          "column": 22
        },
        "end": {
          "line": 41,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1063,
      "end": 1064,
      "loc": {
        "start": {
          "line": 41,
          "column": 23
        },
        "end": {
          "line": 41,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1064,
      "end": 1065,
      "loc": {
        "start": {
          "line": 41,
          "column": 24
        },
        "end": {
          "line": 41,
          "column": 25
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H1/H2a, ignored as tlen === qlen (256 bit)",
      "start": 1071,
      "end": 1121,
      "loc": {
        "start": {
          "line": 43,
          "column": 4
        },
        "end": {
          "line": 43,
          "column": 54
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H2b",
      "start": 1126,
      "end": 1137,
      "loc": {
        "start": {
          "line": 44,
          "column": 4
        },
        "end": {
          "line": 44,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1142,
      "end": 1143,
      "loc": {
        "start": {
          "line": 45,
          "column": 4
        },
        "end": {
          "line": 45,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1144,
      "end": 1145,
      "loc": {
        "start": {
          "line": 45,
          "column": 6
        },
        "end": {
          "line": 45,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 1146,
      "end": 1156,
      "loc": {
        "start": {
          "line": 45,
          "column": 8
        },
        "end": {
          "line": 45,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1156,
      "end": 1157,
      "loc": {
        "start": {
          "line": 45,
          "column": 18
        },
        "end": {
          "line": 45,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1157,
      "end": 1158,
      "loc": {
        "start": {
          "line": 45,
          "column": 19
        },
        "end": {
          "line": 45,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1158,
      "end": 1159,
      "loc": {
        "start": {
          "line": 45,
          "column": 20
        },
        "end": {
          "line": 45,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1160,
      "end": 1161,
      "loc": {
        "start": {
          "line": 45,
          "column": 22
        },
        "end": {
          "line": 45,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1161,
      "end": 1162,
      "loc": {
        "start": {
          "line": 45,
          "column": 23
        },
        "end": {
          "line": 45,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1162,
      "end": 1163,
      "loc": {
        "start": {
          "line": 45,
          "column": 24
        },
        "end": {
          "line": 45,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 1169,
      "end": 1172,
      "loc": {
        "start": {
          "line": 47,
          "column": 4
        },
        "end": {
          "line": 47,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "T",
      "start": 1173,
      "end": 1174,
      "loc": {
        "start": {
          "line": 47,
          "column": 8
        },
        "end": {
          "line": 47,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1175,
      "end": 1176,
      "loc": {
        "start": {
          "line": 47,
          "column": 10
        },
        "end": {
          "line": 47,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "BigInteger",
      "start": 1177,
      "end": 1187,
      "loc": {
        "start": {
          "line": 47,
          "column": 12
        },
        "end": {
          "line": 47,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1187,
      "end": 1188,
      "loc": {
        "start": {
          "line": 47,
          "column": 22
        },
        "end": {
          "line": 47,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "fromBuffer",
      "start": 1188,
      "end": 1198,
      "loc": {
        "start": {
          "line": 47,
          "column": 23
        },
        "end": {
          "line": 47,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1198,
      "end": 1199,
      "loc": {
        "start": {
          "line": 47,
          "column": 33
        },
        "end": {
          "line": 47,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1199,
      "end": 1200,
      "loc": {
        "start": {
          "line": 47,
          "column": 34
        },
        "end": {
          "line": 47,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1200,
      "end": 1201,
      "loc": {
        "start": {
          "line": 47,
          "column": 35
        },
        "end": {
          "line": 47,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1201,
      "end": 1202,
      "loc": {
        "start": {
          "line": 47,
          "column": 36
        },
        "end": {
          "line": 47,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H3, repeat until T is within the interval [1, n - 1]",
      "start": 1208,
      "end": 1268,
      "loc": {
        "start": {
          "line": 49,
          "column": 4
        },
        "end": {
          "line": 49,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": "while",
        "keyword": "while",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": true,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "while",
      "start": 1273,
      "end": 1278,
      "loc": {
        "start": {
          "line": 50,
          "column": 4
        },
        "end": {
          "line": 50,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1279,
      "end": 1280,
      "loc": {
        "start": {
          "line": 50,
          "column": 10
        },
        "end": {
          "line": 50,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "T",
      "start": 1280,
      "end": 1281,
      "loc": {
        "start": {
          "line": 50,
          "column": 11
        },
        "end": {
          "line": 50,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1281,
      "end": 1282,
      "loc": {
        "start": {
          "line": 50,
          "column": 12
        },
        "end": {
          "line": 50,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 1282,
      "end": 1288,
      "loc": {
        "start": {
          "line": 50,
          "column": 13
        },
        "end": {
          "line": 50,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1288,
      "end": 1289,
      "loc": {
        "start": {
          "line": 50,
          "column": 19
        },
        "end": {
          "line": 50,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1289,
      "end": 1290,
      "loc": {
        "start": {
          "line": 50,
          "column": 20
        },
        "end": {
          "line": 50,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<=",
      "start": 1291,
      "end": 1293,
      "loc": {
        "start": {
          "line": 50,
          "column": 22
        },
        "end": {
          "line": 50,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1294,
      "end": 1295,
      "loc": {
        "start": {
          "line": 50,
          "column": 25
        },
        "end": {
          "line": 50,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 1296,
      "end": 1298,
      "loc": {
        "start": {
          "line": 50,
          "column": 27
        },
        "end": {
          "line": 50,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "T",
      "start": 1299,
      "end": 1300,
      "loc": {
        "start": {
          "line": 50,
          "column": 30
        },
        "end": {
          "line": 50,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1300,
      "end": 1301,
      "loc": {
        "start": {
          "line": 50,
          "column": 31
        },
        "end": {
          "line": 50,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "compareTo",
      "start": 1301,
      "end": 1310,
      "loc": {
        "start": {
          "line": 50,
          "column": 32
        },
        "end": {
          "line": 50,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1310,
      "end": 1311,
      "loc": {
        "start": {
          "line": 50,
          "column": 41
        },
        "end": {
          "line": 50,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 1311,
      "end": 1316,
      "loc": {
        "start": {
          "line": 50,
          "column": 42
        },
        "end": {
          "line": 50,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1316,
      "end": 1317,
      "loc": {
        "start": {
          "line": 50,
          "column": 47
        },
        "end": {
          "line": 50,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 1317,
      "end": 1318,
      "loc": {
        "start": {
          "line": 50,
          "column": 48
        },
        "end": {
          "line": 50,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1318,
      "end": 1319,
      "loc": {
        "start": {
          "line": 50,
          "column": 49
        },
        "end": {
          "line": 50,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": ">=",
      "start": 1320,
      "end": 1322,
      "loc": {
        "start": {
          "line": 50,
          "column": 51
        },
        "end": {
          "line": 50,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1323,
      "end": 1324,
      "loc": {
        "start": {
          "line": 50,
          "column": 54
        },
        "end": {
          "line": 50,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 1325,
      "end": 1327,
      "loc": {
        "start": {
          "line": 50,
          "column": 56
        },
        "end": {
          "line": 50,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "prefix",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "!",
      "start": 1328,
      "end": 1329,
      "loc": {
        "start": {
          "line": 50,
          "column": 59
        },
        "end": {
          "line": 50,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "checkSig",
      "start": 1329,
      "end": 1337,
      "loc": {
        "start": {
          "line": 50,
          "column": 60
        },
        "end": {
          "line": 50,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1337,
      "end": 1338,
      "loc": {
        "start": {
          "line": 50,
          "column": 68
        },
        "end": {
          "line": 50,
          "column": 69
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "T",
      "start": 1338,
      "end": 1339,
      "loc": {
        "start": {
          "line": 50,
          "column": 69
        },
        "end": {
          "line": 50,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1339,
      "end": 1340,
      "loc": {
        "start": {
          "line": 50,
          "column": 70
        },
        "end": {
          "line": 50,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1340,
      "end": 1341,
      "loc": {
        "start": {
          "line": 50,
          "column": 71
        },
        "end": {
          "line": 50,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1342,
      "end": 1343,
      "loc": {
        "start": {
          "line": 50,
          "column": 73
        },
        "end": {
          "line": 50,
          "column": 74
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1352,
      "end": 1353,
      "loc": {
        "start": {
          "line": 51,
          "column": 8
        },
        "end": {
          "line": 51,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1354,
      "end": 1355,
      "loc": {
        "start": {
          "line": 51,
          "column": 10
        },
        "end": {
          "line": 51,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 1356,
      "end": 1366,
      "loc": {
        "start": {
          "line": 51,
          "column": 12
        },
        "end": {
          "line": 51,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1366,
      "end": 1367,
      "loc": {
        "start": {
          "line": 51,
          "column": 22
        },
        "end": {
          "line": 51,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 1367,
      "end": 1373,
      "loc": {
        "start": {
          "line": 51,
          "column": 23
        },
        "end": {
          "line": 51,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1373,
      "end": 1374,
      "loc": {
        "start": {
          "line": 51,
          "column": 29
        },
        "end": {
          "line": 51,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "concat",
      "start": 1374,
      "end": 1380,
      "loc": {
        "start": {
          "line": 51,
          "column": 30
        },
        "end": {
          "line": 51,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1380,
      "end": 1381,
      "loc": {
        "start": {
          "line": 51,
          "column": 36
        },
        "end": {
          "line": 51,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1381,
      "end": 1382,
      "loc": {
        "start": {
          "line": 51,
          "column": 37
        },
        "end": {
          "line": 51,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1382,
      "end": 1383,
      "loc": {
        "start": {
          "line": 51,
          "column": 38
        },
        "end": {
          "line": 51,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1383,
      "end": 1384,
      "loc": {
        "start": {
          "line": 51,
          "column": 39
        },
        "end": {
          "line": 51,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 1385,
      "end": 1388,
      "loc": {
        "start": {
          "line": 51,
          "column": 41
        },
        "end": {
          "line": 51,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Buffer",
      "start": 1389,
      "end": 1395,
      "loc": {
        "start": {
          "line": 51,
          "column": 45
        },
        "end": {
          "line": 51,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1395,
      "end": 1396,
      "loc": {
        "start": {
          "line": 51,
          "column": 51
        },
        "end": {
          "line": 51,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1396,
      "end": 1397,
      "loc": {
        "start": {
          "line": 51,
          "column": 52
        },
        "end": {
          "line": 51,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 1397,
      "end": 1398,
      "loc": {
        "start": {
          "line": 51,
          "column": 53
        },
        "end": {
          "line": 51,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1398,
      "end": 1399,
      "loc": {
        "start": {
          "line": 51,
          "column": 54
        },
        "end": {
          "line": 51,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1399,
      "end": 1400,
      "loc": {
        "start": {
          "line": 51,
          "column": 55
        },
        "end": {
          "line": 51,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1400,
      "end": 1401,
      "loc": {
        "start": {
          "line": 51,
          "column": 56
        },
        "end": {
          "line": 51,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1401,
      "end": 1402,
      "loc": {
        "start": {
          "line": 51,
          "column": 57
        },
        "end": {
          "line": 51,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1402,
      "end": 1403,
      "loc": {
        "start": {
          "line": 51,
          "column": 58
        },
        "end": {
          "line": 51,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1404,
      "end": 1405,
      "loc": {
        "start": {
          "line": 51,
          "column": 60
        },
        "end": {
          "line": 51,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1405,
      "end": 1406,
      "loc": {
        "start": {
          "line": 51,
          "column": 61
        },
        "end": {
          "line": 51,
          "column": 62
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1406,
      "end": 1407,
      "loc": {
        "start": {
          "line": 51,
          "column": 62
        },
        "end": {
          "line": 51,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1416,
      "end": 1417,
      "loc": {
        "start": {
          "line": 52,
          "column": 8
        },
        "end": {
          "line": 52,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1418,
      "end": 1419,
      "loc": {
        "start": {
          "line": 52,
          "column": 10
        },
        "end": {
          "line": 52,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 1420,
      "end": 1430,
      "loc": {
        "start": {
          "line": 52,
          "column": 12
        },
        "end": {
          "line": 52,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1430,
      "end": 1431,
      "loc": {
        "start": {
          "line": 52,
          "column": 22
        },
        "end": {
          "line": 52,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1431,
      "end": 1432,
      "loc": {
        "start": {
          "line": 52,
          "column": 23
        },
        "end": {
          "line": 52,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1432,
      "end": 1433,
      "loc": {
        "start": {
          "line": 52,
          "column": 24
        },
        "end": {
          "line": 52,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1434,
      "end": 1435,
      "loc": {
        "start": {
          "line": 52,
          "column": 26
        },
        "end": {
          "line": 52,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1435,
      "end": 1436,
      "loc": {
        "start": {
          "line": 52,
          "column": 27
        },
        "end": {
          "line": 52,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1436,
      "end": 1437,
      "loc": {
        "start": {
          "line": 52,
          "column": 28
        },
        "end": {
          "line": 52,
          "column": 29
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H1/H2a, again, ignored as tlen === qlen (256 bit)",
      "start": 1447,
      "end": 1504,
      "loc": {
        "start": {
          "line": 54,
          "column": 8
        },
        "end": {
          "line": 54,
          "column": 65
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Step H2b again",
      "start": 1513,
      "end": 1530,
      "loc": {
        "start": {
          "line": 55,
          "column": 8
        },
        "end": {
          "line": 55,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1539,
      "end": 1540,
      "loc": {
        "start": {
          "line": 56,
          "column": 8
        },
        "end": {
          "line": 56,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1541,
      "end": 1542,
      "loc": {
        "start": {
          "line": 56,
          "column": 10
        },
        "end": {
          "line": 56,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "HmacSHA256",
      "start": 1543,
      "end": 1553,
      "loc": {
        "start": {
          "line": 56,
          "column": 12
        },
        "end": {
          "line": 56,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1553,
      "end": 1554,
      "loc": {
        "start": {
          "line": 56,
          "column": 22
        },
        "end": {
          "line": 56,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1554,
      "end": 1555,
      "loc": {
        "start": {
          "line": 56,
          "column": 23
        },
        "end": {
          "line": 56,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1555,
      "end": 1556,
      "loc": {
        "start": {
          "line": 56,
          "column": 24
        },
        "end": {
          "line": 56,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1557,
      "end": 1558,
      "loc": {
        "start": {
          "line": 56,
          "column": 26
        },
        "end": {
          "line": 56,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1558,
      "end": 1559,
      "loc": {
        "start": {
          "line": 56,
          "column": 27
        },
        "end": {
          "line": 56,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1559,
      "end": 1560,
      "loc": {
        "start": {
          "line": 56,
          "column": 28
        },
        "end": {
          "line": 56,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "T",
      "start": 1570,
      "end": 1571,
      "loc": {
        "start": {
          "line": 58,
          "column": 8
        },
        "end": {
          "line": 58,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1572,
      "end": 1573,
      "loc": {
        "start": {
          "line": 58,
          "column": 10
        },
        "end": {
          "line": 58,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "BigInteger",
      "start": 1574,
      "end": 1584,
      "loc": {
        "start": {
          "line": 58,
          "column": 12
        },
        "end": {
          "line": 58,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1584,
      "end": 1585,
      "loc": {
        "start": {
          "line": 58,
          "column": 22
        },
        "end": {
          "line": 58,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "fromBuffer",
      "start": 1585,
      "end": 1595,
      "loc": {
        "start": {
          "line": 58,
          "column": 23
        },
        "end": {
          "line": 58,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1595,
      "end": 1596,
      "loc": {
        "start": {
          "line": 58,
          "column": 33
        },
        "end": {
          "line": 58,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 1596,
      "end": 1597,
      "loc": {
        "start": {
          "line": 58,
          "column": 34
        },
        "end": {
          "line": 58,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1597,
      "end": 1598,
      "loc": {
        "start": {
          "line": 58,
          "column": 35
        },
        "end": {
          "line": 58,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1598,
      "end": 1599,
      "loc": {
        "start": {
          "line": 58,
          "column": 36
        },
        "end": {
          "line": 58,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1604,
      "end": 1605,
      "loc": {
        "start": {
          "line": 59,
          "column": 4
        },
        "end": {
          "line": 59,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 1611,
      "end": 1617,
      "loc": {
        "start": {
          "line": 61,
          "column": 4
        },
        "end": {
          "line": 61,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "T",
      "start": 1618,
      "end": 1619,
      "loc": {
        "start": {
          "line": 61,
          "column": 11
        },
        "end": {
          "line": 61,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1619,
      "end": 1620,
      "loc": {
        "start": {
          "line": 61,
          "column": 12
        },
        "end": {
          "line": 61,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1621,
      "end": 1622,
      "loc": {
        "start": {
          "line": 62,
          "column": 0
        },
        "end": {
          "line": 62,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 1624,
      "end": 1632,
      "loc": {
        "start": {
          "line": 64,
          "column": 0
        },
        "end": {
          "line": 64,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sign",
      "start": 1633,
      "end": 1637,
      "loc": {
        "start": {
          "line": 64,
          "column": 9
        },
        "end": {
          "line": 64,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1637,
      "end": 1638,
      "loc": {
        "start": {
          "line": 64,
          "column": 13
        },
        "end": {
          "line": 64,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 1638,
      "end": 1643,
      "loc": {
        "start": {
          "line": 64,
          "column": 14
        },
        "end": {
          "line": 64,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1643,
      "end": 1644,
      "loc": {
        "start": {
          "line": 64,
          "column": 19
        },
        "end": {
          "line": 64,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 1645,
      "end": 1649,
      "loc": {
        "start": {
          "line": 64,
          "column": 21
        },
        "end": {
          "line": 64,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1649,
      "end": 1650,
      "loc": {
        "start": {
          "line": 64,
          "column": 25
        },
        "end": {
          "line": 64,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "d",
      "start": 1651,
      "end": 1652,
      "loc": {
        "start": {
          "line": 64,
          "column": 27
        },
        "end": {
          "line": 64,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1652,
      "end": 1653,
      "loc": {
        "start": {
          "line": 64,
          "column": 28
        },
        "end": {
          "line": 64,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nonce",
      "start": 1654,
      "end": 1659,
      "loc": {
        "start": {
          "line": 64,
          "column": 30
        },
        "end": {
          "line": 64,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1659,
      "end": 1660,
      "loc": {
        "start": {
          "line": 64,
          "column": 35
        },
        "end": {
          "line": 64,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1661,
      "end": 1662,
      "loc": {
        "start": {
          "line": 64,
          "column": 37
        },
        "end": {
          "line": 64,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 1667,
      "end": 1672,
      "loc": {
        "start": {
          "line": 65,
          "column": 4
        },
        "end": {
          "line": 65,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 1673,
      "end": 1674,
      "loc": {
        "start": {
          "line": 65,
          "column": 10
        },
        "end": {
          "line": 65,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1675,
      "end": 1676,
      "loc": {
        "start": {
          "line": 65,
          "column": 12
        },
        "end": {
          "line": 65,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "BigInteger",
      "start": 1677,
      "end": 1687,
      "loc": {
        "start": {
          "line": 65,
          "column": 14
        },
        "end": {
          "line": 65,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1687,
      "end": 1688,
      "loc": {
        "start": {
          "line": 65,
          "column": 24
        },
        "end": {
          "line": 65,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "fromBuffer",
      "start": 1688,
      "end": 1698,
      "loc": {
        "start": {
          "line": 65,
          "column": 25
        },
        "end": {
          "line": 65,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1698,
      "end": 1699,
      "loc": {
        "start": {
          "line": 65,
          "column": 35
        },
        "end": {
          "line": 65,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 1699,
      "end": 1703,
      "loc": {
        "start": {
          "line": 65,
          "column": 36
        },
        "end": {
          "line": 65,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1703,
      "end": 1704,
      "loc": {
        "start": {
          "line": 65,
          "column": 40
        },
        "end": {
          "line": 65,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1704,
      "end": 1705,
      "loc": {
        "start": {
          "line": 65,
          "column": 41
        },
        "end": {
          "line": 65,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 1710,
      "end": 1715,
      "loc": {
        "start": {
          "line": 66,
          "column": 4
        },
        "end": {
          "line": 66,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 1716,
      "end": 1717,
      "loc": {
        "start": {
          "line": 66,
          "column": 10
        },
        "end": {
          "line": 66,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1718,
      "end": 1719,
      "loc": {
        "start": {
          "line": 66,
          "column": 12
        },
        "end": {
          "line": 66,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 1720,
      "end": 1725,
      "loc": {
        "start": {
          "line": 66,
          "column": 14
        },
        "end": {
          "line": 66,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1725,
      "end": 1726,
      "loc": {
        "start": {
          "line": 66,
          "column": 19
        },
        "end": {
          "line": 66,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 1726,
      "end": 1727,
      "loc": {
        "start": {
          "line": 66,
          "column": 20
        },
        "end": {
          "line": 66,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1727,
      "end": 1728,
      "loc": {
        "start": {
          "line": 66,
          "column": 21
        },
        "end": {
          "line": 66,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 1733,
      "end": 1738,
      "loc": {
        "start": {
          "line": 67,
          "column": 4
        },
        "end": {
          "line": 67,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 1739,
      "end": 1740,
      "loc": {
        "start": {
          "line": 67,
          "column": 10
        },
        "end": {
          "line": 67,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1741,
      "end": 1742,
      "loc": {
        "start": {
          "line": 67,
          "column": 12
        },
        "end": {
          "line": 67,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 1743,
      "end": 1748,
      "loc": {
        "start": {
          "line": 67,
          "column": 14
        },
        "end": {
          "line": 67,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1748,
      "end": 1749,
      "loc": {
        "start": {
          "line": 67,
          "column": 19
        },
        "end": {
          "line": 67,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 1749,
      "end": 1750,
      "loc": {
        "start": {
          "line": 67,
          "column": 20
        },
        "end": {
          "line": 67,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1750,
      "end": 1751,
      "loc": {
        "start": {
          "line": 67,
          "column": 21
        },
        "end": {
          "line": 67,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 1757,
      "end": 1760,
      "loc": {
        "start": {
          "line": 69,
          "column": 4
        },
        "end": {
          "line": 69,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 1761,
      "end": 1762,
      "loc": {
        "start": {
          "line": 69,
          "column": 8
        },
        "end": {
          "line": 69,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1762,
      "end": 1763,
      "loc": {
        "start": {
          "line": 69,
          "column": 9
        },
        "end": {
          "line": 69,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 1764,
      "end": 1765,
      "loc": {
        "start": {
          "line": 69,
          "column": 11
        },
        "end": {
          "line": 69,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1765,
      "end": 1766,
      "loc": {
        "start": {
          "line": 69,
          "column": 12
        },
        "end": {
          "line": 69,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "deterministicGenerateK",
      "start": 1772,
      "end": 1794,
      "loc": {
        "start": {
          "line": 71,
          "column": 4
        },
        "end": {
          "line": 71,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1794,
      "end": 1795,
      "loc": {
        "start": {
          "line": 71,
          "column": 26
        },
        "end": {
          "line": 71,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 1804,
      "end": 1809,
      "loc": {
        "start": {
          "line": 72,
          "column": 8
        },
        "end": {
          "line": 72,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1809,
      "end": 1810,
      "loc": {
        "start": {
          "line": 72,
          "column": 13
        },
        "end": {
          "line": 72,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 1819,
      "end": 1823,
      "loc": {
        "start": {
          "line": 73,
          "column": 8
        },
        "end": {
          "line": 73,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1823,
      "end": 1824,
      "loc": {
        "start": {
          "line": 73,
          "column": 12
        },
        "end": {
          "line": 73,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "d",
      "start": 1833,
      "end": 1834,
      "loc": {
        "start": {
          "line": 74,
          "column": 8
        },
        "end": {
          "line": 74,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1834,
      "end": 1835,
      "loc": {
        "start": {
          "line": 74,
          "column": 9
        },
        "end": {
          "line": 74,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 1844,
      "end": 1852,
      "loc": {
        "start": {
          "line": 75,
          "column": 8
        },
        "end": {
          "line": 75,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1852,
      "end": 1853,
      "loc": {
        "start": {
          "line": 75,
          "column": 16
        },
        "end": {
          "line": 75,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1853,
      "end": 1854,
      "loc": {
        "start": {
          "line": 75,
          "column": 17
        },
        "end": {
          "line": 75,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1854,
      "end": 1855,
      "loc": {
        "start": {
          "line": 75,
          "column": 18
        },
        "end": {
          "line": 75,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1856,
      "end": 1857,
      "loc": {
        "start": {
          "line": 75,
          "column": 20
        },
        "end": {
          "line": 75,
          "column": 21
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " find canonically valid signature",
      "start": 1870,
      "end": 1905,
      "loc": {
        "start": {
          "line": 76,
          "column": 12
        },
        "end": {
          "line": 76,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 1918,
      "end": 1921,
      "loc": {
        "start": {
          "line": 77,
          "column": 12
        },
        "end": {
          "line": 77,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 1922,
      "end": 1923,
      "loc": {
        "start": {
          "line": 77,
          "column": 16
        },
        "end": {
          "line": 77,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1924,
      "end": 1925,
      "loc": {
        "start": {
          "line": 77,
          "column": 18
        },
        "end": {
          "line": 77,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 1926,
      "end": 1927,
      "loc": {
        "start": {
          "line": 77,
          "column": 20
        },
        "end": {
          "line": 77,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1927,
      "end": 1928,
      "loc": {
        "start": {
          "line": 77,
          "column": 21
        },
        "end": {
          "line": 77,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 1928,
      "end": 1936,
      "loc": {
        "start": {
          "line": 77,
          "column": 22
        },
        "end": {
          "line": 77,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1936,
      "end": 1937,
      "loc": {
        "start": {
          "line": 77,
          "column": 30
        },
        "end": {
          "line": 77,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 1937,
      "end": 1938,
      "loc": {
        "start": {
          "line": 77,
          "column": 31
        },
        "end": {
          "line": 77,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1938,
      "end": 1939,
      "loc": {
        "start": {
          "line": 77,
          "column": 32
        },
        "end": {
          "line": 77,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1939,
      "end": 1940,
      "loc": {
        "start": {
          "line": 77,
          "column": 33
        },
        "end": {
          "line": 77,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1954,
      "end": 1956,
      "loc": {
        "start": {
          "line": 79,
          "column": 12
        },
        "end": {
          "line": 79,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1957,
      "end": 1958,
      "loc": {
        "start": {
          "line": 79,
          "column": 15
        },
        "end": {
          "line": 79,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 1958,
      "end": 1963,
      "loc": {
        "start": {
          "line": 79,
          "column": 16
        },
        "end": {
          "line": 79,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1963,
      "end": 1964,
      "loc": {
        "start": {
          "line": 79,
          "column": 21
        },
        "end": {
          "line": 79,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isInfinity",
      "start": 1964,
      "end": 1974,
      "loc": {
        "start": {
          "line": 79,
          "column": 22
        },
        "end": {
          "line": 79,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1974,
      "end": 1975,
      "loc": {
        "start": {
          "line": 79,
          "column": 32
        },
        "end": {
          "line": 79,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 1975,
      "end": 1976,
      "loc": {
        "start": {
          "line": 79,
          "column": 33
        },
        "end": {
          "line": 79,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1976,
      "end": 1977,
      "loc": {
        "start": {
          "line": 79,
          "column": 34
        },
        "end": {
          "line": 79,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1977,
      "end": 1978,
      "loc": {
        "start": {
          "line": 79,
          "column": 35
        },
        "end": {
          "line": 79,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 1979,
      "end": 1985,
      "loc": {
        "start": {
          "line": 79,
          "column": 37
        },
        "end": {
          "line": 79,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 1986,
      "end": 1991,
      "loc": {
        "start": {
          "line": 79,
          "column": 44
        },
        "end": {
          "line": 79,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1991,
      "end": 1992,
      "loc": {
        "start": {
          "line": 79,
          "column": 49
        },
        "end": {
          "line": 79,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2006,
      "end": 2007,
      "loc": {
        "start": {
          "line": 81,
          "column": 12
        },
        "end": {
          "line": 81,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2008,
      "end": 2009,
      "loc": {
        "start": {
          "line": 81,
          "column": 14
        },
        "end": {
          "line": 81,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 2010,
      "end": 2011,
      "loc": {
        "start": {
          "line": 81,
          "column": 16
        },
        "end": {
          "line": 81,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2011,
      "end": 2012,
      "loc": {
        "start": {
          "line": 81,
          "column": 17
        },
        "end": {
          "line": 81,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "affineX",
      "start": 2012,
      "end": 2019,
      "loc": {
        "start": {
          "line": 81,
          "column": 18
        },
        "end": {
          "line": 81,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2019,
      "end": 2020,
      "loc": {
        "start": {
          "line": 81,
          "column": 25
        },
        "end": {
          "line": 81,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mod",
      "start": 2020,
      "end": 2023,
      "loc": {
        "start": {
          "line": 81,
          "column": 26
        },
        "end": {
          "line": 81,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2023,
      "end": 2024,
      "loc": {
        "start": {
          "line": 81,
          "column": 29
        },
        "end": {
          "line": 81,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2024,
      "end": 2025,
      "loc": {
        "start": {
          "line": 81,
          "column": 30
        },
        "end": {
          "line": 81,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2025,
      "end": 2026,
      "loc": {
        "start": {
          "line": 81,
          "column": 31
        },
        "end": {
          "line": 81,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2026,
      "end": 2027,
      "loc": {
        "start": {
          "line": 81,
          "column": 32
        },
        "end": {
          "line": 81,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2040,
      "end": 2042,
      "loc": {
        "start": {
          "line": 82,
          "column": 12
        },
        "end": {
          "line": 82,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2043,
      "end": 2044,
      "loc": {
        "start": {
          "line": 82,
          "column": 15
        },
        "end": {
          "line": 82,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2044,
      "end": 2045,
      "loc": {
        "start": {
          "line": 82,
          "column": 16
        },
        "end": {
          "line": 82,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2045,
      "end": 2046,
      "loc": {
        "start": {
          "line": 82,
          "column": 17
        },
        "end": {
          "line": 82,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 2046,
      "end": 2052,
      "loc": {
        "start": {
          "line": 82,
          "column": 18
        },
        "end": {
          "line": 82,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2052,
      "end": 2053,
      "loc": {
        "start": {
          "line": 82,
          "column": 24
        },
        "end": {
          "line": 82,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2053,
      "end": 2054,
      "loc": {
        "start": {
          "line": 82,
          "column": 25
        },
        "end": {
          "line": 82,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 2055,
      "end": 2058,
      "loc": {
        "start": {
          "line": 82,
          "column": 27
        },
        "end": {
          "line": 82,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2059,
      "end": 2060,
      "loc": {
        "start": {
          "line": 82,
          "column": 31
        },
        "end": {
          "line": 82,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2060,
      "end": 2061,
      "loc": {
        "start": {
          "line": 82,
          "column": 32
        },
        "end": {
          "line": 82,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2062,
      "end": 2068,
      "loc": {
        "start": {
          "line": 82,
          "column": 34
        },
        "end": {
          "line": 82,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 2069,
      "end": 2074,
      "loc": {
        "start": {
          "line": 82,
          "column": 41
        },
        "end": {
          "line": 82,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2074,
      "end": 2075,
      "loc": {
        "start": {
          "line": 82,
          "column": 46
        },
        "end": {
          "line": 82,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2089,
      "end": 2090,
      "loc": {
        "start": {
          "line": 84,
          "column": 12
        },
        "end": {
          "line": 84,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2091,
      "end": 2092,
      "loc": {
        "start": {
          "line": 84,
          "column": 14
        },
        "end": {
          "line": 84,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "k",
      "start": 2093,
      "end": 2094,
      "loc": {
        "start": {
          "line": 84,
          "column": 16
        },
        "end": {
          "line": 84,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2111,
      "end": 2112,
      "loc": {
        "start": {
          "line": 85,
          "column": 16
        },
        "end": {
          "line": 85,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "modInverse",
      "start": 2112,
      "end": 2122,
      "loc": {
        "start": {
          "line": 85,
          "column": 17
        },
        "end": {
          "line": 85,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2122,
      "end": 2123,
      "loc": {
        "start": {
          "line": 85,
          "column": 27
        },
        "end": {
          "line": 85,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2123,
      "end": 2124,
      "loc": {
        "start": {
          "line": 85,
          "column": 28
        },
        "end": {
          "line": 85,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2124,
      "end": 2125,
      "loc": {
        "start": {
          "line": 85,
          "column": 29
        },
        "end": {
          "line": 85,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2142,
      "end": 2143,
      "loc": {
        "start": {
          "line": 86,
          "column": 16
        },
        "end": {
          "line": 86,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 2143,
      "end": 2151,
      "loc": {
        "start": {
          "line": 86,
          "column": 17
        },
        "end": {
          "line": 86,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2151,
      "end": 2152,
      "loc": {
        "start": {
          "line": 86,
          "column": 25
        },
        "end": {
          "line": 86,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 2152,
      "end": 2153,
      "loc": {
        "start": {
          "line": 86,
          "column": 26
        },
        "end": {
          "line": 86,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2153,
      "end": 2154,
      "loc": {
        "start": {
          "line": 86,
          "column": 27
        },
        "end": {
          "line": 86,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 2154,
      "end": 2157,
      "loc": {
        "start": {
          "line": 86,
          "column": 28
        },
        "end": {
          "line": 86,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2157,
      "end": 2158,
      "loc": {
        "start": {
          "line": 86,
          "column": 31
        },
        "end": {
          "line": 86,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "d",
      "start": 2158,
      "end": 2159,
      "loc": {
        "start": {
          "line": 86,
          "column": 32
        },
        "end": {
          "line": 86,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2159,
      "end": 2160,
      "loc": {
        "start": {
          "line": 86,
          "column": 33
        },
        "end": {
          "line": 86,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 2160,
      "end": 2168,
      "loc": {
        "start": {
          "line": 86,
          "column": 34
        },
        "end": {
          "line": 86,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2168,
      "end": 2169,
      "loc": {
        "start": {
          "line": 86,
          "column": 42
        },
        "end": {
          "line": 86,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2169,
      "end": 2170,
      "loc": {
        "start": {
          "line": 86,
          "column": 43
        },
        "end": {
          "line": 86,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2170,
      "end": 2171,
      "loc": {
        "start": {
          "line": 86,
          "column": 44
        },
        "end": {
          "line": 86,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2171,
      "end": 2172,
      "loc": {
        "start": {
          "line": 86,
          "column": 45
        },
        "end": {
          "line": 86,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2172,
      "end": 2173,
      "loc": {
        "start": {
          "line": 86,
          "column": 46
        },
        "end": {
          "line": 86,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2190,
      "end": 2191,
      "loc": {
        "start": {
          "line": 87,
          "column": 16
        },
        "end": {
          "line": 87,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mod",
      "start": 2191,
      "end": 2194,
      "loc": {
        "start": {
          "line": 87,
          "column": 17
        },
        "end": {
          "line": 87,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2194,
      "end": 2195,
      "loc": {
        "start": {
          "line": 87,
          "column": 20
        },
        "end": {
          "line": 87,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2195,
      "end": 2196,
      "loc": {
        "start": {
          "line": 87,
          "column": 21
        },
        "end": {
          "line": 87,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2196,
      "end": 2197,
      "loc": {
        "start": {
          "line": 87,
          "column": 22
        },
        "end": {
          "line": 87,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2197,
      "end": 2198,
      "loc": {
        "start": {
          "line": 87,
          "column": 23
        },
        "end": {
          "line": 87,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2211,
      "end": 2213,
      "loc": {
        "start": {
          "line": 88,
          "column": 12
        },
        "end": {
          "line": 88,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2214,
      "end": 2215,
      "loc": {
        "start": {
          "line": 88,
          "column": 15
        },
        "end": {
          "line": 88,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2215,
      "end": 2216,
      "loc": {
        "start": {
          "line": 88,
          "column": 16
        },
        "end": {
          "line": 88,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2216,
      "end": 2217,
      "loc": {
        "start": {
          "line": 88,
          "column": 17
        },
        "end": {
          "line": 88,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 2217,
      "end": 2223,
      "loc": {
        "start": {
          "line": 88,
          "column": 18
        },
        "end": {
          "line": 88,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2223,
      "end": 2224,
      "loc": {
        "start": {
          "line": 88,
          "column": 24
        },
        "end": {
          "line": 88,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2224,
      "end": 2225,
      "loc": {
        "start": {
          "line": 88,
          "column": 25
        },
        "end": {
          "line": 88,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 2226,
      "end": 2229,
      "loc": {
        "start": {
          "line": 88,
          "column": 27
        },
        "end": {
          "line": 88,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2230,
      "end": 2231,
      "loc": {
        "start": {
          "line": 88,
          "column": 31
        },
        "end": {
          "line": 88,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2231,
      "end": 2232,
      "loc": {
        "start": {
          "line": 88,
          "column": 32
        },
        "end": {
          "line": 88,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2233,
      "end": 2239,
      "loc": {
        "start": {
          "line": 88,
          "column": 34
        },
        "end": {
          "line": 88,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 2240,
      "end": 2245,
      "loc": {
        "start": {
          "line": 88,
          "column": 41
        },
        "end": {
          "line": 88,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2245,
      "end": 2246,
      "loc": {
        "start": {
          "line": 88,
          "column": 46
        },
        "end": {
          "line": 88,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2260,
      "end": 2266,
      "loc": {
        "start": {
          "line": 90,
          "column": 12
        },
        "end": {
          "line": 90,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "true",
        "keyword": "true",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "true",
      "start": 2267,
      "end": 2271,
      "loc": {
        "start": {
          "line": 90,
          "column": 19
        },
        "end": {
          "line": 90,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2271,
      "end": 2272,
      "loc": {
        "start": {
          "line": 90,
          "column": 23
        },
        "end": {
          "line": 90,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2281,
      "end": 2282,
      "loc": {
        "start": {
          "line": 91,
          "column": 8
        },
        "end": {
          "line": 91,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2282,
      "end": 2283,
      "loc": {
        "start": {
          "line": 91,
          "column": 9
        },
        "end": {
          "line": 91,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nonce",
      "start": 2292,
      "end": 2297,
      "loc": {
        "start": {
          "line": 92,
          "column": 8
        },
        "end": {
          "line": 92,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2302,
      "end": 2303,
      "loc": {
        "start": {
          "line": 93,
          "column": 4
        },
        "end": {
          "line": 93,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2303,
      "end": 2304,
      "loc": {
        "start": {
          "line": 93,
          "column": 5
        },
        "end": {
          "line": 93,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 2310,
      "end": 2313,
      "loc": {
        "start": {
          "line": 95,
          "column": 4
        },
        "end": {
          "line": 95,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "N_OVER_TWO",
      "start": 2314,
      "end": 2324,
      "loc": {
        "start": {
          "line": 95,
          "column": 8
        },
        "end": {
          "line": 95,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2325,
      "end": 2326,
      "loc": {
        "start": {
          "line": 95,
          "column": 19
        },
        "end": {
          "line": 95,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2327,
      "end": 2328,
      "loc": {
        "start": {
          "line": 95,
          "column": 21
        },
        "end": {
          "line": 95,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2328,
      "end": 2329,
      "loc": {
        "start": {
          "line": 95,
          "column": 22
        },
        "end": {
          "line": 95,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "shiftRight",
      "start": 2329,
      "end": 2339,
      "loc": {
        "start": {
          "line": 95,
          "column": 23
        },
        "end": {
          "line": 95,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2339,
      "end": 2340,
      "loc": {
        "start": {
          "line": 95,
          "column": 33
        },
        "end": {
          "line": 95,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 2340,
      "end": 2341,
      "loc": {
        "start": {
          "line": 95,
          "column": 34
        },
        "end": {
          "line": 95,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2341,
      "end": 2342,
      "loc": {
        "start": {
          "line": 95,
          "column": 35
        },
        "end": {
          "line": 95,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2342,
      "end": 2343,
      "loc": {
        "start": {
          "line": 95,
          "column": 36
        },
        "end": {
          "line": 95,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " enforce low S values, see bip62: 'low s values in signatures'",
      "start": 2349,
      "end": 2413,
      "loc": {
        "start": {
          "line": 97,
          "column": 4
        },
        "end": {
          "line": 97,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2418,
      "end": 2420,
      "loc": {
        "start": {
          "line": 98,
          "column": 4
        },
        "end": {
          "line": 98,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2421,
      "end": 2422,
      "loc": {
        "start": {
          "line": 98,
          "column": 7
        },
        "end": {
          "line": 98,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2422,
      "end": 2423,
      "loc": {
        "start": {
          "line": 98,
          "column": 8
        },
        "end": {
          "line": 98,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2423,
      "end": 2424,
      "loc": {
        "start": {
          "line": 98,
          "column": 9
        },
        "end": {
          "line": 98,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "compareTo",
      "start": 2424,
      "end": 2433,
      "loc": {
        "start": {
          "line": 98,
          "column": 10
        },
        "end": {
          "line": 98,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2433,
      "end": 2434,
      "loc": {
        "start": {
          "line": 98,
          "column": 19
        },
        "end": {
          "line": 98,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "N_OVER_TWO",
      "start": 2434,
      "end": 2444,
      "loc": {
        "start": {
          "line": 98,
          "column": 20
        },
        "end": {
          "line": 98,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2444,
      "end": 2445,
      "loc": {
        "start": {
          "line": 98,
          "column": 30
        },
        "end": {
          "line": 98,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": ">",
      "start": 2446,
      "end": 2447,
      "loc": {
        "start": {
          "line": 98,
          "column": 32
        },
        "end": {
          "line": 98,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2448,
      "end": 2449,
      "loc": {
        "start": {
          "line": 98,
          "column": 34
        },
        "end": {
          "line": 98,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2449,
      "end": 2450,
      "loc": {
        "start": {
          "line": 98,
          "column": 35
        },
        "end": {
          "line": 98,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2451,
      "end": 2452,
      "loc": {
        "start": {
          "line": 98,
          "column": 37
        },
        "end": {
          "line": 98,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2461,
      "end": 2462,
      "loc": {
        "start": {
          "line": 99,
          "column": 8
        },
        "end": {
          "line": 99,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2463,
      "end": 2464,
      "loc": {
        "start": {
          "line": 99,
          "column": 10
        },
        "end": {
          "line": 99,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2465,
      "end": 2466,
      "loc": {
        "start": {
          "line": 99,
          "column": 12
        },
        "end": {
          "line": 99,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2466,
      "end": 2467,
      "loc": {
        "start": {
          "line": 99,
          "column": 13
        },
        "end": {
          "line": 99,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "subtract",
      "start": 2467,
      "end": 2475,
      "loc": {
        "start": {
          "line": 99,
          "column": 14
        },
        "end": {
          "line": 99,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2475,
      "end": 2476,
      "loc": {
        "start": {
          "line": 99,
          "column": 22
        },
        "end": {
          "line": 99,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2476,
      "end": 2477,
      "loc": {
        "start": {
          "line": 99,
          "column": 23
        },
        "end": {
          "line": 99,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2477,
      "end": 2478,
      "loc": {
        "start": {
          "line": 99,
          "column": 24
        },
        "end": {
          "line": 99,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2478,
      "end": 2479,
      "loc": {
        "start": {
          "line": 99,
          "column": 25
        },
        "end": {
          "line": 99,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2484,
      "end": 2485,
      "loc": {
        "start": {
          "line": 100,
          "column": 4
        },
        "end": {
          "line": 100,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2491,
      "end": 2497,
      "loc": {
        "start": {
          "line": 102,
          "column": 4
        },
        "end": {
          "line": 102,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 2498,
      "end": 2501,
      "loc": {
        "start": {
          "line": 102,
          "column": 11
        },
        "end": {
          "line": 102,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "ECSignature",
      "start": 2502,
      "end": 2513,
      "loc": {
        "start": {
          "line": 102,
          "column": 15
        },
        "end": {
          "line": 102,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2513,
      "end": 2514,
      "loc": {
        "start": {
          "line": 102,
          "column": 26
        },
        "end": {
          "line": 102,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2514,
      "end": 2515,
      "loc": {
        "start": {
          "line": 102,
          "column": 27
        },
        "end": {
          "line": 102,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2515,
      "end": 2516,
      "loc": {
        "start": {
          "line": 102,
          "column": 28
        },
        "end": {
          "line": 102,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2517,
      "end": 2518,
      "loc": {
        "start": {
          "line": 102,
          "column": 30
        },
        "end": {
          "line": 102,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2518,
      "end": 2519,
      "loc": {
        "start": {
          "line": 102,
          "column": 31
        },
        "end": {
          "line": 102,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2519,
      "end": 2520,
      "loc": {
        "start": {
          "line": 102,
          "column": 32
        },
        "end": {
          "line": 102,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2521,
      "end": 2522,
      "loc": {
        "start": {
          "line": 103,
          "column": 0
        },
        "end": {
          "line": 103,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 2524,
      "end": 2532,
      "loc": {
        "start": {
          "line": 105,
          "column": 0
        },
        "end": {
          "line": 105,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verifyRaw",
      "start": 2533,
      "end": 2542,
      "loc": {
        "start": {
          "line": 105,
          "column": 9
        },
        "end": {
          "line": 105,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2542,
      "end": 2543,
      "loc": {
        "start": {
          "line": 105,
          "column": 18
        },
        "end": {
          "line": 105,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 2543,
      "end": 2548,
      "loc": {
        "start": {
          "line": 105,
          "column": 19
        },
        "end": {
          "line": 105,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2548,
      "end": 2549,
      "loc": {
        "start": {
          "line": 105,
          "column": 24
        },
        "end": {
          "line": 105,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 2550,
      "end": 2551,
      "loc": {
        "start": {
          "line": 105,
          "column": 26
        },
        "end": {
          "line": 105,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2551,
      "end": 2552,
      "loc": {
        "start": {
          "line": 105,
          "column": 27
        },
        "end": {
          "line": 105,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 2553,
      "end": 2562,
      "loc": {
        "start": {
          "line": 105,
          "column": 29
        },
        "end": {
          "line": 105,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2562,
      "end": 2563,
      "loc": {
        "start": {
          "line": 105,
          "column": 38
        },
        "end": {
          "line": 105,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 2564,
      "end": 2565,
      "loc": {
        "start": {
          "line": 105,
          "column": 40
        },
        "end": {
          "line": 105,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2565,
      "end": 2566,
      "loc": {
        "start": {
          "line": 105,
          "column": 41
        },
        "end": {
          "line": 105,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2567,
      "end": 2568,
      "loc": {
        "start": {
          "line": 105,
          "column": 43
        },
        "end": {
          "line": 105,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 2573,
      "end": 2576,
      "loc": {
        "start": {
          "line": 106,
          "column": 4
        },
        "end": {
          "line": 106,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2577,
      "end": 2578,
      "loc": {
        "start": {
          "line": 106,
          "column": 8
        },
        "end": {
          "line": 106,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2579,
      "end": 2580,
      "loc": {
        "start": {
          "line": 106,
          "column": 10
        },
        "end": {
          "line": 106,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 2581,
      "end": 2586,
      "loc": {
        "start": {
          "line": 106,
          "column": 12
        },
        "end": {
          "line": 106,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2586,
      "end": 2587,
      "loc": {
        "start": {
          "line": 106,
          "column": 17
        },
        "end": {
          "line": 106,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2587,
      "end": 2588,
      "loc": {
        "start": {
          "line": 106,
          "column": 18
        },
        "end": {
          "line": 106,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2588,
      "end": 2589,
      "loc": {
        "start": {
          "line": 106,
          "column": 19
        },
        "end": {
          "line": 106,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 2594,
      "end": 2597,
      "loc": {
        "start": {
          "line": 107,
          "column": 4
        },
        "end": {
          "line": 107,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 2598,
      "end": 2599,
      "loc": {
        "start": {
          "line": 107,
          "column": 8
        },
        "end": {
          "line": 107,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2600,
      "end": 2601,
      "loc": {
        "start": {
          "line": 107,
          "column": 10
        },
        "end": {
          "line": 107,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 2602,
      "end": 2607,
      "loc": {
        "start": {
          "line": 107,
          "column": 12
        },
        "end": {
          "line": 107,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2607,
      "end": 2608,
      "loc": {
        "start": {
          "line": 107,
          "column": 17
        },
        "end": {
          "line": 107,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 2608,
      "end": 2609,
      "loc": {
        "start": {
          "line": 107,
          "column": 18
        },
        "end": {
          "line": 107,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2609,
      "end": 2610,
      "loc": {
        "start": {
          "line": 107,
          "column": 19
        },
        "end": {
          "line": 107,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 2616,
      "end": 2619,
      "loc": {
        "start": {
          "line": 109,
          "column": 4
        },
        "end": {
          "line": 109,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2620,
      "end": 2621,
      "loc": {
        "start": {
          "line": 109,
          "column": 8
        },
        "end": {
          "line": 109,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2622,
      "end": 2623,
      "loc": {
        "start": {
          "line": 109,
          "column": 10
        },
        "end": {
          "line": 109,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 2624,
      "end": 2633,
      "loc": {
        "start": {
          "line": 109,
          "column": 12
        },
        "end": {
          "line": 109,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2633,
      "end": 2634,
      "loc": {
        "start": {
          "line": 109,
          "column": 21
        },
        "end": {
          "line": 109,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2634,
      "end": 2635,
      "loc": {
        "start": {
          "line": 109,
          "column": 22
        },
        "end": {
          "line": 109,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2635,
      "end": 2636,
      "loc": {
        "start": {
          "line": 109,
          "column": 23
        },
        "end": {
          "line": 109,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 2641,
      "end": 2644,
      "loc": {
        "start": {
          "line": 110,
          "column": 4
        },
        "end": {
          "line": 110,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2645,
      "end": 2646,
      "loc": {
        "start": {
          "line": 110,
          "column": 8
        },
        "end": {
          "line": 110,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2647,
      "end": 2648,
      "loc": {
        "start": {
          "line": 110,
          "column": 10
        },
        "end": {
          "line": 110,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 2649,
      "end": 2658,
      "loc": {
        "start": {
          "line": 110,
          "column": 12
        },
        "end": {
          "line": 110,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2658,
      "end": 2659,
      "loc": {
        "start": {
          "line": 110,
          "column": 21
        },
        "end": {
          "line": 110,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2659,
      "end": 2660,
      "loc": {
        "start": {
          "line": 110,
          "column": 22
        },
        "end": {
          "line": 110,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2660,
      "end": 2661,
      "loc": {
        "start": {
          "line": 110,
          "column": 23
        },
        "end": {
          "line": 110,
          "column": 24
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]",
      "start": 2667,
      "end": 2736,
      "loc": {
        "start": {
          "line": 112,
          "column": 4
        },
        "end": {
          "line": 112,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2741,
      "end": 2743,
      "loc": {
        "start": {
          "line": 113,
          "column": 4
        },
        "end": {
          "line": 113,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2744,
      "end": 2745,
      "loc": {
        "start": {
          "line": 113,
          "column": 7
        },
        "end": {
          "line": 113,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2745,
      "end": 2746,
      "loc": {
        "start": {
          "line": 113,
          "column": 8
        },
        "end": {
          "line": 113,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2746,
      "end": 2747,
      "loc": {
        "start": {
          "line": 113,
          "column": 9
        },
        "end": {
          "line": 113,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 2747,
      "end": 2753,
      "loc": {
        "start": {
          "line": 113,
          "column": 10
        },
        "end": {
          "line": 113,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2753,
      "end": 2754,
      "loc": {
        "start": {
          "line": 113,
          "column": 16
        },
        "end": {
          "line": 113,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2754,
      "end": 2755,
      "loc": {
        "start": {
          "line": 113,
          "column": 17
        },
        "end": {
          "line": 113,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<=",
      "start": 2756,
      "end": 2758,
      "loc": {
        "start": {
          "line": 113,
          "column": 19
        },
        "end": {
          "line": 113,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2759,
      "end": 2760,
      "loc": {
        "start": {
          "line": 113,
          "column": 22
        },
        "end": {
          "line": 113,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 2761,
      "end": 2763,
      "loc": {
        "start": {
          "line": 113,
          "column": 24
        },
        "end": {
          "line": 113,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 2764,
      "end": 2765,
      "loc": {
        "start": {
          "line": 113,
          "column": 27
        },
        "end": {
          "line": 113,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2765,
      "end": 2766,
      "loc": {
        "start": {
          "line": 113,
          "column": 28
        },
        "end": {
          "line": 113,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "compareTo",
      "start": 2766,
      "end": 2775,
      "loc": {
        "start": {
          "line": 113,
          "column": 29
        },
        "end": {
          "line": 113,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2775,
      "end": 2776,
      "loc": {
        "start": {
          "line": 113,
          "column": 38
        },
        "end": {
          "line": 113,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2776,
      "end": 2777,
      "loc": {
        "start": {
          "line": 113,
          "column": 39
        },
        "end": {
          "line": 113,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2777,
      "end": 2778,
      "loc": {
        "start": {
          "line": 113,
          "column": 40
        },
        "end": {
          "line": 113,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": ">=",
      "start": 2779,
      "end": 2781,
      "loc": {
        "start": {
          "line": 113,
          "column": 42
        },
        "end": {
          "line": 113,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2782,
      "end": 2783,
      "loc": {
        "start": {
          "line": 113,
          "column": 45
        },
        "end": {
          "line": 113,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2783,
      "end": 2784,
      "loc": {
        "start": {
          "line": 113,
          "column": 46
        },
        "end": {
          "line": 113,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2785,
      "end": 2791,
      "loc": {
        "start": {
          "line": 113,
          "column": 48
        },
        "end": {
          "line": 113,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 2792,
      "end": 2797,
      "loc": {
        "start": {
          "line": 113,
          "column": 55
        },
        "end": {
          "line": 113,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2797,
      "end": 2798,
      "loc": {
        "start": {
          "line": 113,
          "column": 60
        },
        "end": {
          "line": 113,
          "column": 61
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 2803,
      "end": 2805,
      "loc": {
        "start": {
          "line": 114,
          "column": 4
        },
        "end": {
          "line": 114,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2806,
      "end": 2807,
      "loc": {
        "start": {
          "line": 114,
          "column": 7
        },
        "end": {
          "line": 114,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2807,
      "end": 2808,
      "loc": {
        "start": {
          "line": 114,
          "column": 8
        },
        "end": {
          "line": 114,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2808,
      "end": 2809,
      "loc": {
        "start": {
          "line": 114,
          "column": 9
        },
        "end": {
          "line": 114,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 2809,
      "end": 2815,
      "loc": {
        "start": {
          "line": 114,
          "column": 10
        },
        "end": {
          "line": 114,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2815,
      "end": 2816,
      "loc": {
        "start": {
          "line": 114,
          "column": 16
        },
        "end": {
          "line": 114,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2816,
      "end": 2817,
      "loc": {
        "start": {
          "line": 114,
          "column": 17
        },
        "end": {
          "line": 114,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<=",
      "start": 2818,
      "end": 2820,
      "loc": {
        "start": {
          "line": 114,
          "column": 19
        },
        "end": {
          "line": 114,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2821,
      "end": 2822,
      "loc": {
        "start": {
          "line": 114,
          "column": 22
        },
        "end": {
          "line": 114,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 2823,
      "end": 2825,
      "loc": {
        "start": {
          "line": 114,
          "column": 24
        },
        "end": {
          "line": 114,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2826,
      "end": 2827,
      "loc": {
        "start": {
          "line": 114,
          "column": 27
        },
        "end": {
          "line": 114,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2827,
      "end": 2828,
      "loc": {
        "start": {
          "line": 114,
          "column": 28
        },
        "end": {
          "line": 114,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "compareTo",
      "start": 2828,
      "end": 2837,
      "loc": {
        "start": {
          "line": 114,
          "column": 29
        },
        "end": {
          "line": 114,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2837,
      "end": 2838,
      "loc": {
        "start": {
          "line": 114,
          "column": 38
        },
        "end": {
          "line": 114,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2838,
      "end": 2839,
      "loc": {
        "start": {
          "line": 114,
          "column": 39
        },
        "end": {
          "line": 114,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2839,
      "end": 2840,
      "loc": {
        "start": {
          "line": 114,
          "column": 40
        },
        "end": {
          "line": 114,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": ">=",
      "start": 2841,
      "end": 2843,
      "loc": {
        "start": {
          "line": 114,
          "column": 42
        },
        "end": {
          "line": 114,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 2844,
      "end": 2845,
      "loc": {
        "start": {
          "line": 114,
          "column": 45
        },
        "end": {
          "line": 114,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2845,
      "end": 2846,
      "loc": {
        "start": {
          "line": 114,
          "column": 46
        },
        "end": {
          "line": 114,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 2847,
      "end": 2853,
      "loc": {
        "start": {
          "line": 114,
          "column": 48
        },
        "end": {
          "line": 114,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 2854,
      "end": 2859,
      "loc": {
        "start": {
          "line": 114,
          "column": 55
        },
        "end": {
          "line": 114,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2859,
      "end": 2860,
      "loc": {
        "start": {
          "line": 114,
          "column": 60
        },
        "end": {
          "line": 114,
          "column": 61
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " c = s^-1 mod n",
      "start": 2866,
      "end": 2883,
      "loc": {
        "start": {
          "line": 116,
          "column": 4
        },
        "end": {
          "line": 116,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 2888,
      "end": 2891,
      "loc": {
        "start": {
          "line": 117,
          "column": 4
        },
        "end": {
          "line": 117,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "c",
      "start": 2892,
      "end": 2893,
      "loc": {
        "start": {
          "line": 117,
          "column": 8
        },
        "end": {
          "line": 117,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2894,
      "end": 2895,
      "loc": {
        "start": {
          "line": 117,
          "column": 10
        },
        "end": {
          "line": 117,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 2896,
      "end": 2897,
      "loc": {
        "start": {
          "line": 117,
          "column": 12
        },
        "end": {
          "line": 117,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2897,
      "end": 2898,
      "loc": {
        "start": {
          "line": 117,
          "column": 13
        },
        "end": {
          "line": 117,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "modInverse",
      "start": 2898,
      "end": 2908,
      "loc": {
        "start": {
          "line": 117,
          "column": 14
        },
        "end": {
          "line": 117,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2908,
      "end": 2909,
      "loc": {
        "start": {
          "line": 117,
          "column": 24
        },
        "end": {
          "line": 117,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 2909,
      "end": 2910,
      "loc": {
        "start": {
          "line": 117,
          "column": 25
        },
        "end": {
          "line": 117,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2910,
      "end": 2911,
      "loc": {
        "start": {
          "line": 117,
          "column": 26
        },
        "end": {
          "line": 117,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2911,
      "end": 2912,
      "loc": {
        "start": {
          "line": 117,
          "column": 27
        },
        "end": {
          "line": 117,
          "column": 28
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.4 Compute u1 = es^−1 mod n",
      "start": 2918,
      "end": 2951,
      "loc": {
        "start": {
          "line": 119,
          "column": 4
        },
        "end": {
          "line": 119,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "               u2 = rs^−1 mod n",
      "start": 2956,
      "end": 2989,
      "loc": {
        "start": {
          "line": 120,
          "column": 4
        },
        "end": {
          "line": 120,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 2994,
      "end": 2997,
      "loc": {
        "start": {
          "line": 121,
          "column": 4
        },
        "end": {
          "line": 121,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "u1",
      "start": 2998,
      "end": 3000,
      "loc": {
        "start": {
          "line": 121,
          "column": 8
        },
        "end": {
          "line": 121,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3001,
      "end": 3002,
      "loc": {
        "start": {
          "line": 121,
          "column": 11
        },
        "end": {
          "line": 121,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 3003,
      "end": 3004,
      "loc": {
        "start": {
          "line": 121,
          "column": 13
        },
        "end": {
          "line": 121,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3004,
      "end": 3005,
      "loc": {
        "start": {
          "line": 121,
          "column": 14
        },
        "end": {
          "line": 121,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 3005,
      "end": 3013,
      "loc": {
        "start": {
          "line": 121,
          "column": 15
        },
        "end": {
          "line": 121,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3013,
      "end": 3014,
      "loc": {
        "start": {
          "line": 121,
          "column": 23
        },
        "end": {
          "line": 121,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "c",
      "start": 3014,
      "end": 3015,
      "loc": {
        "start": {
          "line": 121,
          "column": 24
        },
        "end": {
          "line": 121,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3015,
      "end": 3016,
      "loc": {
        "start": {
          "line": 121,
          "column": 25
        },
        "end": {
          "line": 121,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3016,
      "end": 3017,
      "loc": {
        "start": {
          "line": 121,
          "column": 26
        },
        "end": {
          "line": 121,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mod",
      "start": 3017,
      "end": 3020,
      "loc": {
        "start": {
          "line": 121,
          "column": 27
        },
        "end": {
          "line": 121,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3020,
      "end": 3021,
      "loc": {
        "start": {
          "line": 121,
          "column": 30
        },
        "end": {
          "line": 121,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 3021,
      "end": 3022,
      "loc": {
        "start": {
          "line": 121,
          "column": 31
        },
        "end": {
          "line": 121,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3022,
      "end": 3023,
      "loc": {
        "start": {
          "line": 121,
          "column": 32
        },
        "end": {
          "line": 121,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3023,
      "end": 3024,
      "loc": {
        "start": {
          "line": 121,
          "column": 33
        },
        "end": {
          "line": 121,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 3029,
      "end": 3032,
      "loc": {
        "start": {
          "line": 122,
          "column": 4
        },
        "end": {
          "line": 122,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "u2",
      "start": 3033,
      "end": 3035,
      "loc": {
        "start": {
          "line": 122,
          "column": 8
        },
        "end": {
          "line": 122,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3036,
      "end": 3037,
      "loc": {
        "start": {
          "line": 122,
          "column": 11
        },
        "end": {
          "line": 122,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 3038,
      "end": 3039,
      "loc": {
        "start": {
          "line": 122,
          "column": 13
        },
        "end": {
          "line": 122,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3039,
      "end": 3040,
      "loc": {
        "start": {
          "line": 122,
          "column": 14
        },
        "end": {
          "line": 122,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 3040,
      "end": 3048,
      "loc": {
        "start": {
          "line": 122,
          "column": 15
        },
        "end": {
          "line": 122,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3048,
      "end": 3049,
      "loc": {
        "start": {
          "line": 122,
          "column": 23
        },
        "end": {
          "line": 122,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "c",
      "start": 3049,
      "end": 3050,
      "loc": {
        "start": {
          "line": 122,
          "column": 24
        },
        "end": {
          "line": 122,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3050,
      "end": 3051,
      "loc": {
        "start": {
          "line": 122,
          "column": 25
        },
        "end": {
          "line": 122,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3051,
      "end": 3052,
      "loc": {
        "start": {
          "line": 122,
          "column": 26
        },
        "end": {
          "line": 122,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mod",
      "start": 3052,
      "end": 3055,
      "loc": {
        "start": {
          "line": 122,
          "column": 27
        },
        "end": {
          "line": 122,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3055,
      "end": 3056,
      "loc": {
        "start": {
          "line": 122,
          "column": 30
        },
        "end": {
          "line": 122,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 3056,
      "end": 3057,
      "loc": {
        "start": {
          "line": 122,
          "column": 31
        },
        "end": {
          "line": 122,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3057,
      "end": 3058,
      "loc": {
        "start": {
          "line": 122,
          "column": 32
        },
        "end": {
          "line": 122,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3058,
      "end": 3059,
      "loc": {
        "start": {
          "line": 122,
          "column": 33
        },
        "end": {
          "line": 122,
          "column": 34
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.5 Compute R = (xR, yR) = u1G + u2Q",
      "start": 3065,
      "end": 3106,
      "loc": {
        "start": {
          "line": 124,
          "column": 4
        },
        "end": {
          "line": 124,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 3111,
      "end": 3114,
      "loc": {
        "start": {
          "line": 125,
          "column": 4
        },
        "end": {
          "line": 125,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "R",
      "start": 3115,
      "end": 3116,
      "loc": {
        "start": {
          "line": 125,
          "column": 8
        },
        "end": {
          "line": 125,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3117,
      "end": 3118,
      "loc": {
        "start": {
          "line": 125,
          "column": 10
        },
        "end": {
          "line": 125,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 3119,
      "end": 3120,
      "loc": {
        "start": {
          "line": 125,
          "column": 12
        },
        "end": {
          "line": 125,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3120,
      "end": 3121,
      "loc": {
        "start": {
          "line": 125,
          "column": 13
        },
        "end": {
          "line": 125,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiplyTwo",
      "start": 3121,
      "end": 3132,
      "loc": {
        "start": {
          "line": 125,
          "column": 14
        },
        "end": {
          "line": 125,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3132,
      "end": 3133,
      "loc": {
        "start": {
          "line": 125,
          "column": 25
        },
        "end": {
          "line": 125,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "u1",
      "start": 3133,
      "end": 3135,
      "loc": {
        "start": {
          "line": 125,
          "column": 26
        },
        "end": {
          "line": 125,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3135,
      "end": 3136,
      "loc": {
        "start": {
          "line": 125,
          "column": 28
        },
        "end": {
          "line": 125,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 3137,
      "end": 3138,
      "loc": {
        "start": {
          "line": 125,
          "column": 30
        },
        "end": {
          "line": 125,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3138,
      "end": 3139,
      "loc": {
        "start": {
          "line": 125,
          "column": 31
        },
        "end": {
          "line": 125,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "u2",
      "start": 3140,
      "end": 3142,
      "loc": {
        "start": {
          "line": 125,
          "column": 33
        },
        "end": {
          "line": 125,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3142,
      "end": 3143,
      "loc": {
        "start": {
          "line": 125,
          "column": 35
        },
        "end": {
          "line": 125,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3143,
      "end": 3144,
      "loc": {
        "start": {
          "line": 125,
          "column": 36
        },
        "end": {
          "line": 125,
          "column": 37
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.5 (cont.) Enforce R is not at infinity",
      "start": 3150,
      "end": 3195,
      "loc": {
        "start": {
          "line": 127,
          "column": 4
        },
        "end": {
          "line": 127,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 3200,
      "end": 3202,
      "loc": {
        "start": {
          "line": 128,
          "column": 4
        },
        "end": {
          "line": 128,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3203,
      "end": 3204,
      "loc": {
        "start": {
          "line": 128,
          "column": 7
        },
        "end": {
          "line": 128,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 3204,
      "end": 3209,
      "loc": {
        "start": {
          "line": 128,
          "column": 8
        },
        "end": {
          "line": 128,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3209,
      "end": 3210,
      "loc": {
        "start": {
          "line": 128,
          "column": 13
        },
        "end": {
          "line": 128,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isInfinity",
      "start": 3210,
      "end": 3220,
      "loc": {
        "start": {
          "line": 128,
          "column": 14
        },
        "end": {
          "line": 128,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3220,
      "end": 3221,
      "loc": {
        "start": {
          "line": 128,
          "column": 24
        },
        "end": {
          "line": 128,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "R",
      "start": 3221,
      "end": 3222,
      "loc": {
        "start": {
          "line": 128,
          "column": 25
        },
        "end": {
          "line": 128,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3222,
      "end": 3223,
      "loc": {
        "start": {
          "line": 128,
          "column": 26
        },
        "end": {
          "line": 128,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3223,
      "end": 3224,
      "loc": {
        "start": {
          "line": 128,
          "column": 27
        },
        "end": {
          "line": 128,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3225,
      "end": 3231,
      "loc": {
        "start": {
          "line": 128,
          "column": 29
        },
        "end": {
          "line": 128,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "false",
        "keyword": "false",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "false",
      "start": 3232,
      "end": 3237,
      "loc": {
        "start": {
          "line": 128,
          "column": 36
        },
        "end": {
          "line": 128,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3237,
      "end": 3238,
      "loc": {
        "start": {
          "line": 128,
          "column": 41
        },
        "end": {
          "line": 128,
          "column": 42
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.6 Convert the field element R.x to an integer",
      "start": 3244,
      "end": 3296,
      "loc": {
        "start": {
          "line": 130,
          "column": 4
        },
        "end": {
          "line": 130,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 3301,
      "end": 3304,
      "loc": {
        "start": {
          "line": 131,
          "column": 4
        },
        "end": {
          "line": 131,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "xR",
      "start": 3305,
      "end": 3307,
      "loc": {
        "start": {
          "line": 131,
          "column": 8
        },
        "end": {
          "line": 131,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3308,
      "end": 3309,
      "loc": {
        "start": {
          "line": 131,
          "column": 11
        },
        "end": {
          "line": 131,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "R",
      "start": 3310,
      "end": 3311,
      "loc": {
        "start": {
          "line": 131,
          "column": 13
        },
        "end": {
          "line": 131,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3311,
      "end": 3312,
      "loc": {
        "start": {
          "line": 131,
          "column": 14
        },
        "end": {
          "line": 131,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "affineX",
      "start": 3312,
      "end": 3319,
      "loc": {
        "start": {
          "line": 131,
          "column": 15
        },
        "end": {
          "line": 131,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3319,
      "end": 3320,
      "loc": {
        "start": {
          "line": 131,
          "column": 22
        },
        "end": {
          "line": 131,
          "column": 23
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.7 Set v = xR mod n",
      "start": 3326,
      "end": 3351,
      "loc": {
        "start": {
          "line": 133,
          "column": 4
        },
        "end": {
          "line": 133,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 3356,
      "end": 3359,
      "loc": {
        "start": {
          "line": 134,
          "column": 4
        },
        "end": {
          "line": 134,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 3360,
      "end": 3361,
      "loc": {
        "start": {
          "line": 134,
          "column": 8
        },
        "end": {
          "line": 134,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3362,
      "end": 3363,
      "loc": {
        "start": {
          "line": 134,
          "column": 10
        },
        "end": {
          "line": 134,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "xR",
      "start": 3364,
      "end": 3366,
      "loc": {
        "start": {
          "line": 134,
          "column": 12
        },
        "end": {
          "line": 134,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3366,
      "end": 3367,
      "loc": {
        "start": {
          "line": 134,
          "column": 14
        },
        "end": {
          "line": 134,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mod",
      "start": 3367,
      "end": 3370,
      "loc": {
        "start": {
          "line": 134,
          "column": 15
        },
        "end": {
          "line": 134,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3370,
      "end": 3371,
      "loc": {
        "start": {
          "line": 134,
          "column": 18
        },
        "end": {
          "line": 134,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 3371,
      "end": 3372,
      "loc": {
        "start": {
          "line": 134,
          "column": 19
        },
        "end": {
          "line": 134,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3372,
      "end": 3373,
      "loc": {
        "start": {
          "line": 134,
          "column": 20
        },
        "end": {
          "line": 134,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3373,
      "end": 3374,
      "loc": {
        "start": {
          "line": 134,
          "column": 21
        },
        "end": {
          "line": 134,
          "column": 22
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"",
      "start": 3380,
      "end": 3446,
      "loc": {
        "start": {
          "line": 136,
          "column": 4
        },
        "end": {
          "line": 136,
          "column": 70
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3451,
      "end": 3457,
      "loc": {
        "start": {
          "line": 137,
          "column": 4
        },
        "end": {
          "line": 137,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "v",
      "start": 3458,
      "end": 3459,
      "loc": {
        "start": {
          "line": 137,
          "column": 11
        },
        "end": {
          "line": 137,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3459,
      "end": 3460,
      "loc": {
        "start": {
          "line": 137,
          "column": 12
        },
        "end": {
          "line": 137,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "equals",
      "start": 3460,
      "end": 3466,
      "loc": {
        "start": {
          "line": 137,
          "column": 13
        },
        "end": {
          "line": 137,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3466,
      "end": 3467,
      "loc": {
        "start": {
          "line": 137,
          "column": 19
        },
        "end": {
          "line": 137,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 3467,
      "end": 3468,
      "loc": {
        "start": {
          "line": 137,
          "column": 20
        },
        "end": {
          "line": 137,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3468,
      "end": 3469,
      "loc": {
        "start": {
          "line": 137,
          "column": 21
        },
        "end": {
          "line": 137,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3469,
      "end": 3470,
      "loc": {
        "start": {
          "line": 137,
          "column": 22
        },
        "end": {
          "line": 137,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3471,
      "end": 3472,
      "loc": {
        "start": {
          "line": 138,
          "column": 0
        },
        "end": {
          "line": 138,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 3474,
      "end": 3482,
      "loc": {
        "start": {
          "line": 140,
          "column": 0
        },
        "end": {
          "line": 140,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verify",
      "start": 3483,
      "end": 3489,
      "loc": {
        "start": {
          "line": 140,
          "column": 9
        },
        "end": {
          "line": 140,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3489,
      "end": 3490,
      "loc": {
        "start": {
          "line": 140,
          "column": 15
        },
        "end": {
          "line": 140,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 3490,
      "end": 3495,
      "loc": {
        "start": {
          "line": 140,
          "column": 16
        },
        "end": {
          "line": 140,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3495,
      "end": 3496,
      "loc": {
        "start": {
          "line": 140,
          "column": 21
        },
        "end": {
          "line": 140,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 3497,
      "end": 3501,
      "loc": {
        "start": {
          "line": 140,
          "column": 23
        },
        "end": {
          "line": 140,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3501,
      "end": 3502,
      "loc": {
        "start": {
          "line": 140,
          "column": 27
        },
        "end": {
          "line": 140,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 3503,
      "end": 3512,
      "loc": {
        "start": {
          "line": 140,
          "column": 29
        },
        "end": {
          "line": 140,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3512,
      "end": 3513,
      "loc": {
        "start": {
          "line": 140,
          "column": 38
        },
        "end": {
          "line": 140,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 3514,
      "end": 3515,
      "loc": {
        "start": {
          "line": 140,
          "column": 40
        },
        "end": {
          "line": 140,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3515,
      "end": 3516,
      "loc": {
        "start": {
          "line": 140,
          "column": 41
        },
        "end": {
          "line": 140,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3517,
      "end": 3518,
      "loc": {
        "start": {
          "line": 140,
          "column": 43
        },
        "end": {
          "line": 140,
          "column": 44
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.2 H = Hash(M), already done by the user",
      "start": 3523,
      "end": 3569,
      "loc": {
        "start": {
          "line": 141,
          "column": 4
        },
        "end": {
          "line": 141,
          "column": 50
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4.3 e = H",
      "start": 3574,
      "end": 3588,
      "loc": {
        "start": {
          "line": 142,
          "column": 4
        },
        "end": {
          "line": 142,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 3593,
      "end": 3596,
      "loc": {
        "start": {
          "line": 143,
          "column": 4
        },
        "end": {
          "line": 143,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 3597,
      "end": 3598,
      "loc": {
        "start": {
          "line": 143,
          "column": 8
        },
        "end": {
          "line": 143,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3599,
      "end": 3600,
      "loc": {
        "start": {
          "line": 143,
          "column": 10
        },
        "end": {
          "line": 143,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "BigInteger",
      "start": 3601,
      "end": 3611,
      "loc": {
        "start": {
          "line": 143,
          "column": 12
        },
        "end": {
          "line": 143,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3611,
      "end": 3612,
      "loc": {
        "start": {
          "line": 143,
          "column": 22
        },
        "end": {
          "line": 143,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "fromBuffer",
      "start": 3612,
      "end": 3622,
      "loc": {
        "start": {
          "line": 143,
          "column": 23
        },
        "end": {
          "line": 143,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3622,
      "end": 3623,
      "loc": {
        "start": {
          "line": 143,
          "column": 33
        },
        "end": {
          "line": 143,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "hash",
      "start": 3623,
      "end": 3627,
      "loc": {
        "start": {
          "line": 143,
          "column": 34
        },
        "end": {
          "line": 143,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3627,
      "end": 3628,
      "loc": {
        "start": {
          "line": 143,
          "column": 38
        },
        "end": {
          "line": 143,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3628,
      "end": 3629,
      "loc": {
        "start": {
          "line": 143,
          "column": 39
        },
        "end": {
          "line": 143,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 3634,
      "end": 3640,
      "loc": {
        "start": {
          "line": 144,
          "column": 4
        },
        "end": {
          "line": 144,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verifyRaw",
      "start": 3641,
      "end": 3650,
      "loc": {
        "start": {
          "line": 144,
          "column": 11
        },
        "end": {
          "line": 144,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3650,
      "end": 3651,
      "loc": {
        "start": {
          "line": 144,
          "column": 20
        },
        "end": {
          "line": 144,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 3651,
      "end": 3656,
      "loc": {
        "start": {
          "line": 144,
          "column": 21
        },
        "end": {
          "line": 144,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3656,
      "end": 3657,
      "loc": {
        "start": {
          "line": 144,
          "column": 26
        },
        "end": {
          "line": 144,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 3658,
      "end": 3659,
      "loc": {
        "start": {
          "line": 144,
          "column": 28
        },
        "end": {
          "line": 144,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3659,
      "end": 3660,
      "loc": {
        "start": {
          "line": 144,
          "column": 29
        },
        "end": {
          "line": 144,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 3661,
      "end": 3670,
      "loc": {
        "start": {
          "line": 144,
          "column": 31
        },
        "end": {
          "line": 144,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3670,
      "end": 3671,
      "loc": {
        "start": {
          "line": 144,
          "column": 40
        },
        "end": {
          "line": 144,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 3672,
      "end": 3673,
      "loc": {
        "start": {
          "line": 144,
          "column": 42
        },
        "end": {
          "line": 144,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3673,
      "end": 3674,
      "loc": {
        "start": {
          "line": 144,
          "column": 43
        },
        "end": {
          "line": 144,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3674,
      "end": 3675,
      "loc": {
        "start": {
          "line": 144,
          "column": 44
        },
        "end": {
          "line": 144,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3676,
      "end": 3677,
      "loc": {
        "start": {
          "line": 145,
          "column": 0
        },
        "end": {
          "line": 145,
          "column": 1
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n ",
      "start": 3679,
      "end": 3880,
      "loc": {
        "start": {
          "line": 147,
          "column": 0
        },
        "end": {
          "line": 154,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 3881,
      "end": 3889,
      "loc": {
        "start": {
          "line": 155,
          "column": 0
        },
        "end": {
          "line": 155,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "recoverPubKey",
      "start": 3890,
      "end": 3903,
      "loc": {
        "start": {
          "line": 155,
          "column": 9
        },
        "end": {
          "line": 155,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3903,
      "end": 3904,
      "loc": {
        "start": {
          "line": 155,
          "column": 22
        },
        "end": {
          "line": 155,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 3904,
      "end": 3909,
      "loc": {
        "start": {
          "line": 155,
          "column": 23
        },
        "end": {
          "line": 155,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3909,
      "end": 3910,
      "loc": {
        "start": {
          "line": 155,
          "column": 28
        },
        "end": {
          "line": 155,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 3911,
      "end": 3912,
      "loc": {
        "start": {
          "line": 155,
          "column": 30
        },
        "end": {
          "line": 155,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3912,
      "end": 3913,
      "loc": {
        "start": {
          "line": 155,
          "column": 31
        },
        "end": {
          "line": 155,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 3914,
      "end": 3923,
      "loc": {
        "start": {
          "line": 155,
          "column": 33
        },
        "end": {
          "line": 155,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3923,
      "end": 3924,
      "loc": {
        "start": {
          "line": 155,
          "column": 42
        },
        "end": {
          "line": 155,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 3925,
      "end": 3926,
      "loc": {
        "start": {
          "line": 155,
          "column": 44
        },
        "end": {
          "line": 155,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3926,
      "end": 3927,
      "loc": {
        "start": {
          "line": 155,
          "column": 45
        },
        "end": {
          "line": 155,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3928,
      "end": 3929,
      "loc": {
        "start": {
          "line": 155,
          "column": 47
        },
        "end": {
          "line": 155,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "assert",
      "start": 3934,
      "end": 3940,
      "loc": {
        "start": {
          "line": 156,
          "column": 4
        },
        "end": {
          "line": 156,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3940,
      "end": 3941,
      "loc": {
        "start": {
          "line": 156,
          "column": 10
        },
        "end": {
          "line": 156,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "strictEqual",
      "start": 3941,
      "end": 3952,
      "loc": {
        "start": {
          "line": 156,
          "column": 11
        },
        "end": {
          "line": 156,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3952,
      "end": 3953,
      "loc": {
        "start": {
          "line": 156,
          "column": 22
        },
        "end": {
          "line": 156,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 3953,
      "end": 3954,
      "loc": {
        "start": {
          "line": 156,
          "column": 23
        },
        "end": {
          "line": 156,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 5,
        "updateContext": null
      },
      "value": "&",
      "start": 3955,
      "end": 3956,
      "loc": {
        "start": {
          "line": 156,
          "column": 25
        },
        "end": {
          "line": 156,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 3,
      "start": 3957,
      "end": 3958,
      "loc": {
        "start": {
          "line": 156,
          "column": 27
        },
        "end": {
          "line": 156,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3958,
      "end": 3959,
      "loc": {
        "start": {
          "line": 156,
          "column": 28
        },
        "end": {
          "line": 156,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 3960,
      "end": 3961,
      "loc": {
        "start": {
          "line": 156,
          "column": 30
        },
        "end": {
          "line": 156,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3961,
      "end": 3962,
      "loc": {
        "start": {
          "line": 156,
          "column": 31
        },
        "end": {
          "line": 156,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "Recovery param is more than two bits",
      "start": 3963,
      "end": 4001,
      "loc": {
        "start": {
          "line": 156,
          "column": 33
        },
        "end": {
          "line": 156,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4001,
      "end": 4002,
      "loc": {
        "start": {
          "line": 156,
          "column": 71
        },
        "end": {
          "line": 156,
          "column": 72
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4002,
      "end": 4003,
      "loc": {
        "start": {
          "line": 156,
          "column": 72
        },
        "end": {
          "line": 156,
          "column": 73
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4009,
      "end": 4012,
      "loc": {
        "start": {
          "line": 158,
          "column": 4
        },
        "end": {
          "line": 158,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4013,
      "end": 4014,
      "loc": {
        "start": {
          "line": 158,
          "column": 8
        },
        "end": {
          "line": 158,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4015,
      "end": 4016,
      "loc": {
        "start": {
          "line": 158,
          "column": 10
        },
        "end": {
          "line": 158,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 4017,
      "end": 4022,
      "loc": {
        "start": {
          "line": 158,
          "column": 12
        },
        "end": {
          "line": 158,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4022,
      "end": 4023,
      "loc": {
        "start": {
          "line": 158,
          "column": 17
        },
        "end": {
          "line": 158,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4023,
      "end": 4024,
      "loc": {
        "start": {
          "line": 158,
          "column": 18
        },
        "end": {
          "line": 158,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4024,
      "end": 4025,
      "loc": {
        "start": {
          "line": 158,
          "column": 19
        },
        "end": {
          "line": 158,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4030,
      "end": 4033,
      "loc": {
        "start": {
          "line": 159,
          "column": 4
        },
        "end": {
          "line": 159,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 4034,
      "end": 4035,
      "loc": {
        "start": {
          "line": 159,
          "column": 8
        },
        "end": {
          "line": 159,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4036,
      "end": 4037,
      "loc": {
        "start": {
          "line": 159,
          "column": 10
        },
        "end": {
          "line": 159,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 4038,
      "end": 4043,
      "loc": {
        "start": {
          "line": 159,
          "column": 12
        },
        "end": {
          "line": 159,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4043,
      "end": 4044,
      "loc": {
        "start": {
          "line": 159,
          "column": 17
        },
        "end": {
          "line": 159,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 4044,
      "end": 4045,
      "loc": {
        "start": {
          "line": 159,
          "column": 18
        },
        "end": {
          "line": 159,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4045,
      "end": 4046,
      "loc": {
        "start": {
          "line": 159,
          "column": 19
        },
        "end": {
          "line": 159,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4052,
      "end": 4055,
      "loc": {
        "start": {
          "line": 161,
          "column": 4
        },
        "end": {
          "line": 161,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4056,
      "end": 4057,
      "loc": {
        "start": {
          "line": 161,
          "column": 8
        },
        "end": {
          "line": 161,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4058,
      "end": 4059,
      "loc": {
        "start": {
          "line": 161,
          "column": 10
        },
        "end": {
          "line": 161,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 4060,
      "end": 4069,
      "loc": {
        "start": {
          "line": 161,
          "column": 12
        },
        "end": {
          "line": 161,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4069,
      "end": 4070,
      "loc": {
        "start": {
          "line": 161,
          "column": 21
        },
        "end": {
          "line": 161,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4070,
      "end": 4071,
      "loc": {
        "start": {
          "line": 161,
          "column": 22
        },
        "end": {
          "line": 161,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4071,
      "end": 4072,
      "loc": {
        "start": {
          "line": 161,
          "column": 23
        },
        "end": {
          "line": 161,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4077,
      "end": 4080,
      "loc": {
        "start": {
          "line": 162,
          "column": 4
        },
        "end": {
          "line": 162,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 4081,
      "end": 4082,
      "loc": {
        "start": {
          "line": 162,
          "column": 8
        },
        "end": {
          "line": 162,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4083,
      "end": 4084,
      "loc": {
        "start": {
          "line": 162,
          "column": 10
        },
        "end": {
          "line": 162,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 4085,
      "end": 4094,
      "loc": {
        "start": {
          "line": 162,
          "column": 12
        },
        "end": {
          "line": 162,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4094,
      "end": 4095,
      "loc": {
        "start": {
          "line": 162,
          "column": 21
        },
        "end": {
          "line": 162,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 4095,
      "end": 4096,
      "loc": {
        "start": {
          "line": 162,
          "column": 22
        },
        "end": {
          "line": 162,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4096,
      "end": 4097,
      "loc": {
        "start": {
          "line": 162,
          "column": 23
        },
        "end": {
          "line": 162,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "assert",
      "start": 4103,
      "end": 4109,
      "loc": {
        "start": {
          "line": 164,
          "column": 4
        },
        "end": {
          "line": 164,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4109,
      "end": 4110,
      "loc": {
        "start": {
          "line": 164,
          "column": 10
        },
        "end": {
          "line": 164,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4110,
      "end": 4111,
      "loc": {
        "start": {
          "line": 164,
          "column": 11
        },
        "end": {
          "line": 164,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4111,
      "end": 4112,
      "loc": {
        "start": {
          "line": 164,
          "column": 12
        },
        "end": {
          "line": 164,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 4112,
      "end": 4118,
      "loc": {
        "start": {
          "line": 164,
          "column": 13
        },
        "end": {
          "line": 164,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4118,
      "end": 4119,
      "loc": {
        "start": {
          "line": 164,
          "column": 19
        },
        "end": {
          "line": 164,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4119,
      "end": 4120,
      "loc": {
        "start": {
          "line": 164,
          "column": 20
        },
        "end": {
          "line": 164,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": ">",
      "start": 4121,
      "end": 4122,
      "loc": {
        "start": {
          "line": 164,
          "column": 22
        },
        "end": {
          "line": 164,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 4123,
      "end": 4124,
      "loc": {
        "start": {
          "line": 164,
          "column": 24
        },
        "end": {
          "line": 164,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 4125,
      "end": 4127,
      "loc": {
        "start": {
          "line": 164,
          "column": 26
        },
        "end": {
          "line": 164,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4128,
      "end": 4129,
      "loc": {
        "start": {
          "line": 164,
          "column": 29
        },
        "end": {
          "line": 164,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4129,
      "end": 4130,
      "loc": {
        "start": {
          "line": 164,
          "column": 30
        },
        "end": {
          "line": 164,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "compareTo",
      "start": 4130,
      "end": 4139,
      "loc": {
        "start": {
          "line": 164,
          "column": 31
        },
        "end": {
          "line": 164,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4139,
      "end": 4140,
      "loc": {
        "start": {
          "line": 164,
          "column": 40
        },
        "end": {
          "line": 164,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4140,
      "end": 4141,
      "loc": {
        "start": {
          "line": 164,
          "column": 41
        },
        "end": {
          "line": 164,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4141,
      "end": 4142,
      "loc": {
        "start": {
          "line": 164,
          "column": 42
        },
        "end": {
          "line": 164,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<",
      "start": 4143,
      "end": 4144,
      "loc": {
        "start": {
          "line": 164,
          "column": 44
        },
        "end": {
          "line": 164,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 4145,
      "end": 4146,
      "loc": {
        "start": {
          "line": 164,
          "column": 46
        },
        "end": {
          "line": 164,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4146,
      "end": 4147,
      "loc": {
        "start": {
          "line": 164,
          "column": 47
        },
        "end": {
          "line": 164,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "Invalid r value",
      "start": 4148,
      "end": 4165,
      "loc": {
        "start": {
          "line": 164,
          "column": 49
        },
        "end": {
          "line": 164,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4165,
      "end": 4166,
      "loc": {
        "start": {
          "line": 164,
          "column": 66
        },
        "end": {
          "line": 164,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4166,
      "end": 4167,
      "loc": {
        "start": {
          "line": 164,
          "column": 67
        },
        "end": {
          "line": 164,
          "column": 68
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "assert",
      "start": 4172,
      "end": 4178,
      "loc": {
        "start": {
          "line": 165,
          "column": 4
        },
        "end": {
          "line": 165,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4178,
      "end": 4179,
      "loc": {
        "start": {
          "line": 165,
          "column": 10
        },
        "end": {
          "line": 165,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 4179,
      "end": 4180,
      "loc": {
        "start": {
          "line": 165,
          "column": 11
        },
        "end": {
          "line": 165,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4180,
      "end": 4181,
      "loc": {
        "start": {
          "line": 165,
          "column": 12
        },
        "end": {
          "line": 165,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signum",
      "start": 4181,
      "end": 4187,
      "loc": {
        "start": {
          "line": 165,
          "column": 13
        },
        "end": {
          "line": 165,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4187,
      "end": 4188,
      "loc": {
        "start": {
          "line": 165,
          "column": 19
        },
        "end": {
          "line": 165,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4188,
      "end": 4189,
      "loc": {
        "start": {
          "line": 165,
          "column": 20
        },
        "end": {
          "line": 165,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": ">",
      "start": 4190,
      "end": 4191,
      "loc": {
        "start": {
          "line": 165,
          "column": 22
        },
        "end": {
          "line": 165,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 4192,
      "end": 4193,
      "loc": {
        "start": {
          "line": 165,
          "column": 24
        },
        "end": {
          "line": 165,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 4194,
      "end": 4196,
      "loc": {
        "start": {
          "line": 165,
          "column": 26
        },
        "end": {
          "line": 165,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 4197,
      "end": 4198,
      "loc": {
        "start": {
          "line": 165,
          "column": 29
        },
        "end": {
          "line": 165,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4198,
      "end": 4199,
      "loc": {
        "start": {
          "line": 165,
          "column": 30
        },
        "end": {
          "line": 165,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "compareTo",
      "start": 4199,
      "end": 4208,
      "loc": {
        "start": {
          "line": 165,
          "column": 31
        },
        "end": {
          "line": 165,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4208,
      "end": 4209,
      "loc": {
        "start": {
          "line": 165,
          "column": 40
        },
        "end": {
          "line": 165,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4209,
      "end": 4210,
      "loc": {
        "start": {
          "line": 165,
          "column": 41
        },
        "end": {
          "line": 165,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4210,
      "end": 4211,
      "loc": {
        "start": {
          "line": 165,
          "column": 42
        },
        "end": {
          "line": 165,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<",
      "start": 4212,
      "end": 4213,
      "loc": {
        "start": {
          "line": 165,
          "column": 44
        },
        "end": {
          "line": 165,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 4214,
      "end": 4215,
      "loc": {
        "start": {
          "line": 165,
          "column": 46
        },
        "end": {
          "line": 165,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4215,
      "end": 4216,
      "loc": {
        "start": {
          "line": 165,
          "column": 47
        },
        "end": {
          "line": 165,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "Invalid s value",
      "start": 4217,
      "end": 4234,
      "loc": {
        "start": {
          "line": 165,
          "column": 49
        },
        "end": {
          "line": 165,
          "column": 66
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4234,
      "end": 4235,
      "loc": {
        "start": {
          "line": 165,
          "column": 66
        },
        "end": {
          "line": 165,
          "column": 67
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4235,
      "end": 4236,
      "loc": {
        "start": {
          "line": 165,
          "column": 67
        },
        "end": {
          "line": 165,
          "column": 68
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " A set LSB signifies that the y-coordinate is odd",
      "start": 4242,
      "end": 4293,
      "loc": {
        "start": {
          "line": 167,
          "column": 4
        },
        "end": {
          "line": 167,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4298,
      "end": 4301,
      "loc": {
        "start": {
          "line": 168,
          "column": 4
        },
        "end": {
          "line": 168,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isYOdd",
      "start": 4302,
      "end": 4308,
      "loc": {
        "start": {
          "line": 168,
          "column": 8
        },
        "end": {
          "line": 168,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4309,
      "end": 4310,
      "loc": {
        "start": {
          "line": 168,
          "column": 15
        },
        "end": {
          "line": 168,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 4311,
      "end": 4312,
      "loc": {
        "start": {
          "line": 168,
          "column": 17
        },
        "end": {
          "line": 168,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 5,
        "updateContext": null
      },
      "value": "&",
      "start": 4313,
      "end": 4314,
      "loc": {
        "start": {
          "line": 168,
          "column": 19
        },
        "end": {
          "line": 168,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 4315,
      "end": 4316,
      "loc": {
        "start": {
          "line": 168,
          "column": 21
        },
        "end": {
          "line": 168,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4316,
      "end": 4317,
      "loc": {
        "start": {
          "line": 168,
          "column": 22
        },
        "end": {
          "line": 168,
          "column": 23
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " The more significant bit specifies whether we should use the",
      "start": 4323,
      "end": 4386,
      "loc": {
        "start": {
          "line": 170,
          "column": 4
        },
        "end": {
          "line": 170,
          "column": 67
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " first or second candidate key.",
      "start": 4391,
      "end": 4424,
      "loc": {
        "start": {
          "line": 171,
          "column": 4
        },
        "end": {
          "line": 171,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4429,
      "end": 4432,
      "loc": {
        "start": {
          "line": 172,
          "column": 4
        },
        "end": {
          "line": 172,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isSecondKey",
      "start": 4433,
      "end": 4444,
      "loc": {
        "start": {
          "line": 172,
          "column": 8
        },
        "end": {
          "line": 172,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4445,
      "end": 4446,
      "loc": {
        "start": {
          "line": 172,
          "column": 20
        },
        "end": {
          "line": 172,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 4447,
      "end": 4448,
      "loc": {
        "start": {
          "line": 172,
          "column": 22
        },
        "end": {
          "line": 172,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "<</>>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 8,
        "updateContext": null
      },
      "value": ">>",
      "start": 4449,
      "end": 4451,
      "loc": {
        "start": {
          "line": 172,
          "column": 24
        },
        "end": {
          "line": 172,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 1,
      "start": 4452,
      "end": 4453,
      "loc": {
        "start": {
          "line": 172,
          "column": 27
        },
        "end": {
          "line": 172,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4453,
      "end": 4454,
      "loc": {
        "start": {
          "line": 172,
          "column": 28
        },
        "end": {
          "line": 172,
          "column": 29
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.1 Let x = r + jn",
      "start": 4460,
      "end": 4481,
      "loc": {
        "start": {
          "line": 174,
          "column": 4
        },
        "end": {
          "line": 174,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4486,
      "end": 4489,
      "loc": {
        "start": {
          "line": 175,
          "column": 4
        },
        "end": {
          "line": 175,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "x",
      "start": 4490,
      "end": 4491,
      "loc": {
        "start": {
          "line": 175,
          "column": 8
        },
        "end": {
          "line": 175,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4492,
      "end": 4493,
      "loc": {
        "start": {
          "line": 175,
          "column": 10
        },
        "end": {
          "line": 175,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isSecondKey",
      "start": 4494,
      "end": 4505,
      "loc": {
        "start": {
          "line": 175,
          "column": 12
        },
        "end": {
          "line": 175,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "?",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4506,
      "end": 4507,
      "loc": {
        "start": {
          "line": 175,
          "column": 24
        },
        "end": {
          "line": 175,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4508,
      "end": 4509,
      "loc": {
        "start": {
          "line": 175,
          "column": 26
        },
        "end": {
          "line": 175,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4509,
      "end": 4510,
      "loc": {
        "start": {
          "line": 175,
          "column": 27
        },
        "end": {
          "line": 175,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "add",
      "start": 4510,
      "end": 4513,
      "loc": {
        "start": {
          "line": 175,
          "column": 28
        },
        "end": {
          "line": 175,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4513,
      "end": 4514,
      "loc": {
        "start": {
          "line": 175,
          "column": 31
        },
        "end": {
          "line": 175,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4514,
      "end": 4515,
      "loc": {
        "start": {
          "line": 175,
          "column": 32
        },
        "end": {
          "line": 175,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4515,
      "end": 4516,
      "loc": {
        "start": {
          "line": 175,
          "column": 33
        },
        "end": {
          "line": 175,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4517,
      "end": 4518,
      "loc": {
        "start": {
          "line": 175,
          "column": 35
        },
        "end": {
          "line": 175,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4519,
      "end": 4520,
      "loc": {
        "start": {
          "line": 175,
          "column": 37
        },
        "end": {
          "line": 175,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4520,
      "end": 4521,
      "loc": {
        "start": {
          "line": 175,
          "column": 38
        },
        "end": {
          "line": 175,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4526,
      "end": 4529,
      "loc": {
        "start": {
          "line": 176,
          "column": 4
        },
        "end": {
          "line": 176,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "R",
      "start": 4530,
      "end": 4531,
      "loc": {
        "start": {
          "line": 176,
          "column": 8
        },
        "end": {
          "line": 176,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4532,
      "end": 4533,
      "loc": {
        "start": {
          "line": 176,
          "column": 10
        },
        "end": {
          "line": 176,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 4534,
      "end": 4539,
      "loc": {
        "start": {
          "line": 176,
          "column": 12
        },
        "end": {
          "line": 176,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4539,
      "end": 4540,
      "loc": {
        "start": {
          "line": 176,
          "column": 17
        },
        "end": {
          "line": 176,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "pointFromX",
      "start": 4540,
      "end": 4550,
      "loc": {
        "start": {
          "line": 176,
          "column": 18
        },
        "end": {
          "line": 176,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4550,
      "end": 4551,
      "loc": {
        "start": {
          "line": 176,
          "column": 28
        },
        "end": {
          "line": 176,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isYOdd",
      "start": 4551,
      "end": 4557,
      "loc": {
        "start": {
          "line": 176,
          "column": 29
        },
        "end": {
          "line": 176,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4557,
      "end": 4558,
      "loc": {
        "start": {
          "line": 176,
          "column": 35
        },
        "end": {
          "line": 176,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "x",
      "start": 4559,
      "end": 4560,
      "loc": {
        "start": {
          "line": 176,
          "column": 37
        },
        "end": {
          "line": 176,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4560,
      "end": 4561,
      "loc": {
        "start": {
          "line": 176,
          "column": 38
        },
        "end": {
          "line": 176,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4561,
      "end": 4562,
      "loc": {
        "start": {
          "line": 176,
          "column": 39
        },
        "end": {
          "line": 176,
          "column": 40
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.4 Check that nR is at infinity",
      "start": 4568,
      "end": 4603,
      "loc": {
        "start": {
          "line": 178,
          "column": 4
        },
        "end": {
          "line": 178,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4608,
      "end": 4611,
      "loc": {
        "start": {
          "line": 179,
          "column": 4
        },
        "end": {
          "line": 179,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nR",
      "start": 4612,
      "end": 4614,
      "loc": {
        "start": {
          "line": 179,
          "column": 8
        },
        "end": {
          "line": 179,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4615,
      "end": 4616,
      "loc": {
        "start": {
          "line": 179,
          "column": 11
        },
        "end": {
          "line": 179,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "R",
      "start": 4617,
      "end": 4618,
      "loc": {
        "start": {
          "line": 179,
          "column": 13
        },
        "end": {
          "line": 179,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4618,
      "end": 4619,
      "loc": {
        "start": {
          "line": 179,
          "column": 14
        },
        "end": {
          "line": 179,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 4619,
      "end": 4627,
      "loc": {
        "start": {
          "line": 179,
          "column": 15
        },
        "end": {
          "line": 179,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4627,
      "end": 4628,
      "loc": {
        "start": {
          "line": 179,
          "column": 23
        },
        "end": {
          "line": 179,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4628,
      "end": 4629,
      "loc": {
        "start": {
          "line": 179,
          "column": 24
        },
        "end": {
          "line": 179,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4629,
      "end": 4630,
      "loc": {
        "start": {
          "line": 179,
          "column": 25
        },
        "end": {
          "line": 179,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4630,
      "end": 4631,
      "loc": {
        "start": {
          "line": 179,
          "column": 26
        },
        "end": {
          "line": 179,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "assert",
      "start": 4636,
      "end": 4642,
      "loc": {
        "start": {
          "line": 180,
          "column": 4
        },
        "end": {
          "line": 180,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4642,
      "end": 4643,
      "loc": {
        "start": {
          "line": 180,
          "column": 10
        },
        "end": {
          "line": 180,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 4643,
      "end": 4648,
      "loc": {
        "start": {
          "line": 180,
          "column": 11
        },
        "end": {
          "line": 180,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4648,
      "end": 4649,
      "loc": {
        "start": {
          "line": 180,
          "column": 16
        },
        "end": {
          "line": 180,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isInfinity",
      "start": 4649,
      "end": 4659,
      "loc": {
        "start": {
          "line": 180,
          "column": 17
        },
        "end": {
          "line": 180,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4659,
      "end": 4660,
      "loc": {
        "start": {
          "line": 180,
          "column": 27
        },
        "end": {
          "line": 180,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "nR",
      "start": 4660,
      "end": 4662,
      "loc": {
        "start": {
          "line": 180,
          "column": 28
        },
        "end": {
          "line": 180,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4662,
      "end": 4663,
      "loc": {
        "start": {
          "line": 180,
          "column": 30
        },
        "end": {
          "line": 180,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4663,
      "end": 4664,
      "loc": {
        "start": {
          "line": 180,
          "column": 31
        },
        "end": {
          "line": 180,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "nR is not a valid curve point",
      "start": 4665,
      "end": 4696,
      "loc": {
        "start": {
          "line": 180,
          "column": 33
        },
        "end": {
          "line": 180,
          "column": 64
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4696,
      "end": 4697,
      "loc": {
        "start": {
          "line": 180,
          "column": 64
        },
        "end": {
          "line": 180,
          "column": 65
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4697,
      "end": 4698,
      "loc": {
        "start": {
          "line": 180,
          "column": 65
        },
        "end": {
          "line": 180,
          "column": 66
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Compute -e from e",
      "start": 4704,
      "end": 4724,
      "loc": {
        "start": {
          "line": 182,
          "column": 4
        },
        "end": {
          "line": 182,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4729,
      "end": 4732,
      "loc": {
        "start": {
          "line": 183,
          "column": 4
        },
        "end": {
          "line": 183,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "eNeg",
      "start": 4733,
      "end": 4737,
      "loc": {
        "start": {
          "line": 183,
          "column": 8
        },
        "end": {
          "line": 183,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4738,
      "end": 4739,
      "loc": {
        "start": {
          "line": 183,
          "column": 13
        },
        "end": {
          "line": 183,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 4740,
      "end": 4741,
      "loc": {
        "start": {
          "line": 183,
          "column": 15
        },
        "end": {
          "line": 183,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4741,
      "end": 4742,
      "loc": {
        "start": {
          "line": 183,
          "column": 16
        },
        "end": {
          "line": 183,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "negate",
      "start": 4742,
      "end": 4748,
      "loc": {
        "start": {
          "line": 183,
          "column": 17
        },
        "end": {
          "line": 183,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4748,
      "end": 4749,
      "loc": {
        "start": {
          "line": 183,
          "column": 23
        },
        "end": {
          "line": 183,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4749,
      "end": 4750,
      "loc": {
        "start": {
          "line": 183,
          "column": 24
        },
        "end": {
          "line": 183,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4750,
      "end": 4751,
      "loc": {
        "start": {
          "line": 183,
          "column": 25
        },
        "end": {
          "line": 183,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mod",
      "start": 4751,
      "end": 4754,
      "loc": {
        "start": {
          "line": 183,
          "column": 26
        },
        "end": {
          "line": 183,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4754,
      "end": 4755,
      "loc": {
        "start": {
          "line": 183,
          "column": 29
        },
        "end": {
          "line": 183,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4755,
      "end": 4756,
      "loc": {
        "start": {
          "line": 183,
          "column": 30
        },
        "end": {
          "line": 183,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4756,
      "end": 4757,
      "loc": {
        "start": {
          "line": 183,
          "column": 31
        },
        "end": {
          "line": 183,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4757,
      "end": 4758,
      "loc": {
        "start": {
          "line": 183,
          "column": 32
        },
        "end": {
          "line": 183,
          "column": 33
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.6.1 Compute Q = r^-1 (sR -  eG)",
      "start": 4764,
      "end": 4800,
      "loc": {
        "start": {
          "line": 185,
          "column": 4
        },
        "end": {
          "line": 185,
          "column": 40
        }
      }
    },
    {
      "type": "CommentLine",
      "value": "               Q = r^-1 (sR + -eG)",
      "start": 4805,
      "end": 4841,
      "loc": {
        "start": {
          "line": 186,
          "column": 4
        },
        "end": {
          "line": 186,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4846,
      "end": 4849,
      "loc": {
        "start": {
          "line": 187,
          "column": 4
        },
        "end": {
          "line": 187,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "rInv",
      "start": 4850,
      "end": 4854,
      "loc": {
        "start": {
          "line": 187,
          "column": 8
        },
        "end": {
          "line": 187,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4855,
      "end": 4856,
      "loc": {
        "start": {
          "line": 187,
          "column": 13
        },
        "end": {
          "line": 187,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "r",
      "start": 4857,
      "end": 4858,
      "loc": {
        "start": {
          "line": 187,
          "column": 15
        },
        "end": {
          "line": 187,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4858,
      "end": 4859,
      "loc": {
        "start": {
          "line": 187,
          "column": 16
        },
        "end": {
          "line": 187,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "modInverse",
      "start": 4859,
      "end": 4869,
      "loc": {
        "start": {
          "line": 187,
          "column": 17
        },
        "end": {
          "line": 187,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4869,
      "end": 4870,
      "loc": {
        "start": {
          "line": 187,
          "column": 27
        },
        "end": {
          "line": 187,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "n",
      "start": 4870,
      "end": 4871,
      "loc": {
        "start": {
          "line": 187,
          "column": 28
        },
        "end": {
          "line": 187,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4871,
      "end": 4872,
      "loc": {
        "start": {
          "line": 187,
          "column": 29
        },
        "end": {
          "line": 187,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4872,
      "end": 4873,
      "loc": {
        "start": {
          "line": 187,
          "column": 30
        },
        "end": {
          "line": 187,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 4879,
      "end": 4882,
      "loc": {
        "start": {
          "line": 189,
          "column": 4
        },
        "end": {
          "line": 189,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 4883,
      "end": 4884,
      "loc": {
        "start": {
          "line": 189,
          "column": 8
        },
        "end": {
          "line": 189,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4885,
      "end": 4886,
      "loc": {
        "start": {
          "line": 189,
          "column": 10
        },
        "end": {
          "line": 189,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "R",
      "start": 4887,
      "end": 4888,
      "loc": {
        "start": {
          "line": 189,
          "column": 12
        },
        "end": {
          "line": 189,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4888,
      "end": 4889,
      "loc": {
        "start": {
          "line": 189,
          "column": 13
        },
        "end": {
          "line": 189,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiplyTwo",
      "start": 4889,
      "end": 4900,
      "loc": {
        "start": {
          "line": 189,
          "column": 14
        },
        "end": {
          "line": 189,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4900,
      "end": 4901,
      "loc": {
        "start": {
          "line": 189,
          "column": 25
        },
        "end": {
          "line": 189,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "s",
      "start": 4901,
      "end": 4902,
      "loc": {
        "start": {
          "line": 189,
          "column": 26
        },
        "end": {
          "line": 189,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4902,
      "end": 4903,
      "loc": {
        "start": {
          "line": 189,
          "column": 27
        },
        "end": {
          "line": 189,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "G",
      "start": 4904,
      "end": 4905,
      "loc": {
        "start": {
          "line": 189,
          "column": 29
        },
        "end": {
          "line": 189,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4905,
      "end": 4906,
      "loc": {
        "start": {
          "line": 189,
          "column": 30
        },
        "end": {
          "line": 189,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "eNeg",
      "start": 4907,
      "end": 4911,
      "loc": {
        "start": {
          "line": 189,
          "column": 32
        },
        "end": {
          "line": 189,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4911,
      "end": 4912,
      "loc": {
        "start": {
          "line": 189,
          "column": 36
        },
        "end": {
          "line": 189,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4912,
      "end": 4913,
      "loc": {
        "start": {
          "line": 189,
          "column": 37
        },
        "end": {
          "line": 189,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "multiply",
      "start": 4913,
      "end": 4921,
      "loc": {
        "start": {
          "line": 189,
          "column": 38
        },
        "end": {
          "line": 189,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4921,
      "end": 4922,
      "loc": {
        "start": {
          "line": 189,
          "column": 46
        },
        "end": {
          "line": 189,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "rInv",
      "start": 4922,
      "end": 4926,
      "loc": {
        "start": {
          "line": 189,
          "column": 47
        },
        "end": {
          "line": 189,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4926,
      "end": 4927,
      "loc": {
        "start": {
          "line": 189,
          "column": 51
        },
        "end": {
          "line": 189,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4927,
      "end": 4928,
      "loc": {
        "start": {
          "line": 189,
          "column": 52
        },
        "end": {
          "line": 189,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 4933,
      "end": 4938,
      "loc": {
        "start": {
          "line": 190,
          "column": 4
        },
        "end": {
          "line": 190,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4938,
      "end": 4939,
      "loc": {
        "start": {
          "line": 190,
          "column": 9
        },
        "end": {
          "line": 190,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "validate",
      "start": 4939,
      "end": 4947,
      "loc": {
        "start": {
          "line": 190,
          "column": 10
        },
        "end": {
          "line": 190,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4947,
      "end": 4948,
      "loc": {
        "start": {
          "line": 190,
          "column": 18
        },
        "end": {
          "line": 190,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 4948,
      "end": 4949,
      "loc": {
        "start": {
          "line": 190,
          "column": 19
        },
        "end": {
          "line": 190,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4949,
      "end": 4950,
      "loc": {
        "start": {
          "line": 190,
          "column": 20
        },
        "end": {
          "line": 190,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4950,
      "end": 4951,
      "loc": {
        "start": {
          "line": 190,
          "column": 21
        },
        "end": {
          "line": 190,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 4957,
      "end": 4963,
      "loc": {
        "start": {
          "line": 192,
          "column": 4
        },
        "end": {
          "line": 192,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 4964,
      "end": 4965,
      "loc": {
        "start": {
          "line": 192,
          "column": 11
        },
        "end": {
          "line": 192,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4965,
      "end": 4966,
      "loc": {
        "start": {
          "line": 192,
          "column": 12
        },
        "end": {
          "line": 192,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4967,
      "end": 4968,
      "loc": {
        "start": {
          "line": 193,
          "column": 0
        },
        "end": {
          "line": 193,
          "column": 1
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n ",
      "start": 4970,
      "end": 5342,
      "loc": {
        "start": {
          "line": 195,
          "column": 0
        },
        "end": {
          "line": 205,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 5343,
      "end": 5351,
      "loc": {
        "start": {
          "line": 206,
          "column": 0
        },
        "end": {
          "line": 206,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "calcPubKeyRecoveryParam",
      "start": 5352,
      "end": 5375,
      "loc": {
        "start": {
          "line": 206,
          "column": 9
        },
        "end": {
          "line": 206,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5375,
      "end": 5376,
      "loc": {
        "start": {
          "line": 206,
          "column": 32
        },
        "end": {
          "line": 206,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 5376,
      "end": 5381,
      "loc": {
        "start": {
          "line": 206,
          "column": 33
        },
        "end": {
          "line": 206,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5381,
      "end": 5382,
      "loc": {
        "start": {
          "line": 206,
          "column": 38
        },
        "end": {
          "line": 206,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 5383,
      "end": 5384,
      "loc": {
        "start": {
          "line": 206,
          "column": 40
        },
        "end": {
          "line": 206,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5384,
      "end": 5385,
      "loc": {
        "start": {
          "line": 206,
          "column": 41
        },
        "end": {
          "line": 206,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 5386,
      "end": 5395,
      "loc": {
        "start": {
          "line": 206,
          "column": 43
        },
        "end": {
          "line": 206,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5395,
      "end": 5396,
      "loc": {
        "start": {
          "line": 206,
          "column": 52
        },
        "end": {
          "line": 206,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 5397,
      "end": 5398,
      "loc": {
        "start": {
          "line": 206,
          "column": 54
        },
        "end": {
          "line": 206,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5398,
      "end": 5399,
      "loc": {
        "start": {
          "line": 206,
          "column": 55
        },
        "end": {
          "line": 206,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5400,
      "end": 5401,
      "loc": {
        "start": {
          "line": 206,
          "column": 57
        },
        "end": {
          "line": 206,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "for",
        "keyword": "for",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": true,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "for",
      "start": 5406,
      "end": 5409,
      "loc": {
        "start": {
          "line": 207,
          "column": 4
        },
        "end": {
          "line": 207,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5410,
      "end": 5411,
      "loc": {
        "start": {
          "line": 207,
          "column": 8
        },
        "end": {
          "line": 207,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 5411,
      "end": 5414,
      "loc": {
        "start": {
          "line": 207,
          "column": 9
        },
        "end": {
          "line": 207,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 5415,
      "end": 5416,
      "loc": {
        "start": {
          "line": 207,
          "column": 13
        },
        "end": {
          "line": 207,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 5417,
      "end": 5418,
      "loc": {
        "start": {
          "line": 207,
          "column": 15
        },
        "end": {
          "line": 207,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 0,
      "start": 5419,
      "end": 5420,
      "loc": {
        "start": {
          "line": 207,
          "column": 17
        },
        "end": {
          "line": 207,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5420,
      "end": 5421,
      "loc": {
        "start": {
          "line": 207,
          "column": 18
        },
        "end": {
          "line": 207,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 5422,
      "end": 5423,
      "loc": {
        "start": {
          "line": 207,
          "column": 20
        },
        "end": {
          "line": 207,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "</>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "<",
      "start": 5424,
      "end": 5425,
      "loc": {
        "start": {
          "line": 207,
          "column": 22
        },
        "end": {
          "line": 207,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "num",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": 4,
      "start": 5426,
      "end": 5427,
      "loc": {
        "start": {
          "line": 207,
          "column": 24
        },
        "end": {
          "line": 207,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5427,
      "end": 5428,
      "loc": {
        "start": {
          "line": 207,
          "column": 25
        },
        "end": {
          "line": 207,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 5429,
      "end": 5430,
      "loc": {
        "start": {
          "line": 207,
          "column": 27
        },
        "end": {
          "line": 207,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "++/--",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": true,
        "binop": null
      },
      "value": "++",
      "start": 5430,
      "end": 5432,
      "loc": {
        "start": {
          "line": 207,
          "column": 28
        },
        "end": {
          "line": 207,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5432,
      "end": 5433,
      "loc": {
        "start": {
          "line": 207,
          "column": 30
        },
        "end": {
          "line": 207,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5434,
      "end": 5435,
      "loc": {
        "start": {
          "line": 207,
          "column": 32
        },
        "end": {
          "line": 207,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "var",
        "keyword": "var",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "var",
      "start": 5444,
      "end": 5447,
      "loc": {
        "start": {
          "line": 208,
          "column": 8
        },
        "end": {
          "line": 208,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Qprime",
      "start": 5448,
      "end": 5454,
      "loc": {
        "start": {
          "line": 208,
          "column": 12
        },
        "end": {
          "line": 208,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 5455,
      "end": 5456,
      "loc": {
        "start": {
          "line": 208,
          "column": 19
        },
        "end": {
          "line": 208,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "recoverPubKey",
      "start": 5457,
      "end": 5470,
      "loc": {
        "start": {
          "line": 208,
          "column": 21
        },
        "end": {
          "line": 208,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5470,
      "end": 5471,
      "loc": {
        "start": {
          "line": 208,
          "column": 34
        },
        "end": {
          "line": 208,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "curve",
      "start": 5471,
      "end": 5476,
      "loc": {
        "start": {
          "line": 208,
          "column": 35
        },
        "end": {
          "line": 208,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5476,
      "end": 5477,
      "loc": {
        "start": {
          "line": 208,
          "column": 40
        },
        "end": {
          "line": 208,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "e",
      "start": 5478,
      "end": 5479,
      "loc": {
        "start": {
          "line": 208,
          "column": 42
        },
        "end": {
          "line": 208,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5479,
      "end": 5480,
      "loc": {
        "start": {
          "line": 208,
          "column": 43
        },
        "end": {
          "line": 208,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "signature",
      "start": 5481,
      "end": 5490,
      "loc": {
        "start": {
          "line": 208,
          "column": 45
        },
        "end": {
          "line": 208,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5490,
      "end": 5491,
      "loc": {
        "start": {
          "line": 208,
          "column": 54
        },
        "end": {
          "line": 208,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 5492,
      "end": 5493,
      "loc": {
        "start": {
          "line": 208,
          "column": 56
        },
        "end": {
          "line": 208,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5493,
      "end": 5494,
      "loc": {
        "start": {
          "line": 208,
          "column": 57
        },
        "end": {
          "line": 208,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5494,
      "end": 5495,
      "loc": {
        "start": {
          "line": 208,
          "column": 58
        },
        "end": {
          "line": 208,
          "column": 59
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " 1.6.2 Verify Q",
      "start": 5505,
      "end": 5522,
      "loc": {
        "start": {
          "line": 210,
          "column": 8
        },
        "end": {
          "line": 210,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 5531,
      "end": 5533,
      "loc": {
        "start": {
          "line": 211,
          "column": 8
        },
        "end": {
          "line": 211,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5534,
      "end": 5535,
      "loc": {
        "start": {
          "line": 211,
          "column": 11
        },
        "end": {
          "line": 211,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Qprime",
      "start": 5535,
      "end": 5541,
      "loc": {
        "start": {
          "line": 211,
          "column": 12
        },
        "end": {
          "line": 211,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5541,
      "end": 5542,
      "loc": {
        "start": {
          "line": 211,
          "column": 18
        },
        "end": {
          "line": 211,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "equals",
      "start": 5542,
      "end": 5548,
      "loc": {
        "start": {
          "line": 211,
          "column": 19
        },
        "end": {
          "line": 211,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5548,
      "end": 5549,
      "loc": {
        "start": {
          "line": 211,
          "column": 25
        },
        "end": {
          "line": 211,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Q",
      "start": 5549,
      "end": 5550,
      "loc": {
        "start": {
          "line": 211,
          "column": 26
        },
        "end": {
          "line": 211,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5550,
      "end": 5551,
      "loc": {
        "start": {
          "line": 211,
          "column": 27
        },
        "end": {
          "line": 211,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5551,
      "end": 5552,
      "loc": {
        "start": {
          "line": 211,
          "column": 28
        },
        "end": {
          "line": 211,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5553,
      "end": 5554,
      "loc": {
        "start": {
          "line": 211,
          "column": 30
        },
        "end": {
          "line": 211,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 5567,
      "end": 5573,
      "loc": {
        "start": {
          "line": 212,
          "column": 12
        },
        "end": {
          "line": 212,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "i",
      "start": 5574,
      "end": 5575,
      "loc": {
        "start": {
          "line": 212,
          "column": 19
        },
        "end": {
          "line": 212,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5575,
      "end": 5576,
      "loc": {
        "start": {
          "line": 212,
          "column": 20
        },
        "end": {
          "line": 212,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5585,
      "end": 5586,
      "loc": {
        "start": {
          "line": 213,
          "column": 8
        },
        "end": {
          "line": 213,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5591,
      "end": 5592,
      "loc": {
        "start": {
          "line": 214,
          "column": 4
        },
        "end": {
          "line": 214,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "throw",
        "keyword": "throw",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "throw",
      "start": 5598,
      "end": 5603,
      "loc": {
        "start": {
          "line": 216,
          "column": 4
        },
        "end": {
          "line": 216,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "new",
        "keyword": "new",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "new",
      "start": 5604,
      "end": 5607,
      "loc": {
        "start": {
          "line": 216,
          "column": 10
        },
        "end": {
          "line": 216,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Error",
      "start": 5608,
      "end": 5613,
      "loc": {
        "start": {
          "line": 216,
          "column": 14
        },
        "end": {
          "line": 216,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5613,
      "end": 5614,
      "loc": {
        "start": {
          "line": 216,
          "column": 19
        },
        "end": {
          "line": 216,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "Unable to find valid recovery factor",
      "start": 5614,
      "end": 5652,
      "loc": {
        "start": {
          "line": 216,
          "column": 20
        },
        "end": {
          "line": 216,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5652,
      "end": 5653,
      "loc": {
        "start": {
          "line": 216,
          "column": 58
        },
        "end": {
          "line": 216,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5653,
      "end": 5654,
      "loc": {
        "start": {
          "line": 216,
          "column": 59
        },
        "end": {
          "line": 216,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5655,
      "end": 5656,
      "loc": {
        "start": {
          "line": 217,
          "column": 0
        },
        "end": {
          "line": 217,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 5658,
      "end": 5664,
      "loc": {
        "start": {
          "line": 219,
          "column": 0
        },
        "end": {
          "line": 219,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5665,
      "end": 5666,
      "loc": {
        "start": {
          "line": 219,
          "column": 7
        },
        "end": {
          "line": 219,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "calcPubKeyRecoveryParam",
      "start": 5671,
      "end": 5694,
      "loc": {
        "start": {
          "line": 220,
          "column": 4
        },
        "end": {
          "line": 220,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5694,
      "end": 5695,
      "loc": {
        "start": {
          "line": 220,
          "column": 27
        },
        "end": {
          "line": 220,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "deterministicGenerateK",
      "start": 5700,
      "end": 5722,
      "loc": {
        "start": {
          "line": 221,
          "column": 4
        },
        "end": {
          "line": 221,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5722,
      "end": 5723,
      "loc": {
        "start": {
          "line": 221,
          "column": 26
        },
        "end": {
          "line": 221,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "recoverPubKey",
      "start": 5728,
      "end": 5741,
      "loc": {
        "start": {
          "line": 222,
          "column": 4
        },
        "end": {
          "line": 222,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5741,
      "end": 5742,
      "loc": {
        "start": {
          "line": 222,
          "column": 17
        },
        "end": {
          "line": 222,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "sign",
      "start": 5747,
      "end": 5751,
      "loc": {
        "start": {
          "line": 223,
          "column": 4
        },
        "end": {
          "line": 223,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5751,
      "end": 5752,
      "loc": {
        "start": {
          "line": 223,
          "column": 8
        },
        "end": {
          "line": 223,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verify",
      "start": 5757,
      "end": 5763,
      "loc": {
        "start": {
          "line": 224,
          "column": 4
        },
        "end": {
          "line": 224,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5763,
      "end": 5764,
      "loc": {
        "start": {
          "line": 224,
          "column": 10
        },
        "end": {
          "line": 224,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "verifyRaw",
      "start": 5769,
      "end": 5778,
      "loc": {
        "start": {
          "line": 225,
          "column": 4
        },
        "end": {
          "line": 225,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5779,
      "end": 5780,
      "loc": {
        "start": {
          "line": 226,
          "column": 0
        },
        "end": {
          "line": 226,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5780,
      "end": 5781,
      "loc": {
        "start": {
          "line": 226,
          "column": 1
        },
        "end": {
          "line": 226,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5782,
      "end": 5782,
      "loc": {
        "start": {
          "line": 227,
          "column": 0
        },
        "end": {
          "line": 227,
          "column": 0
        }
      }
    }
  ]
}